NoSQL और एक पारंपरिक RDBMS के बीच अंतर क्या हैं?


71

NoSQL और एक पारंपरिक RDBMS के बीच अंतर क्या हैं?

पिछले कुछ महीनों में, NoSQL तकनीकी समाचार में अक्सर उल्लेख किया गया है। एक पारंपरिक RDBMS के सापेक्ष इसकी सबसे महत्वपूर्ण विशेषताएं क्या हैं? मतभेद किस स्तर (भौतिक, तार्किक) में होते हैं?

NoSQL का उपयोग करने के लिए सबसे अच्छी जगह कहाँ हैं? क्यों?

जवाबों:


61

NoSQL का अर्थ है "न केवल SQL" और आमतौर पर इसका मतलब है कि डेटाबेस एक रिलेशनल डेटाबेस नहीं है, जो पिछले दशकों में बहुत लोकप्रिय रहा है।

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

सीएपी प्रमेय

वितरित प्रणाली के गुणों का वर्णन CAP प्रमेय द्वारा किया जा सकता है । तीन गुणों में से आप केवल अधिक से अधिक दो कर सकते हैं:

  • सी ओन्सिस्टेंसी
  • एक कमी
  • नेटवर्क पी आर्टिशनिंग के लिए सहिष्णुता

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

Google BigTable के साथ एक अलग दृष्टिकोण लेता है , जिसमें C और A गुण हैं।

अन्य NoSQL डेटाबेस

जैसा कि मैंने शुरुआत में लिखा था कि कई अन्य प्रकार के NoSQL डेटाबेस हैं, जो विभिन्न आवश्यकताओं के लिए डिज़ाइन किए गए हैं। उदाहरण के लिए Neo4j जैसे डेटाबेस, CouchDB जैसे दस्तावेज़ डेटाबेस और OrientDB जैसे मल्टीमॉडल / ऑब्जेक्ट डेटाबेस ।

अंत में मैं कहना चाहूंगा कि रिलेशनल डेटाबेस लोकप्रिय रहेंगे। वे बहुत लचीले और रखरखाव योग्य हैं। लेकिन वे हमेशा सबसे अच्छा विकल्प नहीं होते हैं।


1
अच्छा, संपूर्ण उत्तर।
TML

NoSQL का मतलब गैर-संबंधपरक नहीं है, इसका मतलब सिर्फ SQL DBMS के अलावा कुछ है।
nvogel

1
ऐसा लगता है कि हाल ही में ओ'रिली स्ट्रेटा कॉन्फ्रेंस में, मार्क मैडसेन ने " नो एसक्यूएल" की नई व्याख्या को डेटाबेस में अपने इतिहास में नो-टेशन में "न केवल एसक्यूएल" के रूप में चित्रित किया है। अब यह है: "नहीं, एसक्यूएल" ;-)
लुकास एडर

6
"न केवल" एक रेट्रोफिट था, प्रारंभिक NoSQL आंदोलन संबंधपरक डेटाबेस के खिलाफ स्पष्ट रूप से था। फिर उन्होंने असली दुनिया पर निशाना साधा।
जायस

22

NoSQL एक बहुत व्यापक शब्द है और आमतौर पर इसका अर्थ है "न केवल एसक्यूएल।" यह शब्द गैर-आरडीबीएमएस समुदाय के पक्ष से हट रहा है।

आप पाएंगे कि NoSQL डेटाबेस में कुछ सामान्य विशेषताएं हैं। उन्हें मोटे तौर पर कुछ श्रेणियों में विभाजित किया जा सकता है:

  • कुंजी / मूल्य भंडार
  • Bigtable प्रेरित डेटाबेस (Google Bigtable कागज पर आधारित)
  • डायनेमो प्रेरित डेटाबेस
  • वितरित डेटाबेस
  • दस्तावेज़ डेटाबेस

यह एक बहुत बड़ा सवाल है, लेकिन वितरित डेटाबेस के इस सर्वेक्षण में इसका काफी अच्छा जवाब दिया गया है ।

एक छोटे से उत्तर के लिए:

