मैं इसमें भी गोताखोरी कर रहा हूं और हालांकि मैं इस मामले पर अब तक संदर्भ ले रहा हूं, कुछ महत्वपूर्ण तथ्य हैं जो मैंने इकट्ठे किए हैं और उन बिंदुओं को साझा करना चाहते हैं:
एक विभाजन एक तार्किक डेटाबेस या उसके घटक तत्वों का एक विभाजन है जो अलग-अलग स्वतंत्र भागों में होता है। डेटाबेस विभाजन लोड संतुलन के लिए, आमतौर पर प्रबंधन, प्रदर्शन या उपलब्धता कारणों से किया जाता है।
https://en.wikipedia.org/wiki/Partition_(database)
साझाकरण एक प्रकार का विभाजन है, जैसे क्षैतिज विभाजन (HP)
इसमें वर्टिकल पार्टिशनिंग (VP) भी है जिससे आप एक टेबल को छोटे अलग हिस्सों में विभाजित करते हैं। सामान्यीकरण में तालिकाओं में स्तंभों के इस विभाजन को भी शामिल किया जाता है, लेकिन ऊर्ध्वाधर विभाजन उस से परे हो जाता है और पहले से ही सामान्य होने पर भी विभाजन कॉलम।
https://en.wikipedia.org/wiki/Shard_(database_architecture)
मुझे वास्तव में टोनी बेको का जवाब Quora पर पसंद है जहां वह आपको स्कीमा (कॉलम और पंक्तियों के बजाय) के संदर्भ में सोचने के लिए मजबूर करता है। उसने व्यक्त किया की...
" क्षैतिज विभाजन ", या पैनापन, स्कीमा की नकल कर रहा है और फिर एक शार्क कुंजी के आधार पर डेटा को विभाजित कर रहा है।
" ऊर्ध्वाधर विभाजन " में स्कीमा को विभाजित करना शामिल है (और डेटा सवारी के लिए साथ जाता है)।
https://www.quora.com/Whats-the-difference-between-sharding-DB-tables-and-partitioning-them
Oracle के डेटाबेस विभाजन गाइड में कुछ अच्छे आंकड़े हैं। मैंने लेख के कुछ अंश कॉपी किए हैं।
https://docs.oracle.com/cd/B28359_01/server.111/b32024/partition.htm
जब एक तालिका विभाजन के लिए
तालिका को विभाजित करने के लिए यहां कुछ सुझाव दिए गए हैं:
- 2 जीबी से अधिक के टेबल्स को हमेशा विभाजन के लिए उम्मीदवारों के रूप में माना जाना चाहिए।
- ऐतिहासिक डेटा युक्त तालिकाओं, जिसमें नए डेटा को नए विभाजन में जोड़ा जाता है। एक विशिष्ट उदाहरण एक ऐतिहासिक तालिका है जहां केवल चालू माह का डेटा अपडाउन योग्य है और अन्य 11 महीने केवल पढ़े जाते हैं।
- जब तालिका की सामग्री को विभिन्न प्रकार के भंडारण उपकरणों में वितरित करने की आवश्यकता होती है।
विभाजन की संभावना
विभाजन छँटाई सबसे सरल और विभाजन का उपयोग करके प्रदर्शन में सुधार करने के लिए सबसे पर्याप्त साधन है। विभाजन छंटाई अक्सर परिमाण के कई आदेशों द्वारा क्वेरी के प्रदर्शन में सुधार कर सकती है। उदाहरण के लिए, मान लें कि किसी एप्लिकेशन में ऑर्डर का ऐतिहासिक रिकॉर्ड वाला एक आदेश तालिका है, और यह तालिका सप्ताह द्वारा विभाजित की गई है। एक सप्ताह के लिए आदेशों का अनुरोध करने वाला एक प्रश्न केवल आदेश तालिका के एक ही विभाजन तक पहुंच जाएगा। यदि आदेश तालिका में 2 साल का ऐतिहासिक डेटा था, तो यह क्वेरी 104 विभाजन के बजाय एक विभाजन तक पहुंच जाएगी। यह क्वेरी संभावित रूप से विभाजन के कारण 100 गुना तेजी से निष्पादित हो सकती है।
विभाजन की रणनीतियाँ
आप उनके पाठ को पढ़ सकते हैं और उनकी छवियों की कल्पना कर सकते हैं जो सब कुछ बहुत अच्छी तरह से समझाते हैं।
और अंत में, यह समझना महत्वपूर्ण है कि डेटाबेस अत्यंत संसाधन गहन हैं:
- सी पी यू
- डिस्क
- आई / ओ
- स्मृति
कई डीबीए एक ही मशीन पर विभाजन करेंगे, जहां विभाजन सभी संसाधनों को साझा करेंगे लेकिन डेटा और / या इंडेक्स को विभाजित करके डिस्क और आई / ओ में सुधार प्रदान करते हैं।
हालांकि अन्य रणनीतियां "साझा कुछ भी नहीं" आर्किटेक्चर को नियोजित करेंगी जहां शार्प्स अलग और अलग कंप्यूटिंग यूनिट्स (नोड्स) पर निवास करेंगे, जिसमें 100% सीपीयू, डिस्क, आई / ओ और मेमोरी अपने आप में होगी। बशर्ते इसके फायदे और जटिलताएं हों।
https://en.wikipedia.org/wiki/Shared_nothing_architecture