NoSql बनाम संबंधपरक डेटाबेस


जवाबों:


123

सभी डेटा संबंधपरक नहीं हैं। उन स्थितियों के लिए, NoSQL सहायक हो सकता है।

उस के साथ, NoSQL "न केवल SQL" के लिए खड़ा है। यह SQL खटखटाने या इसे दबाने का इरादा नहीं है।

SQL के कई बहुत बड़े फायदे हैं:

  1. मजबूत गणितीय आधार।
  2. घोषणात्मक वाक्यविन्यास।
  3. संरचित क्वेरी भाषा (SQL) में एक प्रसिद्ध भाषा।

वे दूर नहीं गए हैं।

यह / या तर्क के रूप में इस बारे में सोचने की गलती है। NoSQL एक विकल्प है जिसे लोगों को विचार करने की आवश्यकता है कि यह कब फिट होता है।

दस्तावेज़ CouchDB जैसे गैर-संबंधपरक डेटाबेस में संग्रहीत किए जा सकते हैं।

हो सकता है कि पढ़ने के लिए इस इच्छा मदद करते हैं।


10
क्या आप गैर-संबंधपरक डेटा के कुछ उदाहरण दे सकते हैं?
user496949

7
दस्तावेज़ और चित्र SQL सर्वर और Oracle की तरह RDBMS के अंदर भी संग्रहीत किए जा सकते हैं? फिर क्यों NoSQL?
user496949

2
अर्ध-संरचित डेटा एक ऐसा वर्ग है। इसमें XML, ईमेल, JSON आदि शामिल हैं। इस पर विकिपीडिया पेज देखें। सामान्य नियम यह है कि संरचना वहां है, लेकिन शिथिल रूप से परिभाषित और गतिशील रूप से एक्स्टेंसिबल है (बाद वाले संबंध मॉडल के साथ वर्ग में आते हैं - और जबकि यह मॉडल के लिए असंभव नहीं है, यह निश्चित रूप से बोझिल है)। एक अन्य वर्ग "प्राकृतिक डेटा" है: एक उपन्यास, एक छवि, जिसमें कोई मेटा-डेटा संलग्न नहीं है।
मैं

2
ठीक है, तुम नहीं कर सकते SELECT blob FROM images WHERE blob CONTAINS('red car')। इसलिए जब आप डेटाबेस में डेटा को स्टोर कर सकते हैं, तो आप मेटाडेटा को संलग्न किए बिना इसे नहीं खोज सकते। RDBMS सिस्टम में पूर्ण-पाठ-खोज मॉड्यूल कुछ अर्ध-संरचनात्मक अंतराल को पुल करता है।
मैं

1
@duffymo: दस्तावेज़ "गैर-संबंधपरक" नहीं हैं। दस्तावेज़ अक्सर SQL DBMS में संग्रहीत किए जाते हैं और आपको उसके लिए NOSQL DBMS की आवश्यकता नहीं होती है। वास्तव में NOSQL डेटाबेस अक्सर डेटा मॉडल का उपयोग करते हैं जो रिलेशनल मॉडल की तुलना में कम सामान्य और अनुप्रयोग में अधिक सीमित होते हैं। उदाहरण के लिए डेटाबेस। संग्रहीत किए जा रहे डेटा का प्रकार NOSQL के किसी भी लाभ की व्याख्या नहीं करता है।
nvogel

98