NoSQL डेटाबेस कुछ अन्य लाभों को प्राप्त करने के लिए ACID के विभिन्न भागों के साथ वितरण कर सकते हैं - विभाजन सहिष्णुता, प्रदर्शन, लोड वितरित करने के लिए, या नए हार्डवेयर के साथ रैखिक पैमाने पर करने के लिए।

जहां तक ​​उन्हें कब इस्तेमाल करना है - यह पूरी तरह से आपके एप्लिकेशन की जरूरतों पर निर्भर करता है।


12

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

हालाँकि, इस सभी लचीलेपन के लिए कुछ ट्रेड ऑफ़ हैं: SQL सर्वर, Oracle, DB2, MySQL, आदि जैसे RDBMS सिस्टम की तुलना में NoSQL डेटाबेस में बहुत ही कम फ़ीचर हैं। कोई सर्विस ब्रोकर, लेन-देन लॉगिंग, ETL पैकेज आदि नहीं है।

NoSQL कुछ ऐसा नहीं है जो नया हो। यह वास्तव में लगभग 50-60 वर्षों से है। पीछे तो इसे COBOL कहा जाता था। वही सटीक विचार, बस एक अलग समूह इसके साथ आया था।


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

3
उन अद्यतनों को करते समय यह कैसे संगामिति को संभालता है? क्या कोई वितरित प्रकार का लेनदेन है जो उनके बीच चला जाता है, या हाथ से पहले ACKed लिखा जाता है और सर्वर पृष्ठभूमि में बाकी को संभालता है?
मन्दिनी

Concurrency पूरी तरह से कार्यान्वयन पर निर्भर करता है। रियाक कंसिस्टेंट सुनिश्चित करने के लिए वेक्टर घड़ियों का उपयोग करता है और संघर्ष की स्थिति में लिखता है कि उन्हें रिज़ॉल्यूशन के लिए कॉलिंग एप्लिकेशन पर लौटाया जा सकता है। अन्य लोग अंतिम लेखन जीत का उपयोग करते हैं।
यिर्मयाह पेशाका

जहां तक ​​राइट पावती है - ज्यादातर मामलों में, राइट्स को स्वीकार नहीं किया जाता है जब तक कि ओएस राइट को स्वीकार नहीं करता है। आप यहां तक ​​कह सकते हैं कि टिकाऊ लेखन की पावती का अनुरोध करने का मतलब है कि बिट्स वास्तव में ओएस बफर में होने के बजाय डिस्क में फ्लश हो जाते हैं। MongoDB स्वीकार करता है कि डिफ़ॉल्ट रूप से मेमोरी को लिखता है लेकिन डिस्क पर लिखने की पावती की आवश्यकता के लिए कॉन्फ़िगर किया जा सकता है। प्रतिकृति को हर उत्पाद के साथ अलग तरीके से संभाला जाता है। Hadoop के साथ, क्लाइंट A को सर्वर को लिखता है, जो B को लिखता है, जो C को लिखता है। C एक बार जब उत्तर लिखता है तो पूरा हो जाता है और क्लाइंट को एक राइट मिलता है।
यिर्मयाह पेशका

उस स्थिति में मैं सही हूं। मैंने गलत स्टेटमेंट निकाल दिया है। क्या मैंने फ़ुबर को कुछ और कहा?
बजकर

6

मूल रूप से रिलेशनल सेटअप के साथ प्राथमिक और विदेशी कुंजी के साथ वितरण, और अतिरिक्त ओवरहेड के साथ लेनदेन सुरक्षा को ध्यान में रखते हुए, अक्सर आपको प्रदर्शन में अत्यधिक वृद्धि होती है। हालाँकि यह नए डेटाबेस / डेटास्टोर्स के लिए अद्वितीय नहीं है, जैसे कि MySQL को परतों को दरकिनार करके "NoSQL स्तर" पर प्रदर्शन करने के लिए ट्यून किया गया है।

