विभाजन (डेटाबेस): Difference between revisions

From Vigyanwiki
(Created page with "{{Refimprove|date=March 2014}} thumb|[[व्यवस्थापक उपकरण के वातावरण में MySQL में एक ट...")
 
No edit summary
Line 1: Line 1:
{{Refimprove|date=March 2014}}
{{Refimprove|date=March 2014}}
[[File:Adminer04.png|thumb|[[व्यवस्थापक]] उपकरण के वातावरण में MySQL में एक टेबल पर विभाजन विकल्प।]]एक विभाजन एक तार्किक [[डेटाबेस]] या उसके घटक तत्वों का अलग-अलग स्वतंत्र भागों में एक विभाजन है। डेटाबेस विभाजन आमतौर पर प्रबंधनीयता, [[अनुकूलन (कंप्यूटर विज्ञान)]] या [[उपलब्धता]] के लिए किया जाता है<ref name=":0" />कारण, या [[लोड संतुलन (कंप्यूटिंग)]] के लिए। यह वितरित डेटाबेस प्रबंधन प्रणालियों में लोकप्रिय है, जहां प्रत्येक विभाजन को कई नोड्स में फैलाया जा सकता है, नोड पर उपयोगकर्ता विभाजन पर स्थानीय लेनदेन करते हैं। यह उपलब्धता और सुरक्षा को बनाए रखते हुए उन साइटों के प्रदर्शन को बढ़ाता है जिनमें डेटा के कुछ दृश्यों को शामिल करने वाले नियमित लेन-देन होते हैं।
[[File:Adminer04.png|thumb|[[व्यवस्थापक]] उपकरण के वातावरण में MySQL में एक टेबल पर विभाजन विकल्प।]]एक विभाजन एक तार्किक [[डेटाबेस]] या उसके घटक तत्वों का अलग-अलग स्वतंत्र भागों में एक विभाजन है। डेटाबेस विभाजन सामान्यतः प्रबंधनीयता, [[अनुकूलन (कंप्यूटर विज्ञान)]] या [[उपलब्धता]] के लिए किया जाता है<ref name=":0" /> कारण, या [[लोड संतुलन (कंप्यूटिंग)]] के लिए। यह वितरित डेटाबेस प्रबंधन प्रणालियों में लोकप्रिय है, जहां प्रत्येक विभाजन को कई नोड्स में फैलाया जा सकता है, नोड पर उपयोगकर्ता विभाजन पर स्थानीय लेनदेन करते हैं। यह उपलब्धता और सुरक्षा को बनाए रखते हुए उन साइटों के प्रदर्शन को बढ़ाता है जिनमें डेटा के कुछ दृश्यों को सम्मिलित  करने वाले नियमित लेन-देन होते हैं।


== विभाजन मानदंड ==
== विभाजन मानदंड ==
वर्तमान हाई-एंड [[संबंधपरक डेटाबेस प्रबंधन प्रणाली]] डेटाबेस को विभाजित करने के लिए विभिन्न मानदंड प्रदान करते हैं। वे एक विभाजन कुंजी लेते हैं और कुछ मानदंडों के आधार पर एक विभाजन आवंटित करते हैं। कुछ सामान्य मानदंडों में शामिल हैं:
वर्तमान हाई-एंड [[संबंधपरक डेटाबेस प्रबंधन प्रणाली]] डेटाबेस को विभाजित करने के लिए विभिन्न मानदंड प्रदान करते हैं। वे एक विभाजन कुंजी लेते हैं और कुछ मानदंडों के आधार पर एक विभाजन आवंटित करते हैं। कुछ सामान्य मानदंडों में सम्मिलित  हैं:


* 'श्रेणी विभाजन': यह निर्धारित करके विभाजन का चयन करता है कि क्या विभाजन कुंजी एक निश्चित सीमा के भीतर है। एक उदाहरण सभी [[पंक्ति (डेटाबेस)]] के लिए एक विभाजन हो सकता है जहां ज़िपकोड कॉलम (डेटाबेस) का मान 70000 और 79999 के बीच है। यह कुछ विशेषता के मान अंतराल (श्रेणियों) के आधार पर टुपल्स वितरित करता है। सटीक-मिलान वाले प्रश्नों (हैशिंग के रूप में) का समर्थन करने के अलावा, यह श्रेणी प्रश्नों के लिए उपयुक्त है। उदाहरण के लिए, "A1 और A2 के बीच A" विधेय वाली क्वेरी को केवल टपल वाले नोड द्वारा संसाधित किया जा सकता है।
* '''<nowiki/>'श्रेणी विभाजन'''': यह निर्धारित करके विभाजन का चयन करता है कि क्या विभाजन कुंजी एक निश्चित सीमा के अन्दर है। एक उदाहरण सभी [[पंक्ति (डेटाबेस)]] के लिए एक विभाजन हो सकता है जहां ज़िपकोड कॉलम (डेटाबेस) का मान 70000 और 79999 के बीच है। यह कुछ विशेषता के मान अंतराल (श्रेणियों) के आधार पर टुपल्स वितरित करता है। सटीक-मिलान वाले प्रश्नों (हैशिंग के रूप में) का समर्थन करने के अतिरिक्त , यह श्रेणी प्रश्नों के लिए उपयुक्त है। उदाहरण के लिए, "A1 और A2 के बीच A" विधेय वाली क्वेरी को केवल टपल वाले नोड द्वारा संसाधित किया जा सकता है।
* 'सूची विभाजन': एक विभाजन को मूल्यों की एक सूची सौंपी जाती है। यदि विभाजन कुंजी में इनमें से एक मान है, तो विभाजन चुना जाता है। उदाहरण के लिए, सभी पंक्तियाँ जहाँ column <code>Country</code> भी है <code>Iceland</code>, <code>Norway</code>, <code>Sweden</code>, <code>Finland</code> या <code>Denmark</code> [[नॉर्डिक देश]]ों के लिए एक विभाजन का निर्माण कर सकता है।
* '''<nowiki/>'सूची विभाजन'''': एक विभाजन को मूल्यों की एक सूची सौंपी जाती है। यदि विभाजन कुंजी में इनमें से एक मान है, तो विभाजन चुना जाता है। उदाहरण के लिए, सभी पंक्तियाँ जहाँ कॉलम  <code>देश</code> भी है <code>आइसलैंड</code>, <code>नॉर्वे</code>, <code>स्वीडन</code>, <code>फिनलैंड</code> या <code>डेनमार्क</code> [[नॉर्डिक देश]]ों के लिए एक विभाजन का निर्माण कर सकता है।
* समग्र विभाजन: उपरोक्त विभाजन योजनाओं के कुछ संयोजनों के लिए अनुमति देता है, उदाहरण के लिए पहले एक श्रेणी विभाजन और फिर एक हैश विभाजन लागू करना। सुसंगत हैशिंग को हैश और सूची विभाजन का सम्मिश्रण माना जा सकता है जहाँ हैश कुंजी स्थान को उस आकार तक कम कर देता है जिसे सूचीबद्ध किया जा सकता है।
* '''समग्र विभाजन''': उपरोक्त विभाजन योजनाओं के कुछ संयोजनों के लिए अनुमति देता है, उदाहरण के लिए पहले एक श्रेणी विभाजन और फिर एक हैश विभाजन प्रयुक्त  करना। सुसंगत हैशिंग को हैश और सूची विभाजन का सम्मिश्रण माना जा सकता है जहाँ हैश कुंजी स्थान को उस आकार तक कम कर देता है जिसे सूचीबद्ध किया जा सकता है।
*राउंड-रॉबिन विभाजन: सबसे सरल रणनीति, यह समान डेटा वितरण सुनिश्चित करती है। साथ <code>n</code> विभाजन, द <code>i</code>वें टपल सम्मिलन क्रम में विभाजन को सौंपा गया है <code>(i mod n)</code>. यह रणनीति समानांतर में किए जाने वाले संबंध में अनुक्रमिक पहुंच को सक्षम बनाती है। हालाँकि, एक विधेय के आधार पर, अलग-अलग टुपल्स तक सीधी पहुँच के लिए पूरे संबंध तक पहुँचने की आवश्यकता होती है।
*'''राउंड-रॉबिन विभाजन''': सबसे सरल रणनीति, यह समान डेटा वितरण सुनिश्चित करती है। साथ <code>n</code> विभाजन, द <code>i</code>वें टपल सम्मिलन क्रम में विभाजन को सौंपा गया है <code>(i mod n)</code>. यह रणनीति समानांतर में किए जाने वाले संबंध में अनुक्रमिक पहुंच को सक्षम बनाती है। हालाँकि, एक विधेय के आधार पर, अलग-अलग टुपल्स तक सीधी पहुँच के लिए पूरे संबंध तक पहुँचने की आवश्यकता होती है।
* हैश विभाजन: एक [[हैश फंकशन]] को कुछ विशेषताओं पर लागू करता है जो विभाजन संख्या उत्पन्न करता है। यह रणनीति चयन विशेषता पर सटीक-मिलान वाले प्रश्नों को ठीक एक नोड द्वारा संसाधित करने की अनुमति देती है और अन्य सभी प्रश्नों को समानांतर में सभी नोड्स द्वारा संसाधित करने की अनुमति देती है।
* '''हैश विभाजन''': एक [[हैश फंकशन]] को कुछ विशेषताओं पर प्रयुक्त  करता है जो विभाजन संख्या उत्पन्न करता है। यह रणनीति चयन विशेषता पर सही-मिलान वाले प्रश्नों को ठीक एक नोड द्वारा संसाधित करने की अनुमति देती है और अन्य सभी प्रश्नों को समानांतर में सभी नोड्स द्वारा संसाधित करने की अनुमति देती है।