इतिहास ऐसा लगता है:

  1. Google को अपने उल्टे खोज इंडेक्स के लिए स्टोरेज लेयर की आवश्यकता होती है। उनका मानना ​​है कि एक पारंपरिक RDBMS इसे काटने नहीं जा रहा है। इसलिए वे अपने GFS फाइल सिस्टम के शीर्ष पर एक NoSQL डेटा स्टोर, BigTable को लागू करते हैं। प्रमुख हिस्सा यह है कि हजारों सस्ते कमोडिटी हार्डवेयर मशीनें गति और अतिरेक प्रदान करती हैं।

  2. बाकी सभी को पता चलता है कि Google ने अभी क्या किया।

  3. ब्रूवर्स कैप प्रमेय सिद्ध है। उपयोग के सभी RDBMS सिस्टम CA सिस्टम हैं। लोग सीपी और एपी सिस्टम के साथ भी खेलना शुरू करते हैं। के / वी स्टोर काफी सरल हैं, इसलिए वे अनुसंधान के लिए प्राथमिक वाहन हैं।

  4. सॉफ्टवेयर-ए-इन-सर्विस सिस्टम सामान्य रूप से एसक्यूएल जैसा स्टोर प्रदान नहीं करता है। इसलिए, लोगों को NoSQL प्रकार की दुकानों में अधिक रुचि है।

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

सी - संगति
ए - उपलब्धता
पी - विभाजन सहिष्णुता
के / वी - कुंजी / मूल्य


10
CAP, CP, AP, K / V क्या है?
ज्ञातव्य 14

3
विकिपीडिया पर CAP प्रमेय को देखें। सीए और सीपी वहां से उपजा। K / V कुंजी / मान के लिए छोटा है, मानों में कुंजी से (वितरित) परिमित मानचित्रण।
मैं

" बाकी सभी को पता चलता है कि Google ने अभी क्या किया है। " मुझे एक स्कॉटिश जवाब की तरह लगता है (उर्फ CRAP नहीं)।
रफिन

38

NoSQL, RDBMS की तुलना में निम्न कारणों / NoSQL की उचितताओं के कारण बेहतर है

  1. यह अर्ध-संरचित डेटा और अस्थिर डेटा का समर्थन करता है
  2. इसमें स्कीमा नहीं है
  3. पढ़ें / लिखें थ्रूपुट बहुत अधिक है
  4. क्षैतिज मापनीयता आसानी से प्राप्त की जा सकती है
  5. टेरा बाइट्स और पेटा बाइट्स के संस्करणों में बिगडाटा का समर्थन करेंगे
  6. बिगडेट के शीर्ष पर विश्लेषणात्मक उपकरणों के लिए अच्छा समर्थन प्रदान करता है
  7. सस्ते हार्डवेयर मशीनों में होस्ट किया जा सकता है
  8. प्रश्नों के प्रदर्शन को बढ़ाने के लिए इन-मेमोरी कैशिंग विकल्प उपलब्ध है
  9. डेवलपर्स के लिए तेज़ विकास जीवन चक्र

संपादित करें:

"क्यों RDBMS स्केल नहीं कर सकते हैं" का जवाब देने के लिए, कृपया RDBMS ओवरहेड्स pdf पर नजर डालें, जो स्टावरोस हारिजोपोलस, डैनियल जे। अबादी, सैमुअल मैडेन और माइकल स्टोनब्रोकर द्वारा लिखित है।

आरडीबीएमएस की टेराबाइट्स और पेटा बाइट्स के विशाल डेटा वॉल्यूम को संभालने में चुनौतियां हैं । यहां तक ​​कि अगर आपके पास स्वतंत्र / सस्ती डिस्क (RAID) और डेटा श्रेडिंग के निरर्थक ऐरे हैं, तो यह डेटा की बड़ी मात्रा के लिए अच्छी तरह से पैमाने पर नहीं है। आपको बहुत महंगा हार्डवेयर चाहिए।

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

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

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

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

इसका मतलब यह नहीं है कि हमें SQL पर NoSQL का उपयोग करना होगा।

फिर भी, RDBMS के निम्नलिखित कारणों / गुणों के लिए RDBMS NoSQL से बेहतर है

  1. ACID गुणों के साथ लेन-देन - परमाणु, संगति, अलगाव और स्थायित्व
  2. लिखित / पढ़ी जा रही डेटा की सशक्त योजनाओं का पालन
  3. वास्तविक समय क्वेरी प्रबंधन (डेटा आकार के मामले में <10 तेरा बाइट्स)
  4. क्लॉस द्वारा शामिल होने और समूह में शामिल जटिल प्रश्नों का निष्पादन

