SQLite डेटाबेस के लिए एक यथार्थवादी, वास्तविक दुनिया, अधिकतम आकार क्या है?


33

उपयुक्त उपयोगों के लिए इस लेख के अनुसार SQLite के लिए यह कहता है कि, जबकि SQLite 140 टेराबाइट्स तक सीमित है , एक क्लाइंट / सर्वर RDBMS बेहतर काम कर सकता है:

एक SQLite डेटाबेस आकार में 140 टेराबाइट्स (2 47 बाइट्स, 128 टिबिबाइट्स) तक सीमित है । और यहां तक ​​कि अगर यह बड़े डेटाबेस को संभाल सकता है, तो SQLite पूरे डेटाबेस को एक डिस्क फ़ाइल में संग्रहीत करता है और कई फाइल सिस्टम फाइलों के अधिकतम आकार को इससे कम कुछ तक सीमित करते हैं। इसलिए यदि आप इस परिमाण के डेटाबेस पर विचार कर रहे हैं, तो आप एक क्लाइंट / सर्वर डेटाबेस इंजन का उपयोग करने के बारे में अच्छी तरह से विचार करेंगे जो अपनी सामग्री को कई डिस्क फ़ाइलों और शायद कई संस्करणों में फैलाता है।

सामान्य तौर पर, मैं इससे सहमत हूं, लेकिन मुझे यह जानकर आश्चर्य हुआ कि SQLite की अधिकतम सीमा इतनी अधिक थी! अपने अनुभव में मैंने ~ 30-100GB के आकार में काफी कुछ SQL सर्वर डेटाबेस का उपयोग किया है। मैंने ओरेकल, पोस्टग्रेज या कैसेंड्रा का उपयोग करते हुए बहुत बड़े डेटाबेस के साथ अप्रत्यक्ष रूप से भी काम किया है। उनमें से, कम से कम मेरी जानकारी के लिए, कोई भी 140TB से संपर्क नहीं कर रहा था। मैं डीबीए नहीं हूं, इसलिए मैं अपने प्रत्यक्ष अनुभव से "बड़े" पर विचार करूंगा।

मैंने केवल उन स्थितियों के लिए SQLite पर विचार किया है जहां डेटाबेस छोटा होगा; अधिकांश पर मेगाबाइट के दर्जनों।

इस लेख को पढ़ने के बाद मैं अभी भी किसी भी चीज़ के लिए SQLite पर विचार करने के लिए आश्वस्त नहीं हूं जिसके लिए सैकड़ों गीगाबाइट की आवश्यकता हो सकती है। लेकिन मैं सोच रहा हूं कि क्या मैं इसकी क्षमताओं को कम आंक रहा हूं। वास्तविक दुनिया के उपयोग में SQLite डेटाबेस के लिए एक वास्तविक अधिकतम आकार सीमा क्या है?


3
मुझे लगता है कि हमें आमतौर पर समवर्ती कनेक्शन की संख्या पर विचार करना होगा क्योंकि बड़े डेटासेट अक्सर कई उपयोगकर्ताओं द्वारा खपत किए जाते हैं। आपके अपने सिस्टम पर यह परीक्षण करने का कोई तरीका नहीं है?
जेफ़ो

3
संग्रहीत लेन-देन के डेटाबेस की तरह कुछ के लिए जिसे कभी भी एक्सेस करने की आवश्यकता नहीं होती है, SQLite एक शानदार विकल्प हो सकता है, और एक समय में केवल एक उपयोगकर्ता होने जा रहा है (यदि कोई हो), और आपके पास संपूर्ण नहीं है DB सर्वर सेटअप इसका समर्थन करने के लिए। यदि आपके पास कई समवर्ती उपयोगकर्ता हैं, तो दूसरी ओर, आप कई-गिग डेटाबेस तक पहुंचने से पहले आसानी से लॉकिंग के साथ समस्याओं में भाग सकते हैं।
माइकल कोहेन


2
@Pacerier - हाँ, सॉफ़्टवेयर स्थापित करने के लिए। फिर आपको DB भूमिकाओं को असाइन करना है, यह पता लगाना है कि अपने बैकअप सिस्टम को कैसे एकीकृत किया जाए, सुनिश्चित करें कि बैकअप सिस्टम बैकअप के शुरू और अंत में DB सर्वर को उचित स्थिति में रखता है, आदि, आदि कहीं अधिक है। सॉफ्टवेयर स्थापित करने की तुलना में एक db सर्वर की स्थापना। इसके अलावा, यह एक और सेवा है जिसके बारे में आपको नेटवर्क सुरक्षा दृष्टिकोण से चिंता करनी होगी, और एक और चीज़ जो आपको पैचिंग के साथ रखनी है। यदि आप एक DB सेवा की जरूरत है, हर तरह से इसके लिए जाना है, लेकिन यह आप की जरूरत नहीं है, SQLite एक बहुत कम उपरि की एक बिल्ली है।
माइकल कोहेन

