SQL की तुलना में noSQL डेटाबेस अधिक स्केलेबल क्यों हैं?


98

हाल ही में मैंने noSQL DBMS के बारे में बहुत कुछ पढ़ा। मैं CAP प्रमेय , ACID नियम, BASE नियम और मूल सिद्धांत को समझता हूं । लेकिन इस बात पर कोई संसाधन नहीं मिला कि आरडीबीएमएस की तुलना में नोएसक्यूएल स्केलेबल अधिक आसानी से क्यों है (उदाहरण के लिए सिस्टम के मामले में डीबी सर्वर की बहुत आवश्यकता है)?

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

क्या कोई बता सकता है कि noSQL / SQL स्केलेबिलिटी को कैसे प्रभावित करता है?


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

8
बेशक SQL डेटाबेस रिकॉर्ड के अरबों में पूरी तरह से अच्छी तरह से पैमाने पर, वे बस डिजाइन करने के लिए कुछ विशेषज्ञता की जरूरत है और उन्हें स्थापित करने के लिए है कि आवेदन डेवलपर्स नहीं है। और आम तौर पर हार्डवेयर और लाइसेंस का काफी महंगा सेट।
एचएलजीईएम


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

जवाबों:


77

noSQL डेटाबेस एक बड़ी मात्रा में कार्यक्षमता देता है जो कि SQL डेटाबेस आपको देता है यह बहुत ही स्वभाव है।

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

noSQL डेटाबेस में वह सब नहीं है। यदि आपको उस सामान की आवश्यकता है, तो आपको इसे स्वयं करने की आवश्यकता है, लेकिन यदि आपको इसकी आवश्यकता नहीं है (और ऐसे बहुत सारे अनुप्रयोग हैं जो नहीं हैं), तो लड़के हॉबी आप भाग्य में हैं। DB को इन सभी जटिल परिचालनों को करने और अधिकांश डेटासेट पर लॉक करने की आवश्यकता नहीं होती है, इसलिए वास्तव में कई सर्वरों / डिस्क / जो कुछ भी है उसे विभाजित करना आसान है और यह वास्तव में तेजी से काम करता है।


2
नहीं पता था कि यह आसान था
अब्दुल

7
यह स्वीकृत उत्तर NoSQL Sharpding क्षमता का उल्लेख करने में पूरी तरह से विफल है जो SQL से गायब है। शेयरिंग वह है जो NoSQL को क्षैतिज रूप से स्केलेबल बनाता है।
संकरकोव

8
@HristoYankov और यह काम करता है क्योंकि NoSQL सिस्टम उन सभी चीजों को नहीं करता है जो शार्किंग के साथ अच्छी तरह से नहीं खेलती हैं।
इम्बिसिस

1
@ हिरोइयोनकोव: SQL डेटाबेस को क्षैतिज रूप से शार्प किया जा सकता है, और सभी NoSQL डेटाबेस को क्षैतिज रूप से आसानी से शार्प नहीं किया जा सकता है। साझा करना वास्तव में यही कारण नहीं है कि आप NoSQL का उपयोग क्यों करना चाहते हैं।
रेयान

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

175

यह NoSQL बनाम SQL के बारे में नहीं है, यह आधार बनाम ACID के बारे में है।

स्केलेबल को अपने घटकों में तोड़ना पड़ता है:

  • स्केलिंग पढ़ें = पढ़ने के संचालन के उच्च संस्करणों को संभालें
  • स्केलिंग लिखें = लेखन कार्यों के उच्च संस्करणों को संभालें

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