हमें व्यापार के मामले और आवश्यकताओं के आधार पर RDBMS (SQL) और NoSQL (केवल SQL) का उपयोग नहीं करना है


2
यह ध्यान देने योग्य है कि कुछ NoSQL डेटाबेस ACID लेनदेन का समर्थन करते हैं।
डेव कैसल

15

संबंधपरक डेटाबेस मॉडल पर NOSQL का कोई विशेष लाभ नहीं है। एनओएसक्यूएल वर्तमान एसक्यूएल डीबीएमएस की कुछ सीमाओं को संबोधित करता है लेकिन यह पिछले डेटा मॉडल की तुलना में किसी भी मौलिक नई क्षमताओं का मतलब नहीं है।

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


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

4

RDBMS संबंध पर अधिक ध्यान केंद्रित करते हैं और NoSQL भंडारण पर अधिक ध्यान केंद्रित करते हैं।

जब आपका RDBMS बाधाओं पर पहुंचता है, तो आप NoSQL का उपयोग करने पर विचार कर सकते हैं । NoSQL RDBMS को अधिक लचीला बनाता है ।


4

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


3

यदि आपको उच्च प्रदर्शन के साथ बड़ी मात्रा में डेटा संसाधित करने की आवश्यकता है

या

यदि डेटा मॉडल पूर्व निर्धारित नहीं है

फिर

NoSQL डेटाबेस एक बेहतर विकल्प है।


2

बस ऊपर दी गई सभी जानकारी को जोड़ना

NoSql लाभ:

1) अगर आप स्कीमा-लेस और ऑब्जेक्ट ओरिएंटेड आर्किटेक्चर के समर्थन के कारण तेजी से उत्पादन करना चाहते हैं तो NoSQL अच्छा है।

2) NoSql db के अंत में सुसंगत है जिसका अर्थ है कि सरल भाषा में वे RDBMS के मामले में डेटा (दस्तावेजों) पर कोई ताला नहीं देंगे और इसका क्या मतलब है कि डेटा का नवीनतम स्नैपशॉट हमेशा उपलब्ध है और इस प्रकार आपके आवेदन की विलंबता में वृद्धि होती है ।

3) यह डेटा (दस्तावेजों) के स्नैपशॉट को बनाए रखने और बनाने के लिए MVCC (मल्टी व्यू कॉन्सिब्लिटी कंट्रोल) रणनीति का उपयोग करता है।

4) यदि आप अनुक्रमित डेटा रखना चाहते हैं, तो आप वह दृश्य बना सकते हैं जो आपके द्वारा प्रदत्त दृश्य परिभाषा द्वारा डेटा को स्वचालित रूप से अनुक्रमित करेगा।

NoSql नुकसान:

1) यह निश्चित रूप से बड़े भारी लेनदेन अनुप्रयोगों के लिए उपयुक्त नहीं है क्योंकि यह अंततः सुसंगत है और ACID गुणों का समर्थन नहीं करता है।

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


1

से mongodb.com :

NoSQL डेटाबेस चार मुख्य क्षेत्रों में पुराने, संबंधपरक प्रौद्योगिकी से भिन्न होते हैं:

डेटा मॉडल : एक NoSQL डेटाबेस आपको स्कीमा को परिभाषित करने के बिना पहले एक एप्लिकेशन बनाने देता है रिलेशनल डेटाबेस के विपरीत जो आपको सिस्टम में कोई भी डेटा जोड़ने से पहले आपके स्कीमा को परिभाषित करता है। कोई पूर्वनिर्धारित स्कीमा NoSQL डेटाबेस को आपके डेटा और आवश्यकताओं को बदलने के रूप में अद्यतन करने के लिए बहुत आसान नहीं बनाता है।

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

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

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

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