== विभाजन के तरीके ==
== विभाजन के तरीके ==
{{see also|Shard (database architecture)}}
{{see also|शार्ड (डेटाबेस आर्किटेक्चर)}}
विभाजन या तो अलग-अलग छोटे डेटाबेस (प्रत्येक अपनी [[तालिका (डेटाबेस)]], [[सूचकांक (डेटाबेस)]], और [[डेटाबेस लेनदेन]] [[डेटाबेस लॉग]] के साथ), या चयनित तत्वों को विभाजित करके किया जा सकता है, उदाहरण के लिए केवल एक तालिका।
विभाजन या तो अलग-अलग छोटे डेटाबेस (प्रत्येक अपनी [[तालिका (डेटाबेस)]], [[सूचकांक (डेटाबेस)]], और [[डेटाबेस लेनदेन]] [[डेटाबेस लॉग]] के साथ), या चयनित तत्वों को विभाजित करके किया जा सकता है, उदाहरण के लिए केवल एक तालिका।


* क्षैतिज विभाजन में अलग-अलग पंक्तियों को अलग-अलग तालिकाओं में रखना शामिल है। उदाहरण के लिए, 50000 से कम के [[ज़िप कोड]] वाले ग्राहकों को Customereast में संग्रहीत किया जाता है, जबकि 50000 से अधिक या उसके बराबर ज़िप कोड वाले ग्राहकों को CustomerWest में संग्रहीत किया जाता है। इसके बाद दो विभाजन तालिकाएं ग्राहक पूर्व और ग्राहक पश्चिम हैं, जबकि सभी ग्राहकों का पूरा दृश्य प्रदान करने के लिए उन दोनों पर एक [[संघ (एसक्यूएल)]] के साथ एक दृश्य (डेटाबेस) बनाया जा सकता है।
* क्षैतिज विभाजन में अलग-अलग पंक्तियों को अलग-अलग तालिकाओं में रखना सम्मिलित  है। उदाहरण के लिए, 50000 से कम के [[ज़िप कोड]] वाले ग्राहकों को Customereast में संग्रहीत किया जाता है, जबकि 50000 से अधिक या उसके बराबर ज़िप कोड वाले ग्राहकों को CustomerWest में संग्रहीत किया जाता है। इसके बाद दो विभाजन तालिकाएं ग्राहक पूर्व और ग्राहक पश्चिम हैं, जबकि सभी ग्राहकों का पूरा दृश्य प्रदान करने के लिए उन दोनों पर एक [[संघ (एसक्यूएल)]] के साथ एक दृश्य (डेटाबेस) बनाया जा सकता है।
* लंबवत विभाजन में कम स्तंभों वाली तालिकाएँ बनाना और शेष स्तंभों को संग्रहीत करने के लिए अतिरिक्त तालिकाओं का उपयोग करना शामिल है।<ref name=":0">[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.97.8306 "Vertical Partitioning Algorithms for Database Design"], by Shamkant Navathe, Stefano Ceri, Gio Wiederhold, and Jinglie Dou, Stanford University 1984</ref> आम तौर पर, इस अभ्यास को डाटाबेस सामान्यीकरण के रूप में जाना जाता है। हालांकि, लंबवत विभाजन आगे बढ़ता है, और पहले से ही सामान्य होने पर भी विभाजन कॉलम। इस प्रकार के विभाजन को पंक्ति विभाजन भी कहा जाता है, क्योंकि पंक्तियाँ उनके स्तंभों द्वारा विभाजित हो जाती हैं, और स्पष्ट रूप से या निहित रूप से की जा सकती हैं। ऊर्ध्वाधर विभाजन का एहसास करने के लिए विशिष्ट भौतिक मशीनों का उपयोग किया जा सकता है: उदाहरण के लिए, अलग-अलग मशीन पर स्मृति की एक महत्वपूर्ण मात्रा को लेते हुए, कभी-कभी उपयोग किए जाने वाले या बहुत विस्तृत स्तंभों को संग्रहीत करना, ऊर्ध्वाधर विभाजन की एक विधि है। ऊर्ध्वाधर विभाजन का एक सामान्य रूप गतिशील डेटा से स्थैतिक डेटा को विभाजित करना है, क्योंकि पूर्व बाद की तुलना में तेजी से पहुंच सकता है, विशेष रूप से एक तालिका के लिए जहां गतिशील डेटा का उपयोग अक्सर स्थिर के रूप में नहीं किया जाता है। दो नई बनाई गई तालिकाओं में एक दृश्य बनाने से मूल तालिका एक प्रदर्शन पेनल्टी के साथ पुनर्स्थापित हो जाती है, लेकिन अकेले स्थिर डेटा तक पहुँचने से उच्च प्रदर्शन दिखाई देगा। एक [[स्तंभकार डेटाबेस]] को एक डेटाबेस के रूप में माना जा सकता है जिसे तब तक लंबवत रूप से विभाजित किया गया है जब तक कि प्रत्येक स्तंभ अपनी तालिका में संग्रहीत नहीं हो जाता।
* लंबवत विभाजन में कम स्तंभों वाली तालिकाएँ बनाना और शेष स्तंभों को संग्रहीत करने के लिए अतिरिक्त तालिकाओं का उपयोग करना सम्मिलित  है।<ref name=":0">[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.97.8306 "Vertical Partitioning Algorithms for Database Design"], by Shamkant Navathe, Stefano Ceri, Gio Wiederhold, and Jinglie Dou, Stanford University 1984</ref> आम तौर पर, इस अभ्यास को डाटाबेस सामान्यीकरण के रूप में जाना जाता है। हालांकि, लंबवत विभाजन आगे बढ़ता है, और पहले से ही सामान्य होने पर भी विभाजन कॉलम। इस प्रकार के विभाजन को पंक्ति विभाजन भी कहा जाता है, क्योंकि पंक्तियाँ उनके स्तंभों द्वारा विभाजित हो जाती हैं, और स्पष्ट रूप से या निहित रूप से की जा सकती हैं। ऊर्ध्वाधर विभाजन का एहसास करने के लिए विशिष्ट भौतिक मशीनों का उपयोग किया जा सकता है: उदाहरण के लिए, अलग-अलग मशीन पर स्मृति की एक महत्वपूर्ण मात्रा को लेते हुए, कभी-कभी उपयोग किए जाने वाले या बहुत विस्तृत स्तंभों को संग्रहीत करना, ऊर्ध्वाधर विभाजन की एक विधि है। ऊर्ध्वाधर विभाजन का एक सामान्य रूप गतिशील डेटा से स्थैतिक डेटा को विभाजित करना है, क्योंकि पूर्व बाद की तुलना में तेजी से पहुंच सकता है, विशेष रूप से एक तालिका के लिए जहां गतिशील डेटा का उपयोग अक्सर स्थिर के रूप में नहीं किया जाता है। दो नई बनाई गई तालिकाओं में एक दृश्य बनाने से मूल तालिका एक प्रदर्शन पेनल्टी के साथ पुनर्स्थापित हो जाती है, लेकिन अकेले स्थिर डेटा तक पहुँचने से उच्च प्रदर्शन दिखाई देगा। एक [[स्तंभकार डेटाबेस]] को एक डेटाबेस के रूप में माना जा सकता है जिसे तब तक लंबवत रूप से विभाजित किया गया है जब तक कि प्रत्येक स्तंभ अपनी तालिका में संग्रहीत नहीं हो जाता।


