RDBM के क्लस्टर NoSQL के तरीके को क्यों नहीं कर सकते?


88

Nosql DBMS के लिए एक बड़ी बात यह है कि वे अधिक आसानी से क्लस्टर कर सकते हैं। NoSQL के साथ माना जाता है कि आप सैकड़ों सस्ती मशीनें बना सकते हैं जो डेटा के विभिन्न टुकड़ों को संग्रहीत करती हैं और एक ही बार में इसे क्वेरी करती हैं।

मेरा सवाल यह है कि, संबंधपरक DBMS mysql या sql सर्वर की तरह क्यों नहीं कर सकता? क्या यह है कि विक्रेताओं ने अपने मौजूदा उत्पाद के साथ ऐसा करने के लिए तकनीकी तरीका नहीं निकाला है, या क्या संबंधपरक मॉडल के साथ कुछ समस्या है जो इसे संभव होने से रोकती है? डेटा (कुंजी / मूल्य, दस्तावेज़, आदि) को संग्रहीत करने और एक्सेस करने के NoSQL तरीके के बारे में क्या बहुत अच्छा है जो क्लस्टरिंग को आसान बनाता है, अगर यह बिल्कुल सच है?


8
ओरेकल आरएसी जैसी चीज़ की तुलना में अलग-अलग मशीनों (अलग-अलग) डेटा के अलग-अलग बिट्स को स्टोर करना तकनीकी रूप से अविश्वसनीय रूप से आसान है, जो एक ही डेटाबेस में मौजूद 63 नोड्स तक चल सकता है, सभी एसीआईडी ​​कंप्लेंट आदि होते हैं, क्योंकि नोएसक्यूएल में "क्लस्टरिंग" आसान है क्योंकि कोई एसीआईडी ​​नहीं है, वे अपने स्वयं के मालिकाना एपीआई का उपयोग करते हैं और वे अपेक्षाकृत सरल हैं।
फिलो

6
+ आरएसी अभी भी एक साझा-डिस्क आर्किटेक्चर है। इसके लिए अभी भी एक केंद्रीय SAN स्विच की आवश्यकता है ताकि कोई भी DBMS नोड किसी भी स्टोरेज को देख सके। आप कई SAN नियंत्रकों को इसे M: M आर्किटेक्चर बना सकते हैं, हालाँकि। टेराडाटा एक साझा-वास्तुकला है, लेकिन यह डेटा वेयरहाउस अनुप्रयोगों के लिए अनुकूलित है और आप अभी भी सभी नोड्स में डेटाबेस (जैसे आयाम तालिकाओं) के कुछ हिस्सों को दोहरा सकते हैं। Netezza भी कम सहायक है। आपको एक विभाजन तालिका के अलग-अलग खंडों को अलग-अलग लोड करना होगा।
कंसर्नडऑफटुनब्रिजवेल्स

1
इसलिए मैंने नीचे दिए गए संबंधित उत्तर को (अधिकांश) पढ़ा और समझा है। ऐसा लगता है कि इस मुद्दे को ACID के साथ बहुत कुछ किया जा रहा है और यह संबंधपरक मॉडल के साथ है। क्या ऐसे समाधान हैं जो रिलेशनल मॉडल का उपयोग करते हैं, भले ही वे पूरी तरह से एसिड अनुपालन न हों, उसी तरह NoSQL है? ऐसा लगता है कि NoSQL को वास्तव में NoACID नाम दिया जाना चाहिए क्योंकि इसका sql या संबंधपरक मॉडल से कोई लेना-देना नहीं है, और सब कुछ स्थिरता, परमाणुता, डेटा पहुंच और भंडारण स्थानों, आदि के साथ करना है
22:13 पर fregas

6
@fregas - NoSQL की कोई औपचारिक परिभाषा नहीं है। यह सिर्फ विभिन्न डेटाबेस प्रबंधन प्रणालियों पर लागू एक चर्चा है। कोरम प्रतिकृति (AKA अंततः संगति) का उपयोग कई ऐसी प्रणालियों द्वारा किया जाता है (हालांकि कोई मतलब नहीं है) प्रदर्शन अनुकूलन के रूप में। मुझे आरडीबीएमएस उत्पाद के बारे में पता नहीं है जो कोरम प्रतिकृति का उपयोग करता है - निश्चित रूप से मुख्यधारा के कोई भी नहीं करते हैं। कोई सैद्धांतिक कारण नहीं है कि यह क्यों नहीं किया जा सकता है, लेकिन यह बल्कि जटिल होगा और स्केलेबिलिटी के स्तर को देखते हुए प्रश्नवाचक मूल्य दिया जाएगा जिसे साझा डिस्क सिस्टम द्वारा वैसे भी प्राप्त किया जा सकता है।
चिंतित

@ConcernedOfTunbridgeWells Quorum प्रतिकृति ACID के साथ असंगत है, हालांकि ऐसा क्यों नहीं किया गया है।
क्रिस ट्रैवर्स

जवाबों:


141

वितरित डेटाबेस सिस्टम 101

या, वितरित डेटाबेस - FK वास्तव में ' वेब स्केल ' का क्या अर्थ है?

वितरित डेटाबेस सिस्टम जटिल critters हैं और विभिन्न स्वादों की संख्या में आते हैं। अगर मैं विश्वविद्यालय में इस पर याद किए गए अध्ययनों के बारे में गहराई से याद किए गए अध्ययनों की गहराई में खुदाई करता हूं, तो मैं वितरित डेटाबेस प्रणाली के निर्माण के लिए कुछ महत्वपूर्ण इंजीनियरिंग समस्याओं की व्याख्या करने का प्रयास करूंगा।

पहला, कुछ शब्दावली

ACID (एटोमिसिटी, कंसिस्टेंसी, आइसोलेशन और ड्यूरेबिलिटी) गुण: ये प्रमुख आक्रमणकारी हैं जिन्हें अवांछनीय दुष्प्रभावों के कारण बिना किसी लेन-देन के मज़बूती से लागू करने के लिए लागू किया जाना है।

एटोमेसी के लिए जरूरी है कि ट्रांजेक्शन पूरी तरह से या रोलबैक हो। आंशिक रूप से समाप्त लेनदेन कभी भी दिखाई नहीं देना चाहिए, और सिस्टम को इस तरह से बनाया जाना चाहिए जो इसे होने से रोकता है।

संगति के लिए आवश्यक है कि लेन-देन कभी भी किसी ऐसे आक्रमणकारी (जैसे कि घोषणात्मक संदर्भ अखंडता) का उल्लंघन नहीं करना चाहिए जो डेटाबेस स्कीमा द्वारा गारंटीकृत हैं। उदाहरण के लिए, यदि कोई विदेशी कुंजी मौजूद है, तो गैर-मौजूद माता-पिता के प्रति श्रद्धा के साथ बच्चे का रिकॉर्ड डालना असंभव होना चाहिए।