स्केलिंग वह जगह है जहां चीजें बालों को मिलती हैं। ACID सिद्धांत द्वारा लगाए गए विभिन्न अवरोध हैं जो आपको अंततः सुसंगत (BASE) आर्किटेक्चर में नहीं दिखते हैं:

  • एटमिसिटी का मतलब है कि लेनदेन को पूरा करना या पूरी तरह से विफल होना चाहिए, इसलिए इसकी गारंटी देने के लिए बहुत सारे बहीखाते को पर्दे के पीछे किया जाना चाहिए।
  • संगति बाधाओं का अर्थ है कि क्लस्टर में सभी नोड समान होने चाहिए। यदि आप एक नोड पर लिखते हैं, तो क्लाइंट को प्रतिक्रिया देने से पहले इस लेखन को अन्य सभी नोड्स में कॉपी किया जाना चाहिए। यह एक पारंपरिक RDBMS क्लस्टर को स्केल करने के लिए कठिन बनाता है।
  • स्थायित्व की कमी का अर्थ है कि एक लेखन को कभी भी न खोना करने के लिए आपको यह सुनिश्चित करना होगा कि ग्राहक को प्रतिक्रिया देने से पहले, लेखन को डिस्क में प्रवाहित कर दिया गया है।

एक निश्चित बिंदु से परे क्लस्टर में लिखने के संचालन या नोड की संख्या को स्केल करने के लिए आपको एसीआईडी ​​आवश्यकताओं में से कुछ को आराम करने में सक्षम होना चाहिए:

  • ड्रापिंग एटोमेसी आपको उस अवधि को छोटा करने देती है जिसके लिए तालिकाओं (डेटा के सेट) को लॉक किया जाता है। उदाहरण: MongoDB, CouchDB।
  • ड्रॉपिंग कंसिस्टेंसी से आप क्लस्टर नोड्स में लिखते हैं। उदाहरण: रीक, कैसेंड्रा।
  • ड्रॉप करने की स्थायित्व आपको डिस्क पर फ्लश किए बिना कमांड लिखने का जवाब देती है। उदाहरण: मेकचे, रेडिस।

NoSQL डेटाबेस आमतौर पर ACID मॉडल के बजाय BASE मॉडल का पालन करते हैं। वे ए, सी और / या डी आवश्यकताओं को छोड़ देते हैं, और बदले में वे स्केलेबिलिटी में सुधार करते हैं। कुछ, कैसंड्रा की तरह, आप एसीआईडी ​​की गारंटी में चुनते हैं जब आपको उनकी आवश्यकता होती है। हालांकि, सभी NoSQL डेटाबेस हर समय अधिक स्केलेबल नहीं होते हैं।

SQL API में क्वेरीज़ का वर्णन करने के लिए एक तंत्र का अभाव होता है जहाँ ACID की आवश्यकताओं को शिथिल किया जाता है। यही कारण है कि आधार डेटाबेस सभी NoSQL हैं।

व्यक्तिगत नोट: एक अंतिम बिंदु जो मैं बनाना चाहूंगा वह यह है कि ज्यादातर मामले जहां NoSQL का उपयोग वर्तमान में प्रदर्शन को बेहतर बनाने के लिए किया जा रहा है, एक उचित RDBMS पर उचित अनुक्रमित स्कीमा का उपयोग करके एक समाधान संभव होगा। जैसा कि इस साइट (एमएस SQL ​​सर्वर द्वारा संचालित) द्वारा सिद्ध किया गया है, आरडीबीएमएस उच्च वर्कलोड को माप सकता है, यदि आप उन्हें उचित रूप से उपयोग करते हैं। जो लोग समझ नहीं पाते हैं कि RDBMS का अनुकूलन NoSQL से कैसे दूर रहना चाहिए, क्योंकि उन्हें समझ नहीं आता कि वे अपने डेटा के साथ क्या जोखिम उठा रहे हैं।

अपडेट (2019-09-17):

इस उत्तर को पोस्ट करने के बाद से डेटाबेस का परिदृश्य विकसित हुआ है। जहाँ अभी भी RDBMS ACID दुनिया और NoSQL BASE दुनिया के बीच द्वंद्ववाद है, वहीं रेखा फीकी हो गई है। NoSQL डेटाबेस SQL ​​API और लेनदेन समर्थन जैसे RDBMS दुनिया की सुविधाओं को जोड़ रहा है। अब ऐसे डेटाबेस भी हैं जो एसक्यूएल , एसीआईडी ​​का वादा करते हैं और स्केलिंग लिखते हैं, जैसे कि Google क्लाउड स्पैनर, यूगाबेटबीडी या कॉकरोचडीबी। आमतौर पर शैतान विवरण में है, लेकिन अधिकांश उद्देश्यों के लिए ये "पर्याप्त पर्याप्त" हैं। डेटाबेस तकनीक में एक गहरी डुबकी के लिए और यह कैसे विकसित हुआ है आप इस स्लाइड डेक पर एक नज़र डाल सकते हैं (स्लाइड नोटों के साथ स्पष्टीकरण है)।