संक्षेप में, आप अक्सर प्रभावशाली प्रदर्शन प्राप्त कर सकते हैं यदि आप संभवतः डेटा खोने का जोखिम लेने के साथ ठीक हैं। अधिकांश NoSQL सिस्टम ऐसा करते हैं। उदाहरण के लिए, जब सुविधाजनक हो, तो MongoDB चरणों को बदल दिया जाता है। डेटा स्वयं सुरक्षित और लेन-देन सुरक्षित है, लेकिन वाष्पशील भंडारण (मेमोरी) में रखा गया है। यदि आप शक्ति खो देते हैं तो आप 100% सुनिश्चित नहीं हो सकते हैं कि आपने डेटा नहीं खोया है, या आपके पास दूषित डेटा नहीं है।

यह सुरक्षा और प्रदर्शन के बीच का व्यापार है।


5

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

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


तथ्य यह है कि इस सवाल का थोक WP में जाकर जवाब दिया जा सकता है मुझे मेरी ठोड़ी को रगड़ता है क्योंकि मैं यहां उत्तरों का चिंतन करता हूं। मुझे लगता है कि यह थोड़ा "फिलर प्रश्न" है, लेकिन वास्तव में अभी हमारे पास यही है।
jcolebrand

1
यहाँ महत्वपूर्ण नोट यह है कि डेटाबेस / सर्वर अवसंरचना में एसशेकिंग संबंध (विदेशी कुंजी) समर्थन डेटाबेस / सर्वर को लोड और लॉक-मैनेजमेंट ओवरहेड से संदर्भित करता है जो कि संदर्भात्मक अखंडता बनाए रखता है। इसका परिणाम, व्यापार बंद, यह है कि संदर्भात्मक अखंडता, संगति और अन्य ACID चिंताओं को फिर अनुप्रयोगों के लिए धकेल दिया जाता है। कई एप्लिकेशन इसके द्वारा सीमित होने के बजाय इससे लाभान्वित होते हैं। (कुछ एप्लिकेशन क्लाइंट / सर्वर मॉडल में wedged किया जाना है)।
जिम डेनिस

0

मैंने MongoDB NoSQL डेटाबेस और Oracle पर भारी काम किया है।

योजना

SQL डेटाबेस संरचित डेटा को संग्रहीत करने के लिए अपने स्वयं के पूर्वनिर्धारित स्कीमा है।

NoSQL डेटाबेस में, कोई पूर्वनिर्धारित स्कीमा नहीं है, यहां स्कीमा डेटा तत्वों के आधार पर सबसे गतिशील तत्व है।

अनुमापकता

SQL डेटाबेस लंबवत रूप से स्केलेबल हैं, जिसका अर्थ है कि यदि हम SQL बेस डेटाबेस को स्केल करना चाहते हैं, तो हमें हार्डवेयर को बढ़ावा देना होगा, जिस पर DBMS सिस्टम स्थापित है। यह वह जगह है जहां यह कभी-कभी स्केलेबिलिटी की सीमा के लिए जाता है।

NoSQL डेटाबेस क्षैतिज रूप से स्केलेबल हैं, इसका मतलब है कि अगर हम इसे स्केल करना चाहते हैं, तो हमें अपनी स्वयं की आवश्यकता और आवश्यक शक्ति के आधार पर अधिक नोड्स जोड़ने और वितरण नेटवर्क बनाने की आवश्यकता है। यह है कि वे डेटाबेस पर लोड कैसे कम करते हैं

डेटा की पुनःप्राप्ति

SQL आधारित डेटाबेस में, डेटा को परिभाषित करने और हेरफेर करने के लिए हम SQL (संरचित क्वेरी भाषा) का उपयोग कर सकते हैं, जो आजकल बहुत शक्तिशाली है।

NoSQL डेटाबेस के संदर्भ में, प्रश्न संग्रह और दस्तावेजों पर ध्यान केंद्रित करते हैं। कभी-कभी इसे UnQL (अनस्ट्रक्चर्ड क्वेरी लैंग्वेज) कहा जाता है। यह अभी भी विकास के चरण में है, इसलिए यह विक्रेता से लेकर NoSQL डेटाबेस के विक्रेता तक भिन्न होता है।

मुख्य अंतरों के बारे में अधिक जानकारी के लिए, मेरा ब्लॉग: SQL और NoSQL डेटाबेस के बीच अंतर

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