अलगाव की आवश्यकता है कि लेनदेन को एक-दूसरे के साथ हस्तक्षेप नहीं करना चाहिए। यदि लेनदेन समानांतर या क्रमिक रूप से निष्पादित किया जाता है, तो सिस्टम को उन्हीं परिणामों की गारंटी देनी चाहिए। व्यवहार में अधिकांश आरडीबीएमएस उत्पाद उन तरीकों की अनुमति देते हैं जो प्रदर्शन के खिलाफ अलगाव को बंद करते हैं।

स्थायित्व के लिए आवश्यक है कि एक बार प्रतिबद्ध होने के बाद, लेन-देन लगातार भंडारण में बना रहे जो हार्डवेयर या सॉफ्टवेयर विफलता के लिए मजबूत हो।

मैं नीचे वितरित सिस्टम पर मौजूद इन आवश्यकताओं में से कुछ तकनीकी बाधाओं की व्याख्या करूँगा।

शेयर्ड डिस्क आर्किटेक्चर: एक आर्किटेक्चर जिसमें क्लस्टर में सभी प्रोसेसिंग नोड्स में सभी स्टोरेज तक पहुंच होती है। यह डेटा एक्सेस के लिए एक केंद्रीय अड़चन पेश कर सकता है। साझा-डिस्क सिस्टम का एक उदाहरण ओरेकल आरएसी या एक्सडाटा है

साझा कुछ भी नहीं आर्किटेक्चर: एक आर्किटेक्चर जिसमें क्लस्टर में प्रोसेसिंग नोड्स में स्थानीय भंडारण होता है जो अन्य क्लस्टर नोड्स को दिखाई नहीं देता है। शेयर्ड-नथिंग सिस्टम के उदाहरण हैं टेराडाटा और नेट्ज़्ज़ा

साझा मेमोरी आर्किटेक्चर: एक आर्किटेक्चर जिसमें कई सीपीयू (या नोड्स) मेमोरी के साझा पूल तक पहुंच सकते हैं। अधिकांश आधुनिक सर्वर एक साझा मेमोरी प्रकार के होते हैं। साझा की गई मेमोरी कुछ निश्चित ऑपरेशन जैसे कि कैश या एटॉमिक सिंक्रोनाइजेशन प्राइमेटिविटी की सुविधा देती है जो वितरित सिस्टम पर करना बहुत कठिन है।

सिंक्रनाइज़ेशन: कई प्रक्रियाओं या थ्रेड्स द्वारा किसी साझा संसाधन तक लगातार पहुंच सुनिश्चित करने के लिए विभिन्न तरीकों का वर्णन करने वाला एक सामान्य शब्द। यह साझा मेमोरी सिस्टम की तुलना में वितरित सिस्टम पर करना बहुत कठिन है, हालांकि कुछ नेटवर्क आर्किटेक्चर (जैसे Teradata के BYNET) में नेटवर्क प्रोटोकॉल में सिंक्रोनाइज़ेशन प्राइमिटिव थे। सिंक्रनाइज़ेशन ओवरहेड की एक महत्वपूर्ण मात्रा के साथ भी आ सकता है।

अर्ध-जुड़ें: वितरित प्रणाली के दो अलग-अलग नोड्स में रखे गए डेटा को मिलाने में प्रयुक्त एक आदिम। अनिवार्य रूप से इसमें शामिल होने के लिए पंक्तियों के बारे में पर्याप्त जानकारी होती है, ताकि जोड़ को हल करने के लिए एक नोड से दूसरे में बंडल किया जा सके। एक बड़ी क्वेरी पर यह महत्वपूर्ण नेटवर्क ट्रैफ़िक को शामिल कर सकता है।

अंतिम संगति: एक शब्द लेनदेन शब्दार्थ का वर्णन करता है जो प्रदर्शन के लिए एक वितरित प्रणाली (और इसलिए उच्च लेनदेन थ्रूपुट) के सभी नोड्स पर तत्काल अद्यतन (रीड ऑन पर संगति) को व्यापार करता है। अंतिम संगति,वितरण डेटाबेस को वितरित करने के लिए प्रदर्शन अनुकूलन के रूप में कोरम प्रतिकृति का उपयोग करने का एक पक्ष प्रभावहै जो वितरित डेटाबेस में होता है जहां डेटा की कई प्रतियां अलग-अलग नोड्स पर होती हैं।

लामपोर्ट का एल्गोरिदम: साझा किए गए मेमोरी के साथ सिस्टमों में पारस्परिक बहिष्करण (सिंक्रनाइज़ेशन) को लागू करने के लिए एक एल्गोरिथ्म। आम तौर पर एक सिस्टम के भीतर आपसी बहिष्कार के लिए एक परमाणु रीड-तुलना-लेखन या एक प्रकार का समान निर्देश आमतौर पर केवल एक साझा मेमोरी सिस्टम पर व्यावहारिक होना आवश्यक है। अन्य वितरित सिंक्रनाइज़ेशन एल्गोरिदम मौजूद हैं, लेकिन लामपोर्ट पहले में से एक था और सबसे अच्छा ज्ञात है। अधिकांश वितरित सिंक्रोनाइज़ेशन तंत्रों की तरह, लैम्पपोर्ट का एल्गोरिथ्म सटीक समय और घड़ी सिंक्रोनाइज़ेशन बेटीन क्लस्टर नोड्स पर बहुत अधिक निर्भर है।

टू फेज़ कमिट (2PC): प्रोटोकॉल का एक परिवार जो यह सुनिश्चित करता है कि कई भौतिक प्रणालियों को शामिल करने वाला डेटाबेस अपडेट लगातार कमिट करता है या वापस रोल करता है। चाहे 2PC का उपयोग किसी सिस्टम के भीतर या किसी ट्रांजेक्शन मैनेजर के माध्यम से कई प्रणालियों में किया जाता है, यह एक महत्वपूर्ण ओवरहेड वहन करता है।

दो-चरण प्रतिबद्ध प्रोटोकॉल में लेनदेन प्रबंधक भाग लेने वाले नोड्स को इस तरह से लेनदेन को जारी रखने के लिए कहता है, ताकि वे गारंटी दे सकें कि यह प्रतिबद्ध होगा, फिर इस स्थिति का संकेत दें। जब सभी नोड्स ने 'खुश' स्थिति लौटा दी है तो यह नोड्स को प्रतिबद्ध होने का संकेत देता है। लेनदेन तब भी खुला माना जाता है जब तक कि सभी नोड्स एक उत्तर नहीं भेजते हैं जो यह संकेत देता है कि कमिट पूरा हो गया है। यदि कोई सिग्नल कमिट करने से पहले एक नोड नीचे जाता है, तो ट्रांजेक्शन मैनेजर नोड को फिर से क्वेरी करेगा, जब तक कि यह वापस नहीं आता है जब तक कि यह एक सकारात्मक जवाब नहीं मिलता है जब तक कि लेनदेन प्रतिबद्ध नहीं है।