== यह भी देखें ==
== यह भी देखें ==

Revision as of 11:35, 23 February 2023

व्यवस्थापक उपकरण के वातावरण में MySQL में एक टेबल पर विभाजन विकल्प।

एक विभाजन एक तार्किक डेटाबेस या उसके घटक तत्वों का अलग-अलग स्वतंत्र भागों में एक विभाजन है। डेटाबेस विभाजन सामान्यतः प्रबंधनीयता, अनुकूलन (कंप्यूटर विज्ञान) या उपलब्धता के लिए किया जाता है[1] कारण, या लोड संतुलन (कंप्यूटिंग) के लिए। यह वितरित डेटाबेस प्रबंधन प्रणालियों में लोकप्रिय है, जहां प्रत्येक विभाजन को कई नोड्स में फैलाया जा सकता है, नोड पर उपयोगकर्ता विभाजन पर स्थानीय लेनदेन करते हैं। यह उपलब्धता और सुरक्षा को बनाए रखते हुए उन साइटों के प्रदर्शन को बढ़ाता है जिनमें डेटा के कुछ दृश्यों को सम्मिलित करने वाले नियमित लेन-देन होते हैं।

विभाजन मानदंड

वर्तमान हाई-एंड संबंधपरक डेटाबेस प्रबंधन प्रणाली डेटाबेस को विभाजित करने के लिए विभिन्न मानदंड प्रदान करते हैं। वे एक विभाजन कुंजी लेते हैं और कुछ मानदंडों के आधार पर एक विभाजन आवंटित करते हैं। कुछ सामान्य मानदंडों में सम्मिलित हैं:

  • 'श्रेणी विभाजन': यह निर्धारित करके विभाजन का चयन करता है कि क्या विभाजन कुंजी एक निश्चित सीमा के अन्दर है। एक उदाहरण सभी पंक्ति (डेटाबेस) के लिए एक विभाजन हो सकता है जहां ज़िपकोड कॉलम (डेटाबेस) का मान 70000 और 79999 के बीच है। यह कुछ विशेषता के मान अंतराल (श्रेणियों) के आधार पर टुपल्स वितरित करता है। सटीक-मिलान वाले प्रश्नों (हैशिंग के रूप में) का समर्थन करने के अतिरिक्त , यह श्रेणी प्रश्नों के लिए उपयुक्त है। उदाहरण के लिए, "A1 और A2 के बीच A" विधेय वाली क्वेरी को केवल टपल वाले नोड द्वारा संसाधित किया जा सकता है।
  • 'सूची विभाजन': एक विभाजन को मूल्यों की एक सूची सौंपी जाती है। यदि विभाजन कुंजी में इनमें से एक मान है, तो विभाजन चुना जाता है। उदाहरण के लिए, सभी पंक्तियाँ जहाँ कॉलम देश भी है आइसलैंड, नॉर्वे, स्वीडन, फिनलैंड या डेनमार्क नॉर्डिक देशों के लिए एक विभाजन का निर्माण कर सकता है।
  • समग्र विभाजन: उपरोक्त विभाजन योजनाओं के कुछ संयोजनों के लिए अनुमति देता है, उदाहरण के लिए पहले एक श्रेणी विभाजन और फिर एक हैश विभाजन प्रयुक्त करना। सुसंगत हैशिंग को हैश और सूची विभाजन का सम्मिश्रण माना जा सकता है जहाँ हैश कुंजी स्थान को उस आकार तक कम कर देता है जिसे सूचीबद्ध किया जा सकता है।
  • राउंड-रॉबिन विभाजन: सबसे सरल रणनीति, यह समान डेटा वितरण सुनिश्चित करती है। साथ n विभाजन, द iवें टपल सम्मिलन क्रम में विभाजन को सौंपा गया है (i mod n). यह रणनीति समानांतर में किए जाने वाले संबंध में अनुक्रमिक पहुंच को सक्षम बनाती है। हालाँकि, एक विधेय के आधार पर, अलग-अलग टुपल्स तक सीधी पहुँच के लिए पूरे संबंध तक पहुँचने की आवश्यकता होती है।
  • हैश विभाजन: एक हैश फंकशन को कुछ विशेषताओं पर प्रयुक्त करता है जो विभाजन संख्या उत्पन्न करता है। यह रणनीति चयन विशेषता पर सही-मिलान वाले प्रश्नों को ठीक एक नोड द्वारा संसाधित करने की अनुमति देती है और अन्य सभी प्रश्नों को समानांतर में सभी नोड्स द्वारा संसाधित करने की अनुमति देती है।