जबकि मैं मानता हूँ कि कुछ NoSQL स्टोर ACID को BASE से बदल देते हैं, फिर भी NoSQL "श्रेणी" के अंतर्गत आने वाले सभी स्टोर्स के लिए यह एक सामान्य विशेषता नहीं है , जो कि पहले स्थान पर एक बीमार परिभाषित है। थोड़ी देर के बाद, शब्द की व्याख्या "नो एसक्यूएल" से "न केवल एसक्यूएल" के रूप में बदल गई, लेकिन ऐसे कई डेटाबेस अभी भी जॉइन करते हैं या SQLesque बोलियों को लागू करना शुरू कर दिया है, मार्क मैडसेन ने कुछ और मतलब निकालने के लिए इस शब्द को फिर से गढ़ा है नो-टेशन में डेटाबेस का अपना इतिहास : "नहीं, एसक्यूएल" ;-)
लुकास एडर

2
जुड़ने से बचने के लिए, हमारे पास NoSQL में डी-सामान्यीकृत डेटा होगा जो पुनरावृत्ति और अधिक भंडारण के लिए अग्रणी होगा। लेकिन फिर आरडीबीएमएस में वही हासिल किया जा सकता है अगर हम डी-नॉर्मलाइजेशन के साथ ठीक हैं। तो "जॉइन्स" या "नो जॉइन्स" डीबीए पर निर्भर करता है, न कि डेटाबेस प्रकार पर। सही बात ?
कौशिक लेले

2
@dynamic वे साइटें या तो भारी कैशिंग का उपयोग करती हैं, या वे शार्प करती हैं। उन डिज़ाइनों में db के बाहर डेटा को स्केल करने की जटिलता होती है। आप इस तरह के मामले में भी nosql का उपयोग कर सकते हैं, क्योंकि यह बिल्कुल व्यापार बंद nosql बनाता है।
जोएरी सेब्रेट्स

1
"एसक्यूएल एपीआई में प्रश्नों का वर्णन करने के लिए एक तंत्र का अभाव होता है जहां एसीआईडी ​​की आवश्यकताओं को आराम दिया जाता है"। तकनीकी रूप से सच है, लेकिन SQL सर्वर ने उस दिशा में एक डरपोक कदम उठाया है। एसक्यूएल 2014 ने राइट लॉग दबाव को कम करने के बदले में एसीआईडी ​​में डी को आराम देते हुए विलंबित स्थायित्व का परिचय दिया।
ईबोरल जूल 27'15

3
यह स्वीकृत उत्तर imo होना चाहिए। यह उदाहरणों के साथ बहुत स्पष्ट है, लेकिन संक्षिप्त रहने का प्रबंधन करता है।
ओल्शानस्क

4

यह सच है कि NoSQL डेटाबेस (MongoDB, Redis, Riak, Memcached, आदि) विदेशी प्रमुख बाधाओं को बनाए नहीं रखते हैं, और परमाणु संचालन को अधिक स्पष्ट रूप से निर्दिष्ट किया जाना चाहिए। यह भी सही है कि SQL डेटाबेस (SQL Server, Oracle, PostgreSQL, आदि) अनुभवी DBA द्वारा बहुत बड़ी प्रदर्शन आवश्यकताओं को संभालने के लिए बढ़ाया जा सकता है।

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

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