मल्टी-वर्जन कंसीलर कंट्रोल (MVCC): किसी नए स्थान पर डेटा के नए संस्करणों को लिखकर और अन्य लेनदेन को डेटा के पुराने संस्करण को देखने के लिए नए संस्करण के प्रतिबद्ध होने तक देखने की अनुमति देता है। यह नए संस्करण को लिखने के लिए कुछ अतिरिक्त लेखन ट्रैफ़िक की कीमत पर डेटाबेस विवाद को कम करता है और फिर पुराने संस्करण को अप्रचलित के रूप में चिह्नित करता है।

चुनाव एल्गोरिथ्म: कई नोड्स वाले डिस्ट्रीब्यूटेड सिस्टम एकल सिस्टम की तुलना में स्वाभाविक रूप से कम विश्वसनीय होते हैं क्योंकि अधिक विफलता मोड होते हैं। कई मामलों में नोड की विफलता से निपटने के लिए संकुल प्रणाली के लिए कुछ तंत्र की आवश्यकता होती है। चुनाव एल्गोरिदम एल्गोरिदम का एक वर्ग है जिसका उपयोग किसी नेता को उन स्थितियों में वितरित गणना को समन्वित करने के लिए किया जाता है जहां 'नेता' नोड 100% निर्धारित या विश्वसनीय नहीं है।

क्षैतिज विभाजन: एक मेज को उसकी कुंजी द्वारा कई नोड्स या स्टोरेज वॉल्यूम में विभाजित किया जा सकता है। यह एक बड़े डेटा वॉल्यूम को छोटे चंक्स में विभाजित करने और स्टोरेज नोड्स में वितरित करने की अनुमति देता है।

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

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

मल्टी-मास्टर प्रतिकृति: एक तकनीक जो एक क्लस्टर में कई नोड्स को दूसरे नोड्स को दोहराने की अनुमति देती है। यह तकनीक कुछ तालिकाओं को विभाजन और सर्वर पर शार्प करने की अनुमति देकर और अन्य को क्लस्टर में सिंक्रोनाइज़ करके स्केलिंग की सुविधा प्रदान करती है। कोरम के विपरीत सभी नोड्स के लिए राइट्स को दोहराया जाना चाहिए, इसलिए कोरम प्रतिकृति प्रणाली की तुलना में मल्टी-मास्टर प्रतिकृति आर्किटेक्चर पर लेनदेन कमिट करना अधिक महंगा है।

नॉन-ब्लॉकिंग स्विच: एक नेटवर्क स्विच जो आंतरिक हार्डवेयर समानता का उपयोग करता है ताकि थ्रूपुट को प्राप्त किया जा सके, जो बिना आंतरिक अड़चनों के साथ बंदरगाहों की संख्या के लिए आनुपातिक है। एक भोली कार्यान्वयन एक क्रॉसबार तंत्र का उपयोग कर सकता है, लेकिन इसमें N (N ^ 2) की जटिलता एन पोर्ट के लिए है, जो इसे छोटे स्विच तक सीमित करता है। बड़े स्विच अधिक जटिल आंतरिक टोपोलॉजी का उपयोग कर सकते हैं, जिसे ओ (एन ^ 2) हार्डवेयर की आवश्यकता के बिना रैखिक थ्रूपुट स्केलिंग प्राप्त करने के लिए एक गैर-अवरुद्ध न्यूनतम फैले स्विच कहा जाता है।

वितरित DBMS बनाना - कितना कठिन हो सकता है?

कई तकनीकी चुनौतियां व्यवहार में ऐसा करना काफी कठिन बनाती हैं। एक वितरित प्रणाली के निर्माण की अतिरिक्त जटिलता के अलावा, एक वितरित DBMS के वास्तुकार को कुछ मुश्किल इंजीनियरिंग समस्याओं को दूर करना होगा।

वितरित सिस्टम पर एटमॉसिटी: यदि लेनदेन द्वारा अपडेट किया गया डेटा कई नोड्स में फैला हुआ है, तो नोड्स के कमिट / रोलबैक को समन्वित किया जाना चाहिए। यह साझा-कुछ नहीं सिस्टम पर एक महत्वपूर्ण ओवरहेड जोड़ता है। साझा-डिस्क सिस्टम पर यह एक समस्या से कम है क्योंकि भंडारण के सभी नोड्स द्वारा देखे जा सकते हैं इसलिए एकल नोड कमिट को समन्वित कर सकता है।

वितरित प्रणालियों पर संगति: सिस्टम के ऊपर उद्धृत विदेशी प्रमुख उदाहरण लेने के लिए एक सुसंगत स्थिति का मूल्यांकन करने में सक्षम होना चाहिए। उदाहरण के लिए, यदि एक विदेशी कुंजी संबंध के माता-पिता और बच्चे अलग-अलग नोड्स पर निवास कर सकते हैं, तो यह सुनिश्चित करने के लिए कि लेनदेन को मान्य करने के लिए पुरानी जानकारी का उपयोग नहीं करने के लिए कुछ प्रकार के वितरित लॉकिंग तंत्र की आवश्यकता है। यदि इसे लागू नहीं किया गया है तो आप एक उदाहरण के लिए दौड़ की स्थिति (उदाहरण के लिए) कर सकते हैं, जहां माता-पिता को हटा दिया जाता है, जब बच्चे को सम्मिलित करने की अनुमति देने से पहले उसकी उपस्थिति सत्यापित की जाती है।

बाधाओं के विलंबित प्रवर्तन (अर्थात DRI को मान्य करने के लिए प्रतिबद्ध होने तक प्रतीक्षा) को लेनदेन की अवधि के लिए लॉक की आवश्यकता होती है। इस तरह का वितरित लॉकिंग एक महत्वपूर्ण ओवरहेड के साथ आता है।

यदि डेटा की कई प्रतियां आयोजित की जाती हैं (यह अर्ध-जोड़ों से अनावश्यक नेटवर्क ट्रैफ़िक से बचने के लिए साझा-कुछ सिस्टम पर आवश्यक हो सकता है) तो डेटा की सभी प्रतियां अपडेट होनी चाहिए।

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

वितरित सिस्टम पर स्थायित्व: एक साझा डिस्क सिस्टम पर स्थायित्व मुद्दा अनिवार्य रूप से एक साझा-मेमोरी सिस्टम के समान है, इस अपवाद के साथ कि सिंक्रनाइज़ेशन प्रोटोकॉल वितरित किए गए अभी भी नोड्स में आवश्यक हैं। DBMS को लॉग को जर्नल लिखना चाहिए और डेटा को लगातार लिखना चाहिए। साझा-कुछ नहीं प्रणाली पर विभिन्न नोड्स पर संग्रहीत डेटा या डेटा के कुछ हिस्सों की कई प्रतियां हो सकती हैं। यह सुनिश्चित करने के लिए कि नोड्स के पार सही ढंग से होता है, एक दो-चरण प्रतिबद्ध प्रोटोकॉल की आवश्यकता है। यह भी महत्वपूर्ण ओवरहेड को उकसाता है।

