MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

NoSQL डेटाबेस की लड़ाई - MongoDB और CouchDB की तुलना करना

MongoDB और CouchDB दोनों दस्तावेज़-आधारित NoSQL डेटाबेस के प्रकार हैं। एक दस्तावेज़ डेटाबेस को mdocument store भी कहा जाता है, और वे आमतौर पर अर्ध-संरचित डेटा के दस्तावेज़ प्रारूप और इसके विस्तृत विवरण को संग्रहीत करने के लिए उपयोग किए जाते हैं। यह मास्टर स्कीमा को संदर्भित किए बिना प्रोग्राम बनाने और अपडेट करने की अनुमति देता है। मोबाइल एप्लिकेशन में सामग्री प्रबंधन और डेटा का प्रबंधन दो ऐसे क्षेत्र हैं जहां दस्तावेज़ संग्रह लागू किया जा सकता है।

MongoDB का अवलोकन

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

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

MongoDB की सामान्य विशेषताएं:

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

काउच डीबी का अवलोकन

काउचडीबी, एक अपाचे सॉफ्टवेयर फाउंडेशन उत्पाद और लोटस नोट्स से प्रेरित, एक ओपन-सोर्स दस्तावेज़-आधारित नोएसक्यूएल डेटाबेस भी है जो मुख्य रूप से आसान उपयोग पर केंद्रित है। यह एक एकल नोड डेटाबेस है, जो बिल्कुल अन्य डेटाबेस की तरह काम करता है। यह आम तौर पर सिंगल नोड इंस्टेंस से शुरू होता है लेकिन इसे क्लस्टर में मूल रूप से अपग्रेड किया जा सकता है। यह उपयोगकर्ता को कई सर्वरों या VMs पर एकल डेटाबेस चलाने की अनुमति देता है। CouchDB क्लस्टर सिंगल नोड CouchDB की तुलना में उच्च क्षमता और उपलब्धता प्रदान करता है। यह एक सामान्य प्रयोजन वाली भाषा, एरलांग का उपयोग करता है। MongoDB की तरह, यह भी जावास्क्रिप्ट का उपयोग करता है और मानचित्र/कम करता है। यह डेटा को तालिकाओं के बजाय दस्तावेज़ों के संग्रह के रूप में संग्रहीत करता है। अपडेट किया गया CouchDB लॉकलेस है, जिसका अर्थ है कि लिखने के दौरान डेटाबेस को लॉक करने की कोई आवश्यकता नहीं है। इस डेटाबेस में दस्तावेज़ गैर-JSON फ़ाइलों को संलग्न करने की क्षमता के साथ-साथ HTTP प्रोटोकॉल और JSON का भी उपयोग करते हैं। तो, कॉच डीबी किसी भी एप्लिकेशन या सॉफ़्टवेयर के साथ संगत है जो JSON प्रारूप का समर्थन करता है।

काउच डीबी की सामान्य विशेषताएं

  • एक CouchDB सर्वर नाम के डेटाबेस को होस्ट करता है, जो डेटाबेस में एक विशिष्ट नाम वाले दस्तावेज़ों को संग्रहीत करता है, और CouchDB डेटाबेस दस्तावेज़ों को पढ़ने और अपडेट करने (जोड़ने, संपादित करने, हटाने) के लिए एक RESTful HTTP API प्रदान करता है
  • CouchDB डेटा, अनुमति और कॉन्फ़िगरेशन को प्रबंधित करने के लिए एक ब्राउज़र आधारित GUI प्रदान करता है।
  • CouchDB प्रतिकृति का सबसे सरल रूप प्रदान करता है।
  • CouchDB प्रमाणीकरण और सत्र समर्थन की सुविधा देता है:एक वेब एप्लिकेशन की तरह एक सत्र कुकी के माध्यम से प्रमाणीकरण को खुला रखने के लिए।
  • CouchDB डेटाबेस-स्तरीय सुरक्षा प्रदान करता है जहाँ प्रति डेटाबेस अनुमतियाँ पाठकों और प्रशासकों में विभाजित की जाती हैं। पाठकों को कॉचडीबी डेटाबेस को पढ़ने और लिखने की अनुमति है।
  • CouchDB क्रिएटर को सत्यापित करने के लिए प्रमाणीकरण का उपयोग करके डेटाबेस में डाले गए डेटा को मान्य करता है और लॉगिन सत्र आईडी समान हैं।
चित्र 2:CouchDB आर्किटेक्चर