1
@ leeand00 - या आप एक महीने के लिए जगह किराए पर दे सकते हैं।
जेफ

जवाबों:


26

यथार्थवादी सीमा (कुछ Sqlite डेटाबेस के आकार की) डेटा फ़ाइल के लिए यथार्थवादी सीमा के समान है। और यह सीमा आपके कंप्यूटर और सिस्टम पर निर्भर करती है। मेरे वर्तमान लिनक्स डेस्कटॉप पर मैं 350Gbyte फ़ाइल की तुलना में बहुत बड़ा नहीं हो सकता (क्योंकि अंगूठे के नियम के रूप में मैं एक सिंगल फाइल को आधे से अधिक डिस्क विभाजन खाने से बचता हूं)। BTW, उस व्यावहारिक सीमा का असर अन्य SQL RDBMS जैसे PostGreSQL या MariaDB पर भी होता है (लेकिन इनमें से अधिकांश डेटा को कई फ़ाइलों में रख रहे हैं , जिन्हें आप अलग-अलग फ़ाइल सिस्टम पर रख सकते हैं, और उनमें से कुछ दूरस्थ मशीनों पर वितरित डेटा को प्रबंधित करने में सक्षम हैं।) ।)

इस लेख को पढ़ने के बाद मैं अभी भी किसी भी चीज़ के लिए SQLite पर विचार करने के लिए आश्वस्त नहीं हूं जिसके लिए सैकड़ों गीगाबाइट की आवश्यकता हो सकती है

आप सही और गलत हैं।

आप सही हैं, क्योंकि आज के कंप्यूटर (लैपटॉप और डेस्कटॉप पर, सुपर कंप्यूटर या डेटासेंटर सर्वर नहीं), सौ गीगाबाइट अभी भी एक बहुत बड़ी डिस्क स्थान है। तो व्यवहार में, यदि आप इतने बड़े डेटाबेस के बारे में सोचते हैं, तो आप विशेष रूप से एक वास्तविक SQL सर्वर (à la PostGreSQL) की बेहतर कल्पना करेंगे क्योंकि आप शायद बहुत ही सुदूर पहुँच, प्रभावी रूप से समवर्ती पहुँच और शायद वितरित डेटा और टेबल चाहते हैं।

आप कई सौ गीगाबाइट के डेटाबेस से निपटने के लिए बहुत संभवत: SQLite सक्षम (और कभी-कभी परीक्षण किए गए) गलत हैं (सिद्धांत रूप में, मैंने कभी कोशिश नहीं की) हैं, यह मानते हुए कि आपके पास इतनी बड़ी फ़ाइल (और शायद दो में से दो से निपटने में सक्षम एक फाइलसिस्टम है) उन्हें कम से कम)।

मैं निश्चित रूप से (कभी-कभी) कई दर्जनों गीगाबाइट के डेटाबेस के लिए SQLite पर विचार करता हूं (और मैंने एक बार इतनी बड़ी .sqliteफ़ाइल, 40Gbytes के IIRC की कोशिश की थी)। वर्तमान (गैर-सुपर कंप्यूटर) मशीनों पर, मैं SQLite डेटाबेस के कई सौ गीगाबाइट होने में संकोच करूंगा, सिर्फ इसलिए कि इस तरह की फ़ाइल आज के अभ्यास से काफी बड़ी है।

IIRC कुछ हार्डवेयर विक्रेता जो विशेष फाइलसिस्टम मशीनों को बेच रहे थे, उन्होंने मुझे एक टेराबाइट साइक्लाईट एप्लिकेशन के एक बार बोला था (लेकिन मैं गलत हो सकता है)।

बेशक SQLite प्रदर्शन (सभी SQL डेटाबेस की तरह) निर्भर करता है एक बहुत संख्या और टेबल, उनके अनुक्रमित, एसक्यूएल प्रश्नों शामिल की चौड़ाई की। और आप एक साथ (कई अलग-अलग प्रक्रियाओं द्वारा) पहुँच प्राप्त नहीं करना चाहते हैं, और आपको लेन-देन का उपयोग करना चाहिए (अनुभव से, यहां तक ​​कि कुछ मेगाबाइट के एक छोटे SQLITE डेटाबेस पर, आप वास्तव में अपने जैसे प्रविष्टि अनुरोधों के हज़ार को लपेटना चाहते हैं BEGIN TRANSACTION& END TRANSACTION, 10x-) की तुलना में एक बड़े कारक -मोर द्वारा स्केलाइट को धीमा करना।