साझा-कुछ नहीं प्रणाली पर नोड के नुकसान का मतलब सिस्टम में डेटा उपलब्ध नहीं है। इस डेटा को कम करने के लिए एक से अधिक नोड में दोहराया जा सकता है। इस स्थिति में संगति का अर्थ है कि डेटा को उन सभी नोड्स में दोहराया जाना चाहिए जहां यह सामान्य रूप से रहता है। यह लिखने पर पर्याप्त ओवरहेड को उकसा सकता है।

NoSQL सिस्टम में किए गए एक सामान्य अनुकूलन कोरम प्रतिकृति का उपयोग होता है और अंतिम रूप से लेन-देन की रिपोर्ट करने से पहले एक कोरम को लिखकर डेटा के एक निश्चित स्तर की गारंटी देते हुए डेटा को आलसी प्रतिकृति बनाने की अनुमति देता है। इसके बाद डेटा को अन्य नोड्स में lazily दोहराया जाता है जहां डेटा की प्रतियां रहती हैं।

ध्यान दें कि 'अंतिम स्थिरता' स्थिरता पर एक प्रमुख व्यापार-बंद है जो स्वीकार्य नहीं हो सकता है यदि लेनदेन के प्रतिबद्ध होते ही डेटा को लगातार देखा जाना चाहिए। उदाहरण के लिए, वित्तीय आवेदन पर एक अद्यतन शेष राशि तुरंत उपलब्ध होनी चाहिए।

साझा-डिस्क सिस्टम

एक साझा-डिस्क सिस्टम वह है जहां सभी नोड्स में सभी भंडारण तक पहुंच होती है। इस प्रकार, गणना स्थान से स्वतंत्र है। इस मोड में कई डीबीएमएस प्लेटफॉर्म भी काम कर सकते हैं - ओरेकल आरएसी ऐसी वास्तुकला का एक उदाहरण है।

साझा डिस्क सिस्टम काफी हद तक स्केल कर सकते हैं क्योंकि वे स्टोरेज नोड्स और प्रोसेसिंग नोड्स के बीच M: M संबंध का समर्थन कर सकते हैं। एक SAN में कई कंट्रोलर हो सकते हैं और कई सर्वर डेटाबेस चला सकते हैं। इन आर्किटेक्चर के पास केंद्रीय अड़चन के रूप में एक स्विच है लेकिन क्रॉसबार स्विच इस स्विच को बहुत अधिक बैंडविड्थ की अनुमति देते हैं। कुछ प्रोसेसिंग को स्टोरेज नोड्स पर लोड किया जा सकता है (जैसा कि ओरेकल के एक्सडाटा के मामले में है) जो स्टोरेज बैंडविड्थ पर ट्रैफ़िक को कम कर सकता है।

यद्यपि स्विच सैद्धांतिक रूप से एक अड़चन है उपलब्ध बैंडविड्थ का मतलब है कि साझा-डिस्क आर्किटेक्चर बड़े लेनदेन संस्करणों के लिए काफी प्रभावी ढंग से मापेंगे। अधिकांश मुख्यधारा के डीबीएमएस आर्किटेक्चर इस दृष्टिकोण को अपनाते हैं क्योंकि यह 'अच्छा पर्याप्त' स्केलेबिलिटी और उच्च विश्वसनीयता प्राप्त करता है। एक अतिरेक भंडारण आर्किटेक्चर जैसे कि फाइबर चैनल में विफलता का एक भी बिंदु नहीं है क्योंकि किसी भी प्रसंस्करण नोड और किसी भी भंडारण नोड के बीच कम से कम दो रास्ते हैं।

साझा-कुछ भी नहीं सिस्टम

शेयर्ड-नथिंग सिस्टम ऐसी प्रणाली है जहाँ कम से कम कुछ डेटा स्थानीय स्तर पर एक नोड के लिए आयोजित किया जाता है और अन्य नोड्स के लिए प्रत्यक्ष रूप से दिखाई नहीं देता है। यह एक केंद्रीय स्विच की अड़चन को हटाता है, जिससे डेटाबेस को नोड्स की संख्या के साथ स्केल (कम से कम सिद्धांत में) करने की अनुमति मिलती है। क्षैतिज विभाजन डेटा को नोड्स में विभाजित करने की अनुमति देता है; यह क्लाइंट के लिए पारदर्शी हो सकता है या नहीं (ऊपर शेयरिंग देखें)।

क्योंकि डेटा को स्वाभाविक रूप से वितरित किया जाता है एक क्वेरी को एक से अधिक नोड से डेटा की आवश्यकता हो सकती है। यदि किसी जुड़ने के लिए अलग-अलग नोड्स से डेटा की आवश्यकता होती है, तो एक नोड से दूसरे में शामिल होने के लिए पर्याप्त डेटा स्थानांतरित करने के लिए एक सेमी-ज्वाइन ऑपरेशन का उपयोग किया जाता है। इसके परिणामस्वरूप बड़ी मात्रा में नेटवर्क ट्रैफ़िक हो सकता है, इसलिए डेटा के वितरण का अनुकूलन क्वेरी प्रदर्शन के लिए एक बड़ा अंतर बना सकता है।

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

साझा-कुछ भी नहीं की वास्तुकला का अंतर्निहित समानता उन्हें डेटा वेयरहाउस की तालिका-स्कैन / कुल प्रश्नों की तरह अच्छी तरह से अनुकूल बनाता है। इस तरह का ऑपरेशन प्रसंस्करण नोड्स की संख्या के साथ लगभग रैखिक रूप से स्केल कर सकता है। नोड्स में बड़े जोड़ अधिक ओवरहेड को उकसाते हैं क्योंकि अर्ध-जुड़ने वाले ऑपरेशन बहुत सारे नेटवर्क ट्रैफ़िक उत्पन्न कर सकते हैं।

लेनदेन प्रसंस्करण अनुप्रयोगों के लिए बड़े डेटा वॉल्यूम को कम करना उपयोगी है, जहां कई अपडेट्स का ओवरहेड इस तरह के आर्किटेक्चर को साझा डिस्क की तुलना में कम आकर्षक बनाता है। इस प्रकार, इस प्रकार की वास्तुकला डेटा वेयरहाउस अनुप्रयोगों से व्यापक रूप से उपयोग नहीं की जाती है।

शेयरिंग, कोरम प्रतिकृति और अंतिम संगति

कोरम प्रतिकृति एक सुविधा है जहां एक DBMS उच्च उपलब्धता के लिए डेटा की प्रतिकृति बनाता है। यह कमोडिटी कमोडिटी हार्डवेयर पर काम करने के लिए उपयोगी सिस्टम के लिए उपयोगी है जिसमें SAN जैसी बिल्ट-इन हाई-उपलब्धता सुविधाएं नहीं हैं। इस प्रकार के सिस्टम में डेटा को रीड परफॉर्मेंस और निरर्थक स्टोरेज के लिए कई स्टोरेज नोड्स में दोहराया जाता है ताकि सिस्टम को नोड की हार्डवेयर विफलता के लिए लचीला बनाया जा सके।