REST API का उपयोग डेटा लिखने और क्वेरी करने के लिए किया जाता है . यह दस्तावेज़ को पढ़ने, जोड़ने, संपादित करने और हटाने की सुविधा भी प्रदान करता है। यह MVCC कार्यान्वयन द्वारा BASE के बजाय ACID मॉडल का उपयोग करता है। जैसे MongoDB ऑफ़लाइन होने पर उपकरणों की प्रतिकृति का समर्थन करता है। यह एक विशेष प्रतिकृति मॉडल का उपयोग करता है जिसे अंतिम संगति कहा जाता है। डेटा के मामले में CouchDB अत्यधिक और गंभीर रूप से विश्वसनीय है। सिंगल-नोड डेटाबेस केवल एपेंड-ओनली क्रैश-प्रतिरोधी डेटा संरचना का उपयोग करते हैं, और एक मल्टीमोड या क्लस्टर डेटाबेस डेटा को अनावश्यक रूप से सहेज सकता है ताकि जब भी उपयोगकर्ता को इसकी आवश्यकता हो, इसे उपलब्ध कराया जा सके। CouchDB को बड़े समूहों के रूप में वैश्विक समूहों के रूप में मोबाइल उपकरणों के रूप में छोटे समूहों के रूप में बढ़ाया जा सकता है। किसी भी Android या iOS डिवाइस पर चलने की क्षमता CouchDB को अन्य डेटाबेस से अलग बनाती है।

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

काउच डीबी और मोंगोडीबी के बीच तुलना

तुलना सुविधा

CouchDB

MongoDB

डेटा मॉडल

यह दस्तावेज़-उन्मुख मॉडल का अनुसरण करता है, और डेटा JSON प्रारूप में प्रस्तुत किया जाता है।

यह दस्तावेज़-उन्मुख मॉडल का अनुसरण करता है, लेकिन डेटा BSON प्रारूप में प्रस्तुत किया जाता है।

इंटरफ़ेस

CouchDB एक HTTP/REST-आधारित इंटरफ़ेस का उपयोग करता है। यह बहुत सहज और बहुत अच्छी तरह से डिज़ाइन किया गया है।

MongoDB TCP/IP पर बाइनरी प्रोटोकॉल और कस्टम प्रोटोकॉल का उपयोग करता है।

ऑब्जेक्ट स्टोरेज

CouchDB में, डेटाबेस में दस्तावेज़ होते हैं।

MongoDB में, डेटाबेस में संग्रह होते हैं, और संग्रह में दस्तावेज़ होते हैं।

गति

यह पढ़ने की गति डेटाबेस के लिए महत्वपूर्ण है, MongoDB CouchDB से तेज है

MongoDB तेजी से पढ़ने की गति प्रदान करता है।

मोबाइल सपोर्ट

CouchDB को Apple iOS और Android उपकरणों पर चलाया जा सकता है, जो मोबाइल उपकरणों के लिए समर्थन प्रदान करता है।

कोई मोबाइल सहायता प्रदान नहीं की गई

आकार

डेटाबेस CouchDB के साथ बढ़ सकता है; मोंगोडीबी तेजी से विकास के लिए बेहतर अनुकूल है जब संरचना को शुरुआत से स्पष्ट रूप से परिभाषित नहीं किया जाता है।

अगर हमारे पास तेजी से बढ़ता हुआ डेटाबेस है, तो MongoDB बेहतर विकल्प है।

क्वेरी विधि

क्वेरी मैप-रिड्यूस फंक्शन का उपयोग करती हैं। हालांकि यह एक सुंदर समाधान हो सकता है, पारंपरिक SQL अनुभव वाले लोगों के लिए सीखना अधिक कठिन हो सकता है।

MongoDB मैप/रिड्यूस (जावास्क्रिप्ट) का अनुसरण करता है जो संग्रह + ऑब्जेक्ट-आधारित क्वेरी भाषा बनाता है। SQL ज्ञान वाले उपयोगकर्ताओं के लिए, MongoDB सीखना आसान है क्योंकि यह सिंटैक्स में करीब है।

प्रतिकृति

CouchDB कस्टम विरोध समाधान कार्यों के साथ मास्टर-मास्टर प्रतिकृति का समर्थन करता है।

MongoDB मास्टर-स्लेव प्रतिकृति का समर्थन करता है।

Concurrency

यह MVCC (मल्टी-वर्जन कंसुरेंसी कंट्रोल) का अनुसरण करता है।

अपडेट इन-प्लेस।

वरीयताएं

CouchDB उपलब्धता का पक्षधर है।

MongoDB एकरूपता का पक्षधर है।

प्रदर्शन संगति

CouchDB, MongoDB से अधिक सुरक्षित है।

