विभाजन (डेटाबेस): Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[File:Adminer04.png|thumb|[[व्यवस्थापक]] उपकरण के वातावरण में माई एसक्यूएल में टेबल पर विभाजन विकल्प।]]विभाजन तार्किक [[डेटाबेस]] या उसके घटक तत्वों का अलग-अलग स्वतंत्र भागों में विभाजन है। डेटाबेस विभाजन सामान्यतः प्रबंधनीयता, [[अनुकूलन (कंप्यूटर विज्ञान)]] या [[उपलब्धता]] के लिए किया जाता है<ref name=":0" /> कारण, या [[लोड संतुलन (कंप्यूटिंग)]] के लिए। यह वितरित डेटाबेस प्रबंधन प्रणालियों में लोकप्रिय है, जहां प्रत्येक विभाजन को कई नोड्स में फैलाया जा सकता है, नोड पर उपयोगकर्ता विभाजन पर स्थानीय लेनदेन करते हैं। यह उपलब्धता और सुरक्षा को बनाए रखते हुए उन साइटों के प्रदर्शन को बढ़ाता है जिनमें डेटा के कुछ दृश्यों को सम्मिलित करने वाले नियमित लेन-देन होते हैं। '''नोड पर उपयोगकर्ता विभाजन पर स्थानीय लेनदेन करते हैं। यह उपलब्धता और सुरक्षा को बनाए रखते हुए उन साइटों के प्रदर्शन को बढ़ाता है जिनमें डेटा के कुछ दृश्यों को सम्मिलित करने वाले नियमित लेन-देन होते हैं।''' | |||
[[File:Adminer04.png|thumb|[[व्यवस्थापक]] उपकरण के वातावरण में | |||
== विभाजन मानदंड == | == विभाजन मानदंड == | ||
वर्तमान हाई-एंड [[संबंधपरक डेटाबेस प्रबंधन प्रणाली]] डेटाबेस को विभाजित करने के लिए विभिन्न मानदंड प्रदान करते हैं। वे एक विभाजन कुंजी लेते हैं और कुछ मानदंडों के आधार पर | वर्तमान हाई-एंड [[संबंधपरक डेटाबेस प्रबंधन प्रणाली]] डेटाबेस को विभाजित करने के लिए विभिन्न मानदंड प्रदान करते हैं। वे एक विभाजन कुंजी लेते हैं और कुछ मानदंडों के आधार पर विभाजन आवंटित करते हैं। कुछ सामान्य मानदंडों में सम्मिलित हैं: | ||
* '''<nowiki/>'श्रेणी विभाजन'''': यह निर्धारित करके विभाजन का चयन करता है कि क्या विभाजन कुंजी | * '''<nowiki/>'श्रेणी विभाजन'''': यह निर्धारित करके विभाजन का चयन करता है कि क्या विभाजन कुंजी निश्चित सीमा के अन्दर है। एक उदाहरण सभी [[पंक्ति (डेटाबेस)]] के लिए विभाजन हो सकता है जहां ज़िपकोड कॉलम (डेटाबेस) का मान 70000 और 79999 के बीच है। यह कुछ विशेषता के मान अंतराल (श्रेणियों) के आधार पर टुपल्स वितरित करता है। सटीक-मिलान वाले प्रश्नों (हैशिंग के रूप में) का समर्थन करने के अतिरिक्त , यह श्रेणी प्रश्नों के लिए उपयुक्त है। उदाहरण के लिए, "A1 और A2 के बीच A" विधेय वाली क्वेरी को केवल टपल वाले नोड द्वारा संसाधित किया जा सकता है। | ||
* '''<nowiki/>'सूची विभाजन'''': एक विभाजन को मूल्यों की | * '''<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|शार्ड (डेटाबेस आर्किटेक्चर)}} | {{see also|शार्ड (डेटाबेस आर्किटेक्चर)}} | ||
विभाजन या तो अलग-अलग छोटे डेटाबेस (प्रत्येक अपनी [[तालिका (डेटाबेस)]], [[सूचकांक (डेटाबेस)]], और [[डेटाबेस लेनदेन]] [[डेटाबेस लॉग]] के साथ | विभाजन या तो अलग-अलग छोटे डेटाबेस (प्रत्येक अपनी [[तालिका (डेटाबेस)]], [[सूचकांक (डेटाबेस)]], और [[डेटाबेस लेनदेन]] [[डेटाबेस लॉग]] के साथ, या चयनित तत्वों को विभाजित करके किया जा सकता है, उदाहरण के लिए केवल तालिका। | ||
* क्षैतिज विभाजन में अलग-अलग पंक्तियों को अलग-अलग तालिकाओं में रखना सम्मिलित | * क्षैतिज विभाजन में अलग-अलग पंक्तियों को अलग-अलग तालिकाओं में रखना सम्मिलित है। उदाहरण के लिए, 50000 से कम के [[ज़िप कोड]] वाले ग्राहकों को ग्राहकपूर्व में संग्रहीत किया जाता है, जबकि 50000 से अधिक या उसके बराबर ज़िप कोड वाले ग्राहकों को ग्राहक पश्चिम में संग्रहीत किया जाता है। इसके बाद दो विभाजन तालिकाएं ग्राहक पूर्व और ग्राहक पश्चिम हैं, जबकि सभी ग्राहकों का पूरा दृश्य प्रदान करने के लिए उन दोनों पर [[संघ (एसक्यूएल)]] के साथ एक दृश्य (डेटाबेस) बनाया जा सकता है। | ||
* लंबवत विभाजन में कम स्तंभों वाली तालिकाएँ बनाना और शेष स्तंभों को संग्रहीत करने के लिए अतिरिक्त तालिकाओं का उपयोग करना सम्मिलित है।<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:48, 23 February 2023
विभाजन तार्किक डेटाबेस या उसके घटक तत्वों का अलग-अलग स्वतंत्र भागों में विभाजन है। डेटाबेस विभाजन सामान्यतः प्रबंधनीयता, अनुकूलन (कंप्यूटर विज्ञान) या उपलब्धता के लिए किया जाता है[1] कारण, या लोड संतुलन (कंप्यूटिंग) के लिए। यह वितरित डेटाबेस प्रबंधन प्रणालियों में लोकप्रिय है, जहां प्रत्येक विभाजन को कई नोड्स में फैलाया जा सकता है, नोड पर उपयोगकर्ता विभाजन पर स्थानीय लेनदेन करते हैं। यह उपलब्धता और सुरक्षा को बनाए रखते हुए उन साइटों के प्रदर्शन को बढ़ाता है जिनमें डेटा के कुछ दृश्यों को सम्मिलित करने वाले नियमित लेन-देन होते हैं। नोड पर उपयोगकर्ता विभाजन पर स्थानीय लेनदेन करते हैं। यह उपलब्धता और सुरक्षा को बनाए रखते हुए उन साइटों के प्रदर्शन को बढ़ाता है जिनमें डेटा के कुछ दृश्यों को सम्मिलित करने वाले नियमित लेन-देन होते हैं।
विभाजन मानदंड
वर्तमान हाई-एंड संबंधपरक डेटाबेस प्रबंधन प्रणाली डेटाबेस को विभाजित करने के लिए विभिन्न मानदंड प्रदान करते हैं। वे एक विभाजन कुंजी लेते हैं और कुछ मानदंडों के आधार पर विभाजन आवंटित करते हैं। कुछ सामान्य मानदंडों में सम्मिलित हैं:
- 'श्रेणी विभाजन': यह निर्धारित करके विभाजन का चयन करता है कि क्या विभाजन कुंजी निश्चित सीमा के अन्दर है। एक उदाहरण सभी पंक्ति (डेटाबेस) के लिए विभाजन हो सकता है जहां ज़िपकोड कॉलम (डेटाबेस) का मान 70000 और 79999 के बीच है। यह कुछ विशेषता के मान अंतराल (श्रेणियों) के आधार पर टुपल्स वितरित करता है। सटीक-मिलान वाले प्रश्नों (हैशिंग के रूप में) का समर्थन करने के अतिरिक्त , यह श्रेणी प्रश्नों के लिए उपयुक्त है। उदाहरण के लिए, "A1 और A2 के बीच A" विधेय वाली क्वेरी को केवल टपल वाले नोड द्वारा संसाधित किया जा सकता है।
- 'सूची विभाजन': एक विभाजन को मूल्यों की सूची सौंपी जाती है। यदि विभाजन कुंजी में इनमें से एक मान है, तो विभाजन चुना जाता है। उदाहरण के लिए, सभी पंक्तियाँ जहाँ कॉलम
देश
भी हैआइसलैंड
,नॉर्वे
,स्वीडन
,फिनलैंड
याडेनमार्क
नॉर्डिक देश के लिए एक विभाजन का निर्माण कर सकता है। - समग्र विभाजन: उपरोक्त विभाजन योजनाओं के कुछ संयोजनों के लिए अनुमति देता है, उदाहरण के लिए पहले एक श्रेणी विभाजन और फिर एक हैश विभाजन प्रयुक्त करना। सुसंगत हैशिंग को हैश और सूची विभाजन का सम्मिश्रण माना जा सकता है जहाँ हैश कुंजी स्थान को उस आकार तक कम कर देता है जिसे सूचीबद्ध किया जा सकता है।
- राउंड-रॉबिन विभाजन: सबसे सरल रणनीति, यह समान डेटा वितरण सुनिश्चित करती है। साथ
n
विभाजन, दi
वें टपल सम्मिलन क्रम में विभाजन को सौंपा गया है(i mod n)
. यह रणनीति समानांतर में किए जाने वाले संबंध में अनुक्रमिक पहुंच को सक्षम बनाती है। चुकी, एक विधेय के आधार पर, अलग-अलग टुपल्स तक सीधी पहुँच के लिए पूरे संबंध तक पहुँचने की आवश्यकता होती है। - हैश विभाजन: हैश फंक्शन को कुछ विशेषताओं पर प्रयुक्त करता है जो विभाजन संख्या उत्पन्न करता है। यह रणनीति चयन विशेषता पर सही-मिलान वाले प्रश्नों को ठीक एक नोड द्वारा संसाधित करने की अनुमति देती है और अन्य सभी प्रश्नों को समानांतर में सभी नोड्स द्वारा संसाधित करने की अनुमति देती है।
विभाजन के तरीके
विभाजन या तो अलग-अलग छोटे डेटाबेस (प्रत्येक अपनी तालिका (डेटाबेस), सूचकांक (डेटाबेस), और डेटाबेस लेनदेन डेटाबेस लॉग के साथ, या चयनित तत्वों को विभाजित करके किया जा सकता है, उदाहरण के लिए केवल तालिका।
- क्षैतिज विभाजन में अलग-अलग पंक्तियों को अलग-अलग तालिकाओं में रखना सम्मिलित है। उदाहरण के लिए, 50000 से कम के ज़िप कोड वाले ग्राहकों को ग्राहकपूर्व में संग्रहीत किया जाता है, जबकि 50000 से अधिक या उसके बराबर ज़िप कोड वाले ग्राहकों को ग्राहक पश्चिम में संग्रहीत किया जाता है। इसके बाद दो विभाजन तालिकाएं ग्राहक पूर्व और ग्राहक पश्चिम हैं, जबकि सभी ग्राहकों का पूरा दृश्य प्रदान करने के लिए उन दोनों पर संघ (एसक्यूएल) के साथ एक दृश्य (डेटाबेस) बनाया जा सकता है।
- लंबवत विभाजन में कम स्तंभों वाली तालिकाएँ बनाना और शेष स्तंभों को संग्रहीत करने के लिए अतिरिक्त तालिकाओं का उपयोग करना सम्मिलित है।[1] सामान्यतः , इस अभ्यास को डाटाबेस सामान्यीकरण के रूप में जाना जाता है। चूंकि, लंबवत विभाजन आगे बढ़ता है, और पहले से ही सामान्य होने पर भी विभाजन कॉलम। इस प्रकार के विभाजन को पंक्ति विभाजन भी कहा जाता है, क्योंकि पंक्तियाँ उनके स्तंभों द्वारा विभाजित हो जाती हैं, और स्पष्ट रूप से या निहित रूप से की जा सकती हैं। ऊर्ध्वाधर विभाजन का एहसास करने के लिए विशिष्ट भौतिक मशीनों का उपयोग किया जा सकता है: उदाहरण के लिए, अलग-अलग मशीन पर स्मृति की महत्वपूर्ण मात्रा को लेते हुए, कभी-कभी उपयोग किए जाने वाले या बहुत विस्तृत स्तंभों को संग्रहीत करना, ऊर्ध्वाधर विभाजन की एक विधि है। ऊर्ध्वाधर विभाजन का एक सामान्य रूप गतिशील डेटा से स्थैतिक डेटा को विभाजित करना है, क्योंकि पूर्व बाद की तुलना में तेजी से पहुंच सकता है, विशेष रूप से एक तालिका के लिए जहां गतिशील डेटा का उपयोग अधिकांशतः स्थिर के रूप में नहीं किया जाता है। दो नई बनाई गई तालिकाओं में एक दृश्य बनाने से मूल तालिका एक प्रदर्शन दंड के साथ पुनर्स्थापित हो जाती है, लेकिन अकेले स्थिर डेटा तक पहुँचने से उच्च प्रदर्शन दिखाई देगा। एक स्तंभकार डेटाबेस को एक डेटाबेस के रूप में माना जा सकता है जिसे तब तक लंबवत रूप से विभाजित किया गया है जब तक कि प्रत्येक स्तंभ अपनी तालिका में संग्रहीत नहीं हो जाता।
यह भी देखें
- ब्लॉक रेंज इंडेक्स
- कैप प्रमेय
- RAID में डेटा स्ट्रिपिंग
- शार्द (डेटाबेस आर्किटेक्चर)
संदर्भ
- ↑ 1.0 1.1 "Vertical Partitioning Algorithms for Database Design", by Shamkant Navathe, Stefano Ceri, Gio Wiederhold, and Jinglie Dou, Stanford University 1984