हालाँकि, सभी नोड्स के लिए राइट्स की प्रतिकृति M नोड्स और N राइट्स के लिए O (M x N) है। यदि कोई लेन-देन करने की अनुमति दी जाती है, तो यह लिखना महंगा हो जाता है यदि राइट को सभी नोड्स पर दोहराया जाना चाहिए। कोरम प्रतिकृति एक समझौता है जो लिखने को तुरंत नोड्स के सबसेट के लिए दोहराया जा सकता है और फिर एक पृष्ठभूमि कार्य द्वारा अन्य नोड्स के लिए बाहर लिखा हुआ है। लेन-देन की रिपोर्ट ग्राहक को करने से पहले यह सुनिश्चित करते हुए कि वे न्यूनतम नोड्स के न्यूनतम सबसेट (कोरम) के लिए दोहराए गए हैं, यह सुनिश्चित करके कि अतिरेक की एक निश्चित डिग्री प्रदान करते हुए, लेखन को अधिक तेज़ी से प्रतिबद्ध किया जा सकता है।

इसका मतलब यह है कि कोरम के बाहर नोड्स को पढ़ने से डेटा के अप्रचलित संस्करण देखे जा सकते हैं जब तक कि पृष्ठभूमि प्रक्रिया ने बाकी नोड्स के लिए डेटा लिखना समाप्त नहीं किया है। शब्दार्थ को 'अंतिम संगति' के रूप में जाना जाता है और यह आपके आवेदन की आवश्यकताओं के आधार पर स्वीकार्य हो सकता है या नहीं भी हो सकता है लेकिन इसका अर्थ है कि लेन-देन के साधन संसाधन उपयोग में O (n) की तुलना में O (1) के करीब हैं।

साझाकरण के लिए ग्राहक को डेटाबेस में डेटा के विभाजन के बारे में पता होना चाहिए, अक्सर एक प्रकार के एल्गोरिथ्म का उपयोग करके जिसे 'सुसंगत हैशिंग' कहा जाता है। एक शार्ल्ड डेटाबेस में क्लाइंट ने क्वेरी को जारी करने के लिए क्लस्टर में कौन सा सर्वर निर्धारित करने के लिए कुंजी को हैश किया। चूंकि अनुरोध क्लस्टर में नोड्स में वितरित किए जाते हैं, इसलिए एक एकल क्वेरी समन्वयक नोड के साथ कोई अड़चन नहीं है।

ये तकनीक एक डेटाबेस को क्लस्टर में नोड्स जोड़कर निकट-रैखिक दर पर स्केल करने की अनुमति देती है। सैद्धांतिक रूप से, कोरम प्रतिकृति केवल आवश्यक है यदि अंतर्निहित भंडारण माध्यम को अविश्वसनीय माना जाता है। यह उपयोगी है यदि कमोडिटी सर्वरों का उपयोग किया जाना है, लेकिन कम मूल्य का है यदि अंतर्निहित भंडारण तंत्र की अपनी उच्च उपलब्धता योजना है (उदाहरण के लिए दर्पण के साथ एक SAN, मेजबानों के लिए बहु-पथ कनेक्टिविटी)।

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

वापस RDBMS प्लेटफ़ॉर्म पर

कोई अंतर्निहित कारण नहीं है कि इन तकनीकों का उपयोग RDBMS के साथ नहीं किया जा सकता है। हालाँकि, लॉक और संस्करण प्रबंधन ऐसी प्रणाली पर काफी जटिल होगा और ऐसी प्रणाली के लिए कोई भी बाजार काफी विशिष्ट होने की संभावना है। मुख्य धारा आरडीबीएमएस प्लेटफार्मों में से कोई भी कोरम प्रतिकृति का उपयोग नहीं करता है और मुझे विशेष रूप से किसी भी आरडीबीएमएस उत्पाद (कम से कम किसी भी महत्वपूर्ण अपटेक के साथ नहीं) के बारे में पता नहीं है।

साझा-डिस्क और साझा-कुछ भी सिस्टम बहुत बड़े वर्कलोड तक स्केल नहीं कर सकता है। उदाहरण के लिए, ओरेकल आरएसी 63 प्रोसेसिंग नोड्स का समर्थन कर सकता है (जो अपने आप में बड़ी एसएमपी मशीनें हो सकती हैं) और सैन पर भंडारण नियंत्रकों की एक मनमानी संख्या। एक आईबीएम Sysplex (zSeries मेनफ्रेम का एक समूह) कई मेनफ्रेम (प्रत्येक में पर्याप्त प्रसंस्करण शक्ति और अपने स्वयं के I / O बैंडविड्थ) और कई SAN नियंत्रकों का समर्थन कर सकता है। ये आर्किटेक्चर ACID शब्दार्थ के साथ बहुत बड़े लेनदेन संस्करणों का समर्थन कर सकते हैं, हालांकि वे विश्वसनीय भंडारण का अनुमान लगाते हैं। Teradata, Netezza और अन्य विक्रेता उच्च-प्रदर्शन विश्लेषणात्मक प्लेटफ़ॉर्म बनाते हैं जो साझा-कुछ डिज़ाइनों के आधार पर होते हैं जो बहुत बड़े डेटा वॉल्यूम के पैमाने पर होते हैं।

अब तक, सस्ते लेकिन अल्ट्रा-हाई वॉल्यूम के लिए बाजार पूरी तरह से ACID RDBMS प्लेटफॉर्म MySQL द्वारा हावी है, जो कि शार्किंग और मल्टी-मास्टर प्रतिकृति का समर्थन करता है। MySQL quorum प्रतिकृति का उपयोग लिखने के थ्रूपुट को ऑप्टिमाइज़ करने के लिए नहीं करता है, इसलिए NoSQL सिस्टम की तुलना में लेन-देन कमिट अधिक महंगा होता है। साझाकरण बहुत अधिक पढ़े गए थ्रूपुट की अनुमति देता है (उदाहरण के लिए फेसबुक MySQL का बड़े पैमाने पर उपयोग करता है), इसलिए इस प्रकार का आर्किटेक्चर रीड-हैवी वर्कलोड पर अच्छी तरह से लागू होता है।

एक दिलचस्प बहस

बिगटेबल एक साझा-कुछ भी नहीं है वास्तुकला (मूल रूप से वितरित की-वैल्यू जोड़ी) जैसा कि नीचे माइकल हॉसेनलस ने बताया है । इसके मूल मूल्यांकन में MapReduce इंजन शामिल था, जो BigTable का हिस्सा नहीं है, लेकिन आम तौर पर इसके सबसे सामान्य कार्यान्वयन (जैसे Hadoop / HBase और Google के MapReduce ढांचे) में इसके साथ संयोजन के रूप में उपयोग किया जाएगा।

इस वास्तुकला की तुलना तेरदता से की जाती है, जिसमें भंडारण और प्रसंस्करण के बीच भौतिक आत्मीयता होती है (अर्थात नोड्स में एक साझा SAN के बजाय स्थानीय भंडारण होता है) आप यह तर्क दे सकते हैं कि BigTable / MapReduce एक साझा डिस्क आर्किटेक्चर है जो विश्व स्तर पर दृश्यमान समानांतर प्रणाली के माध्यम से है।