विभाजन के तरीके

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

  • क्षैतिज विभाजन में अलग-अलग पंक्तियों को अलग-अलग तालिकाओं में रखना सम्मिलित है। उदाहरण के लिए, 50000 से कम के ज़िप कोड वाले ग्राहकों को Customereast में संग्रहीत किया जाता है, जबकि 50000 से अधिक या उसके बराबर ज़िप कोड वाले ग्राहकों को CustomerWest में संग्रहीत किया जाता है। इसके बाद दो विभाजन तालिकाएं ग्राहक पूर्व और ग्राहक पश्चिम हैं, जबकि सभी ग्राहकों का पूरा दृश्य प्रदान करने के लिए उन दोनों पर एक संघ (एसक्यूएल) के साथ एक दृश्य (डेटाबेस) बनाया जा सकता है।
  • लंबवत विभाजन में कम स्तंभों वाली तालिकाएँ बनाना और शेष स्तंभों को संग्रहीत करने के लिए अतिरिक्त तालिकाओं का उपयोग करना सम्मिलित है।[1] आम तौर पर, इस अभ्यास को डाटाबेस सामान्यीकरण के रूप में जाना जाता है। हालांकि, लंबवत विभाजन आगे बढ़ता है, और पहले से ही सामान्य होने पर भी विभाजन कॉलम। इस प्रकार के विभाजन को पंक्ति विभाजन भी कहा जाता है, क्योंकि पंक्तियाँ उनके स्तंभों द्वारा विभाजित हो जाती हैं, और स्पष्ट रूप से या निहित रूप से की जा सकती हैं। ऊर्ध्वाधर विभाजन का एहसास करने के लिए विशिष्ट भौतिक मशीनों का उपयोग किया जा सकता है: उदाहरण के लिए, अलग-अलग मशीन पर स्मृति की एक महत्वपूर्ण मात्रा को लेते हुए, कभी-कभी उपयोग किए जाने वाले या बहुत विस्तृत स्तंभों को संग्रहीत करना, ऊर्ध्वाधर विभाजन की एक विधि है। ऊर्ध्वाधर विभाजन का एक सामान्य रूप गतिशील डेटा से स्थैतिक डेटा को विभाजित करना है, क्योंकि पूर्व बाद की तुलना में तेजी से पहुंच सकता है, विशेष रूप से एक तालिका के लिए जहां गतिशील डेटा का उपयोग अक्सर स्थिर के रूप में नहीं किया जाता है। दो नई बनाई गई तालिकाओं में एक दृश्य बनाने से मूल तालिका एक प्रदर्शन पेनल्टी के साथ पुनर्स्थापित हो जाती है, लेकिन अकेले स्थिर डेटा तक पहुँचने से उच्च प्रदर्शन दिखाई देगा। एक स्तंभकार डेटाबेस को एक डेटाबेस के रूप में माना जा सकता है जिसे तब तक लंबवत रूप से विभाजित किया गया है जब तक कि प्रत्येक स्तंभ अपनी तालिका में संग्रहीत नहीं हो जाता।

यह भी देखें

संदर्भ

  1. 1.0 1.1 "Vertical Partitioning Algorithms for Database Design", by Shamkant Navathe, Stefano Ceri, Gio Wiederhold, and Jinglie Dou, Stanford University 1984