और व्यक्तिगत अनुभव से, उपयुक्त कॉन्फ़िगरेशन और संगठन के साथ, SQLite उपलब्ध RAM से बड़ा डेटाबेस प्रबंधित करने में सक्षम है (इसलिए 30Gbytes कोई समस्या नहीं है) - लेकिन आप शायद चाहते हैं कि अनुक्रमणिका RAM में फिट हो!

यदि आप एक "सुपर कंप्यूटर" या एक महंगा वर्कस्टेशन के लिए कुछ कोड करने के लिए होते हैं (उदाहरण के लिए 512Gbytes RAM और डिस्क के 8Tbytes और SSD के 512Gbyte) तो आपके पास निश्चित रूप से टेराबाइट सकलाइट डेटाबेस हो सकता है। लेकिन आप ऐसा करना चाहते हैं कि शायद केवल एक (या बहुत कम) प्रक्रिया ही उस डेटाबेस तक पहुंच पा रही है। यदि आपके पास समान डेटाबेस तक पहुँचने की एक दर्जन प्रक्रियाएँ हैं, तो एक वास्तविक SQL RDBMS (A la MariaDB या PostGreSQL) को बेहतर तरीके से स्थापित करें

यह भी ध्यान दें कि .sqliteडेटाबेस फ़ाइलों के द्विआधारी (बाइनरी) प्रारूप को "पोर्टेबल" होने के रूप में प्रलेखित किया गया है, मैं SQL पाठ प्रारूप (उपयोग sqlite3 mydb.sqlite .dump > mydb.sql) में बैकअप डेटाबेस के लिए बहुत पसंद करता हूं । फिर, मुझे उस पाठ्य डंप के लिए कुछ अतिरिक्त डिस्क स्थान की भी आवश्यकता है (और यह यथार्थवादी सीमा को कम करता है)।

आमतौर पर Sqlite अड़चन नहीं है। लेकिन डिस्क हो सकती है।

पुनश्च। जीडीबीएम का उपयोग करके बड़ी अनुक्रमित फ़ाइलों पर एक ही तर्क लागू किया जा सकता है ।

पी पी एस। मेरे में expjs शाखा मेरी पिघल मॉनिटर के (sept.2016) (GPLv3 मुफ्त सॉफ्टवेयर, GitHub पर) मैं कर रहा हूँ बने एक ताजा SQLite डेटाबेस के अंदर JSON में पूरे आवेदन ढेर। मैंने कई लाखों ऑब्जेक्ट्स के साथ छोटे प्रयोग किए हैं (काफी "बड़े") बिना किसी आश्चर्य के। YMMV।


7
चौथे अनुच्छेद के बाद आप लिखना बंद कर सकते थे। लेकिन वैसे भी +1।
रॉबर्ट हार्वे

3
हो सकता है, लेकिन मुझे यह देखकर बहुत हैरानी हुई कि केवल कुछ मेगाबाइट्स के एक ताजा साइक्लाइट डेटाबेस पर भी व्यवहार में लेन-देन इतना महत्वपूर्ण है (केवल एक ही प्रक्रिया तक पहुँचने के साथ, वास्तव में, उस नई फ़ाइल को लिखना)।
बेसिल स्टारीनेवविच

3
यह लिखने के लिए निश्चित रूप से सच है। व्यवहार में, ओपी के आकार जैसे SQLite डेटाबेस की कल्पना करना कठिन है। Postgresql शायद एक बेहतर विकल्प होगा, न कि इसकी आकार क्षमताओं के लिए, बल्कि औद्योगिक-शक्ति संगति के लिए, जो SQLite के पास नहीं है।
रॉबर्ट हार्वे

5
वहाँ बहुत सारी कानूनी स्थितियाँ हैं जहाँ आप बड़े फ़ाइल आकारों के साथ SQLite डेटाबेस रख सकते हैं। खुद SQLite डेवलपर्स से: इसे MySql के प्रतिस्थापन के रूप में कम और फ़ोपेन के प्रतिस्थापन के रूप में अधिक समझें। वस्तुओं के बारे में डेटा स्टोर करने के लिए कुछ 3D कैड सॉफ्टवेयर और SQLite डेटाबेस का उपयोग करना पूरी तरह से उचित हो सकता है।
whatsisname

2
@ स्पेसर: फिल्में फाइलें और इसी तरह के बाइनरी ब्लब्स आमतौर पर डेटाबेस में संग्रहीत नहीं होते हैं। वे फ़ाइल सिस्टम में संग्रहीत हैं, और उनसे लिंक डेटाबेस में संग्रहीत हैं।
रॉबर्ट हार्वे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.