Hadoop जैसे MapReduce स्टाइल सिस्टम का प्रोसेसिंग थ्रूपुट एक नॉन-ब्लॉकिंग नेटवर्क स्विच की बैंडविड्थ से विवश है। 1 गैर-अवरोधक स्विच, हालांकि, डिज़ाइन में निहित समानता के कारण बड़े बैंडविड्थ समुच्चय को संभाल सकते हैं, इसलिए वे प्रदर्शन पर एक महत्वपूर्ण व्यावहारिक बाधा हैं। इसका मतलब है कि एक साझा डिस्क आर्किटेक्चर (शायद बेहतर रूप में साझा-संग्रहण प्रणाली के रूप में संदर्भित) बड़े वर्कलोड के पैमाने पर हो सकता है, भले ही नेटवर्क स्विच सैद्धांतिक रूप से एक केंद्रीय अड़चन हो।

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

1 के प्रसंस्करण और उपलब्ध I / O थ्रूपुट भी प्रदर्शन पर एक सीमा का गठन करते हैं, लेकिन नेटवर्क स्विच एक केंद्रीय बिंदु है जिसके माध्यम से सभी ट्रैफ़िक गुजरते हैं।


10
महाकाव्य। अच्छा काम करने वाला लड़का।
Mark Storey-Smith

8
अद्भुत जवाब!
फिलो

1
वाह, मुझे लगता है कि आप इसे बहुत कवर किया!
Mr.Brownstone

2
@ मिचेल हॉसेब्लास दूसरे विचारों पर, अगर आप बिगटेबल डीबी को अलगाव में लेते हैं तो मैं साझा-कुछ भी दावा नहीं करता। मैंने इसे इस लेख में पूरे MapReduce / Hadoop स्टैक (जहां प्रसंस्करण और भंडारण के बीच कोई विशेष संबंध नहीं है) के साथ भ्रमित किया है। आप उस तर्क की अनुपयुक्तता पर काफी तर्क कर सकते हैं।
कंसर्नडऑफटुनब्रिजवेल्स

3
एक युगल तकनीकी विचार। वास्तव में कोरम प्रतिकृति वह है जो मास्टर / गुलाम सेटअप के लिए पोस्टग्रेजक्यूएल की स्ट्रीमिंग प्रतिकृति पर किया जाता है। डेटा को केवल डिफ़ॉल्ट रूप से मास्टर के लिए होना चाहिए, लेकिन आपको यह भी आवश्यकता हो सकती है कि प्रतिबद्ध वापस आने से पहले यह n दासों को भी लिखा जाए।
क्रिस ट्रैवर्स

21

संबंधपरक डेटाबेस NoSQL समाधानों की तरह क्लस्टर कर सकते हैं। एसीआईडी ​​संपत्तियों को बनाए रखने से यह और अधिक जटिल हो सकता है और इन संपत्तियों को बनाए रखने के लिए किए गए व्यापार के बारे में पता होना चाहिए। दुर्भाग्य से, वास्तव में ट्रेड-ऑफ़ क्या कार्यभार पर निर्भर करता है और निश्चित रूप से डेटाबेस सॉफ़्टवेयर को डिज़ाइन करते समय किए गए निर्णय।

उदाहरण के लिए, मुख्य रूप से OLTP वर्कलोड में अतिरिक्त सिंगल क्वेरी लेटेंसी हो सकती है, यहां तक ​​कि क्लस्टर के थ्रूपुट स्केल भी। यह अतिरिक्त विलंबता बिना देखे जा सकता है या एक वास्तविक सौदा ब्रेकर हो सकता है, यह सब आवेदन पर निर्भर करता है। सामान्य तौर पर, क्लस्टरिंग थ्रूपुट में सुधार करेगा और विलंबता को चोट पहुंचाएगा, लेकिन यहां तक ​​कि 'नियम' भी संदिग्ध है यदि किसी एप्लिकेशन के प्रश्न विशेष रूप से समानांतर प्रसंस्करण के लिए उत्तरदायी हैं।

मैं जिस कंपनी के लिए काम करता हूं, क्लैस्ट्रैक्स , ऑफ़र एक समरूप उच्च गति नेटवर्क द्वारा जुड़े समरूप संगणना और भंडारण नोड्स की एक श्रृंखला है। संबंधपरक डेटा हैश को नोड्स में प्रति-अनुक्रमिक आधार पर वितरित किया जाता है जिसे हम 'स्लाइस' कहते हैं। प्रत्येक स्लाइस में नोड या डिस्क विफलता की स्थिति में स्थायित्व के लिए पूरे क्लस्टर में दो या अधिक प्रतिकृतियां होंगी। MySQL वायर प्रोटोकॉल का उपयोग करके क्वेरीज़ जारी करने के लिए ग्राहक क्लस्टर के किसी भी नोड से कनेक्ट हो सकते हैं।

यह एक एसीआईडी ​​डेटाबेस के घटकों के बारे में स्वतंत्र रूप से सोचना थोड़ा स्वाभाविक है क्योंकि इसमें से बहुत कुछ एक साथ मिलता है, लेकिन यहाँ जाता है:

Atomicity - Clustrix atomicity सुनिश्चित करने के लिए दो चरण प्रतिबद्ध उपयोग करता है। UPDATE और DELETE संचालन हमारे वितरित लॉक मैनेजर के माध्यम से पंक्तियों को भी लॉक करेगा क्योंकि हम आंतरिक रूप से उन कार्यों को SELECT में बदल देते हैं, जिसके बाद सटीक UPDATE / DELETE संचालन होते हैं।

एटमॉसिटी स्पष्ट रूप से लेनदेन में भाग लेने वाले नोड्स के बीच संदेश भेजने की मात्रा को बढ़ाती है और प्रतिबद्ध प्रोटोकॉल को संसाधित करने के लिए उन नोड्स पर लोड बढ़ाती है। यह एक वितरित प्रणाली होने के लिए ओवरहेड का हिस्सा है और स्केलेबिलिटी को सीमित करेगा यदि प्रत्येक नोड में प्रत्येक लेनदेन में भाग लिया जाता है, लेकिन नोड्स केवल एक लेनदेन में भाग लेते हैं यदि उनके पास एक प्रतिकृतियां लिखी जा रही हैं।

संगति - विदेशी कुंजियों को ट्रिगर के रूप में कार्यान्वित किया जाता है, जिनका मूल्यांकन प्रतिबद्ध समय पर किया जाता है। बड़ी रेंज UPDATE और DELETE संचालन लॉकिंग के कारण हमारे प्रदर्शन को नुकसान पहुंचा सकते हैं, लेकिन हम सौभाग्य से इन सभी को अक्सर नहीं देखते हैं। लेन-देन अपडेट देखना / कुछ पंक्तियों को हटाना और फिर कमिट करना अधिक आम है।