MongoDB, डेटाबेस में संग्रह होते हैं और संग्रह में दस्तावेज़ होते हैं।

Consistency

CouchDB अंततः संगत है।

MongoDB दृढ़ता से संगत है।

इसमें लिखा है

यह एरलांग में लिखा गया है।

यह C++ में लिखा गया है।

विश्लेषण

यदि हमें एक ऐसे डेटाबेस की आवश्यकता है जो मोबाइल पर चलता हो, मास्टर-मास्टर प्रतिकृति, या एकल सर्वर स्थायित्व की आवश्यकता हो, तो CouchDB एक बढ़िया विकल्प है।

यदि हम अधिकतम थ्रूपुट की तलाश में हैं, या तेजी से बढ़ते डेटाबेस हैं, तो MongoDB जाने का रास्ता है।

CouchDB और MongoDB:बहुत अलग क्वेरीज़

CouchDB और MongDB दस्तावेज़-उन्मुख डेटा स्टोर हैं जो JSON दस्तावेज़ों के साथ काम करते हैं, लेकिन जब प्रश्नों की बात आती है, तो दोनों डेटाबेस अब अलग नहीं हो सकते। कॉच डीबी को पूर्व-परिभाषित विचारों की आवश्यकता होती है (जो अनिवार्य रूप से जावास्क्रिप्ट मैपरेडस फ़ंक्शन हैं) और मोंगोडीबी गतिशील-क्वेरी का समर्थन करता है (मूल रूप से हम सामान्य आरडीबीएमएस एड-हॉक एसक्यूएल प्रश्नों के लिए उपयोग किए जाते हैं)।

उदाहरण के लिए, ग्रूवी के RESTClient का उपयोग करके CouchDB में कुछ डेटा सम्मिलित करने के लिए और नीचे एक RESTful पोस्ट जारी करने के लिए:

import static groovyx.net.http.ContentType.JSON

import groovyx.net.http.RESTClient

 def client = new RESTClient("http://localhost:5498/")

response = client.put(path: "parking_tickets/1280002020",

  contentType: JSON,

  requestContentType:  JSON,

  body: [officer: "Micheal Jordan",

      location: "189 Berkely Road",

      vehicle_plate: "KL5800",

      offense: "Parked in no parking zone",

      date: "2020/02/01"])

किसी भी दस्तावेज़ को क्वेरी करने के लिए एक फ़ंक्शन का नमूना कोड, जिसकी अधिकारी संपत्ति "माइकल जॉर्डन" है:

function(doc) {

  if(doc.officer == "Micheal Jordan"){

emit(null, doc);

  }

}

जब हम उस दृश्य के नाम पर HTTP GET अनुरोध जारी करते हैं, तो हम नीचे दिए गए अनुसार कम से कम एक दस्तावेज़ की अपेक्षा कर सकते हैं:

response = client.get(path: "parking_tickets/_view/by_name/officer_grey",

     contentType: JSON, requestContentType: JSON)

assert response.data.total_rows == 1

response.data.rows.each{

   assert it.value.officer == "Micheal Jordan"

}

MongoDB ठीक उसी तरह काम करता है जैसे हम सामान्य डेटाबेस के साथ करते हैं:हम रनटाइम पर हमारे दिल की इच्छा के लिए क्वेरी कर सकते हैं।

मोंगोडीबी के मूल जावा ड्राइवर का उपयोग करके पार्किंग टिकट का एक ही उदाहरण सम्मिलित करना:

DBCollection coll = db.getCollection("parking_tickets");

BasicDBObject doc = new BasicDBObject();



doc.put("officer", "Micheal Jordan");

doc.put("location", "189 Berkely Road ");

doc.put("vehicle_plate", "KL5800");

//...

coll.insert(doc);

अधिकारी माइकल जॉर्डन द्वारा जारी किए गए MongoDB से किसी भी टिकट को पूछने के लिए केवल अधिकारी संपत्ति पर एक प्रश्न जारी करके:

BasicDBObject query = new BasicDBObject();

query.put("officer", "Micheal Jordan");

DBCursor cur = coll.find(query);

while (cur.hasNext()) {

   System.out.println(cur.next());

}

निष्कर्ष

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

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला आबादी एम्बेडेड

  2. मोंगोरेस्टोर, उल्का उत्पादन सर्वर से स्थानीय . तक

  3. MongoDB एक उप-दस्तावेज़ पर प्रत्येक कुंजी का कुल योग

  4. एक सरणी फ़ील्ड का मिलान करना जिसमें MongoDB में दिए गए सरणी का कोई भी संयोजन होता है

  5. MongoDB GROUP BY में HAVING करने का सही तरीका क्या है?