2
मुझे यकीन नहीं है कि मैं परमाणु लेनदेन के बारे में, ACID अर्थ में (हालांकि "NoSQL" पर टिप्पणी करना मुश्किल है, क्योंकि यह बहस के लिए है कि वास्तव में हमारा क्या मतलब है)। "ठेठ" NoSQL DB में अधिकांश प्रदर्शन लाभ स्थिरता की गारंटी के ढीला होने के माध्यम से प्राप्त किए जाते हैं (देखें: अंतिम स्थिरता , ACID बनाम आधार)। यदि किसी अनुप्रयोग के लिए अंतिम स्थिरता पर्याप्त है (और यह अक्सर है), तो यह बहुत अधिक कुशल क्षैतिज स्केलिंग की अनुमति देता है।
डैनियल बी

4

IBM DeveloperWorks से: NoSQL डेटाबेस के साथ क्लाउड-स्तरीय डेटा स्केलेबिलिटी की आपूर्ति करें

स्केलेबिलिटी वह प्रणाली है जो बहुत कम विलंबता पर बहुत अधिक अनुरोध दर के साथ बहुत बड़े डेटाबेस का समर्थन करने में सक्षम होना चाहिए।

NoSQL सिस्टम में सामान्य रूप से कई डिज़ाइन विशेषताएं हैं:

  • कई सर्वरों पर थ्रूपुट को क्षैतिज रूप से स्केल करने की क्षमता।
  • एक साधारण कॉल स्तर इंटरफ़ेस या प्रोटोकॉल (SQL बंधन के विपरीत)।
  • अधिकांश पारंपरिक RDBMS में ACID लेनदेन की तुलना में कमजोर संगतता मॉडल के लिए समर्थन।
  • डेटा भंडारण के लिए वितरित अनुक्रमित और रैम का कुशल उपयोग।
  • नई विशेषताओं या डेटा स्कीमा को गतिशील रूप से परिभाषित करने की क्षमता।

स्केलिंग के लिए संबंधपरक डेटाबेस इष्टतम क्यों नहीं हो सकता है

सामान्य तौर पर, रिलेशनल डेटाबेस मैनेजमेंट सिस्टम को दशकों के लिए "डेटा-दृढ़ता और पुनर्प्राप्ति के लिए एक-आकार-फिट-सभी समाधान" के रूप में माना जाता है। वे व्यापक अनुसंधान और विकास के प्रयासों के बाद परिपक्व हो गए हैं और बहुत सफलतापूर्वक एक बड़े बाजार और विभिन्न व्यापार डोमेन में समाधान तैयार किए हैं।

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

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

DBA.SE से अधिक: क्षैतिज स्केलिंग का क्या अर्थ है?

क्षैतिज स्केलिंग अनिवार्य रूप से ऊपर के बजाय बाहर निर्माण कर रहा है। आप नहीं जाते और एक बड़ा बीफ़ियर सर्वर खरीदते हैं और उस पर अपना सारा भार ले जाते हैं, इसके बजाय आप 1+ अतिरिक्त सर्वर खरीदते हैं और उन पर अपना लोड वितरित करते हैं।

क्षैतिज स्केलिंग का उपयोग तब किया जाता है जब आपके पास सर्वर पर एक साथ कई इंस्टेंस चलाने की क्षमता होती है। आमतौर पर 1 सर्वर से 2 सर्वर पर जाना बहुत कठिन होता है, फिर 2 से 5, 10, 50 आदि से जाना होता है।

एक बार जब आप समानांतर उदाहरणों को चलाने के मुद्दों को संबोधित करते हैं, तो आप अमेज़ॅन ईसी 2, रैकस्पेस की क्लाउड सेवा, गोग्रिड, आदि जैसे पर्यावरण का बहुत लाभ उठा सकते हैं क्योंकि आप मांग के आधार पर उदाहरणों को ऊपर और नीचे ला सकते हैं, सर्वर शक्ति के लिए भुगतान करने की आवश्यकता को कम कर सकते हैं आप केवल उन पीक लोड को कवर करने के लिए उपयोग नहीं कर रहे हैं।

रिलेशनल डेटाल समानांतर में पूर्ण पढ़ने / लिखने के लिए अधिक कठिन वस्तुओं में से एक हैं।

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