स्थिरता का दूसरा हिस्सा PAXOS सर्वसम्मति प्रोटोकॉल के माध्यम से एक कोरम को बनाए रखता है जो यह सुनिश्चित करता है कि केवल ज्ञात नोड्स के बहुमत के साथ क्लस्टर लिखने में सक्षम हैं। यह निश्चित रूप से एक क्लस्टर के लिए कोरम होना संभव है लेकिन अभी भी डेटा गायब है (एक स्लाइस ऑफ़लाइन के सभी प्रतिकृतियां), जो लेनदेन का कारण बनेगी जो उन स्लाइस में से एक को विफल कर देती है।

अलगाव - क्लैस्ट्रक्स कंटेनर स्तर पर MVCC अलगाव प्रदान करता है। हमारी परमाणुता की गारंटी है कि सभी लागू प्रतिकृतियां एक विशेष रूप से लिखती हैं, इससे पहले कि हम लेनदेन की रिपोर्ट करें, गैर-संकुल मामले में आपके पास अलगाव की समस्या को कम करता है।

स्थायित्व - संबंधपरक डेटा के प्रत्येक स्लाइस को नोड या डिस्क विफलता के मामले में पुनर्जीवन प्रदान करने के लिए दो या अधिक नोड्स में संग्रहीत किया जाता है। यह शायद यहाँ भी ध्यान देने योग्य है कि हमारे उत्पाद के उपकरण संस्करण में एक NVRAM कार्ड है जहाँ प्रदर्शन कारणों से वाल को संग्रहीत किया जाता है। बहुत से एकल उदाहरण डेटाबेस प्रत्येक कमिट के बजाय अंतराल पर चेकपॉइंट करके अपने वाल के प्रदर्शन में सुधार करेंगे। वितरित प्रणाली में यह दृष्टिकोण समस्याग्रस्त है क्योंकि 'रिप्ले टू कहाँ?' एक जटिल सवाल। हम इस उपकरण में एक कठिन स्थायित्व की गारंटी प्रदान करते हैं।


2
धन्यवाद @ मट्ट - यह केवल उसी तरह का उत्तर है जैसा हम बाद में थे। एक तरफ के रूप में, मैं सहमत हूँ कि ACID के घटकों को अलग करना बहुत स्वाभाविक नहीं है क्योंकि मुझे कुछ ऐसा ही मिला था जब मैं अपना लेख लिख रहा था। फिर से, आपके समय के लिए धन्यवाद और हम आपको और आपकी टीम के और योगदानों को देखकर खुश होंगे।
कंसर्नडऑफटुनब्रिजवेल्स

14

मौलिक उत्तर यह है कि स्थिरता मॉडल अलग है। मैं इसे ConcernedOfTunbridge के उत्तर का विस्तार करने के लिए लिख रहा हूं जो वास्तव में इसके लिए संदर्भ बिंदु होना चाहिए।

ACID स्थिरता मॉडल का मूल बिंदु यह है कि यह मूलभूत गारंटी देता है कि सिस्टम के भीतर वैश्विक स्तर पर डेटा की स्थिति कैसी है। ये गारंटी कैप प्रमेय सीमाओं के अधीन हैं, जिसका अर्थ है, मूल रूप से, कि उन्हें काम करने के लिए, आपके द्वारा लेन-देन किए जाने वाले आवेदन को बताने से पहले आपको एक ही पृष्ठ पर सभी आधिकारिक स्रोतों की आवश्यकता होगी। मल्टी-मास्टर प्रतिकृति इस प्रकार इन बाधाओं में भागे बिना करना बहुत कठिन है। निश्चित रूप से एक बार जब आप बहु-मास्टर वातावरण में अतुल्यकालिक प्रतिकृति करना शुरू करते हैं तो ये गारंटी खिड़की से बाहर चली जाती है। ACID स्थिरता मॉडल महत्वपूर्ण या महत्वपूर्ण जानकारी के लिए एक मजबूत स्थिरता मॉडल है।

BASE संगतता मॉडल एक गैर-महत्वपूर्ण जानकारी के लिए लक्षित एक कमजोर संगतता मॉडल है। क्योंकि गारंटी काफी कमजोर है, मल्टी-मास्टर सिस्टम में इस तरह की कमजोर गारंटी की पेशकश करने की क्षमता अधिक आसानी से प्राप्य है क्योंकि गारंटी, अच्छी तरह से कमजोर हैं।

RDBMS के कर सकते हैं और पैमाने के साथ ही NoSQL समाधान हालांकि!

हालांकि ऐसे मामले हैं जहां आरडीबीएमएस एक हद तक ऐसा कर सकता है कि नोएसक्यूएल भी मैच नहीं कर सकता है। यह सिर्फ इतना अलग करता है। मैं Postgres-XC को देखूंगा कि मजबूत स्थिरता की गारंटी के बिना स्केलिंग कैसे संभव है।

जिस तरह से ये विशेष रूप से RDBMS का है वह प्रॉक्सी के साथ शार्डिंग सॉल्यूशन जैसे किसी साझा डिस्क आर्किटेक्चर की तरह लेकिन कुछ हद तक अधिक जटिल है। ये उसी तरह से स्केल नहीं करते हैं जैसे कि NoSQL सॉल्यूशंस और इसलिए ट्रेडऑफ अलग-अलग हैं।

The Postgres-XC मॉडल है, मैं समझता हूं, जो कि टेराडाटा से प्रेरित है। इसमें दो अलग-अलग भूमिकाओं में नोड्स होते हैं, भंडारण नोड्स या समन्वयक के रूप में। समन्वयक मल्टी-मास्टर हैं (कोई वास्तविक प्रतिकृति शामिल नहीं है) और वे वास्तविक डेटा प्रोसेसिंग को संभालने के लिए स्टोरेज नोड्स से कनेक्ट होते हैं। स्टोरेज नोड्स मास्टर-स्लेव सेटअप में दोहराए जाते हैं। प्रत्येक संग्रहण नोड में सार डेटाबेस का एक सार है जो सम्‍मिलित है, लेकिन समन्‍वयक डेटा का एक सुसंगत चित्र बनाए रखता है।

जिम्मेदारियों का एक महत्वपूर्ण अलगाव यहां शामिल है। स्टोरेज नोड्स डेटा का प्रबंधन करते हैं, बाधाओं की जांच करते हैं, स्थानीय रूप से विदेशी कुंजी बाधाओं को लागू करते हैं, और डेटा के कम से कम कुछ एकत्रीकरण को संभालते हैं। समन्वयक उन विदेशी कुंजियों को संभालते हैं जिन्हें स्थानीय रूप से लागू नहीं किया जा सकता है, साथ ही साथ विंडोिंग और अन्य डेटा विचार जो कई डेटा नोड्स से खींच सकते हैं। संक्षेप में, समन्वयक एसीआईडी ​​को बहु-मास्टर सेटअप में वितरित लेनदेन में संभव बनाते हैं जहां उपयोगकर्ता को यह भी पता नहीं होता है कि लेनदेन वितरित किए गए हैं।

इस संबंध में, Postgres-XC, NoSQL स्केलिंग विकल्पों की तरह कुछ प्रदान करता है, लेकिन अतिरिक्त स्थिरता की गारंटी के कारण कुछ अतिरिक्त जटिलता है। मैं समझता हूं कि वाणिज्यिक आरडीबीएमएस हैं जो इस प्रकार की स्केलेबिलिटी की पेशकश करते हैं। टेराडाटा ऐसा करता है। इसके अतिरिक्त साझा डिस्क सिस्टम एक समान तरीके से स्केल कर सकते हैं और डीबी 2 और ओरेकल दोनों ऐसे समाधान प्रदान करते हैं। इसलिए यह कहना पूरी तरह से अनुचित है कि आरडीबीएमएस ऐसा नहीं कर सकता। वे कर सकते हैं। हालाँकि जरूरत पहले से इतनी कम रही है कि ज्यादातर खिलाड़ियों को मालिकाना समाधान बहुत सस्ती करने के लिए पैमाने की अर्थव्यवस्थाएं अपर्याप्त हैं।

अंत में VoltDB पर एक नोट। NoSQL समाधान की तरह, मैं VoltDB को एक बहुत ही विशेष उपकरण के रूप में देखता हूं। यह बहुत तेज़ है लेकिन डिस्क पर मल्टी-राउंड-ट्रिप लेनदेन और स्थायित्व की कीमत पर। इसका मतलब है कि आपके पास चिंताओं का एक बहुत अलग सेट है। जब आप RDBMS अग्रदूतों NoSQL समाधान का निर्माण करते हैं तो VoltDB आपको मिलता है ;-)। VoltDB भाग में तेज है क्योंकि यह समवर्ती और स्थायित्व को समीकरण से परिभाषित करता है। स्थायित्व एक नेटवर्क संपत्ति बन जाती है, न कि एक इंट्रा-होस्ट संपत्ति और संगामिति को एक बार में प्रश्नों को चलाने के द्वारा प्रबंधित किया जाता है, आंतरिक रूप से क्रमबद्ध रूप से, क्रमबद्ध क्रम में। यह एक पारंपरिक आरडीबीएमएस नहीं है (और यह एक अच्छी बात है क्योंकि यह पारंपरिक आरडीबीएमएस स्थानों पर नहीं जा सकता है, लेकिन यह भी बहुत हद तक सही है)।

संपादित करें: जुड़ाव के निहितार्थ पर विचार करना भी महत्वपूर्ण है। क्लस्टर किए गए सिस्टम में, जॉइन एक बहुत ही अलग प्रदर्शन मुद्दा बन जाता है। यदि सब कुछ एक ही नोड पर है, तो वे प्रदर्शन में सुधार कर सकते हैं लेकिन अगर आपको एक अलग नोड के लिए एक गोल-यात्रा करना है तो यह बहुत अधिक लागत लगाता है। इसलिए डेटा मॉडल अंतर बनाते हैं और क्लस्टरिंग के दृष्टिकोण का प्रदर्शन प्रभाव पड़ता है। Postgres-XC और Postgres-XL जैसे दृष्टिकोण यह मानते हैं कि आप चीजों को सोचने के लिए काफी समय बिता सकते हैं, ताकि आप अपने डेटा को उचित रूप से बढ़ा सकें और डेटा को एक साथ जोड़कर रख सकें। लेकिन वह डिजाइन ओवरहेड लगाता है। दूसरी ओर, यह कई NoSQL समाधानों की तुलना में बहुत बेहतर है और उचित रूप से ट्यून किया जा सकता है। उदाहरण के लिए हम (समायोजित करें) हमारे 3.5PB डेटा के लिए PostgreSQL में एक NoSQL जैसी क्लस्टरिंग रणनीति का उपयोग करते हैं जो मूल रूप से लॉग विश्लेषण है। और हमारे बहुत से डिज़ाइन NoSQL क्लस्टरिंग रणनीतियों से गहराई से प्रेरित हैं। इसलिए कभी-कभी डेटा मॉडल क्लस्टरिंग मॉडल को भी बाधित करता है।


6

मेरा उत्तर पहले वाले की तरह अच्छा नहीं होगा, लेकिन यहाँ जाता है।

इंग्लीश की प्रसिद्धि के स्टोन स्टोनब्रेकर ने एक एमपीपी साझा-कुछ नहीं कॉलम-स्टोर (वर्टिका) और एक एमपीपी साझा-कुछ भी नया एसक्यूएल डेटाबेस (वोल्टीडीबी) नहीं बनाया है जो क्लस्टर में विभिन्न नोड्स के बीच डेटा वितरित करता है और एसीआईडी ​​को बनाए रखता है। वर्टिका तब से एचपी द्वारा खरीदी गई है।

मेरा मानना ​​है कि अन्य नए एसक्यूएल डेटाबेस एसीआईडी ​​को बनाए रखते हैं, हालांकि मुझे यकीन नहीं है कि उनमें से कितने एक क्लस्टर पर अपनी पंक्तियों को वितरित करते हैं, आदि।

यहाँ एक बात है जो Stonebraker ने NoSQL और "Old SQL" के सापेक्ष नई SQL पर दी थी। http://www.youtube.com/watch?v=uhDM4fcI2aI


2
यह "न्यू एसक्यूएल" और "ओल्ड एसक्यूएल" क्या है? क्या आप स्पष्ट करना चाहेंगे?
ypercube y

1
"पुराना SQL" SQL Server, Oracle, MySQL, PostgreSQL आदि होगा। यहाँ NewSQL के लिए विकिपीडिया की परिभाषा है जो बहुत अच्छी है: "NewSQL आधुनिक रिलेशनल डेटाबेस मैनेजमेंट सिस्टम का एक वर्ग है जो NoSQL के समान स्केलेबल प्रदर्शन प्रदान करना चाहता है। पारंपरिक एकल-नोड डेटाबेस सिस्टम की ACID गारंटी को बनाए रखते हुए OLTP वर्कलोड के लिए सिस्टम। " अगर मैं और अधिक सीखने में रुचि रखता हूं तो मैं उस वीडियो की अनुशंसा करता हूं, जिसे मैंने पोस्ट किया था।
geoffrobinson

यहाँ एक नोट के रूप में, और जैसा कि मैंने अपने उत्तर में बताया, VoltDB स्थायित्व और समाकलन को समीकरण से परिभाषित करके मापनीयता को संभालता है। VoltDB के साथ संक्षेप में, आपको कोई इंट्रासिस्टम स्थायित्व नहीं मिलता है, और डेटा तक कोई समवर्ती पहुंच नहीं होती है। नई एसक्यूएल एक इंडी 500 रेस कार की तरह है, लेकिन ओल्ड एसक्यू अभी भी अर्ध ट्रक या शायद मालगाड़ी का इंजन है।
क्रिस ट्रैवर्स

1

MySQL क्लस्टरिंग मल्टी मास्टरिंग प्रतिकृति और हैशिंग शार्क का उपयोग करके क्लस्टर के पार कर सकती है।

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