जब MongoDB पर CouchDB का उपयोग करें और इसके विपरीत


637

मैं इन दो NoSQL डेटाबेस के बीच फंस गया हूं।

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

इसलिए उपयोगकर्ता कॉलम और पंक्तियों के साथ टेबल बना सकते हैं। मुझे लगता है कि या तो MongoDB या CouchDB इसके लिए अच्छा होगा, लेकिन मुझे यकीन नहीं है कि कौन सा है। मुझे कुशल पेजिंग की भी आवश्यकता होगी।


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

45
काश वे इस वेबसाइट में कार्यक्षमता को जोड़ते, जहां हम "अपवोट" या "डाउनवोट" कर सकते थे, इस कारण को इस प्रश्न के "ऑफ-टॉपिक" के रूप में दिया गया, जो इस प्रकार के प्रश्नों को "विषय पर" वापस लाने में मदद कर सकता है।
संजय

9
++ यह मेरे लिए स्पष्ट नहीं है कि यह विषय क्यों है। सवाल करता है स्पष्ट उद्देश्य जवाब - ओपी राय के लिए, लेकिन इन दोनों प्रणालियों के बारे में उद्देश्य जानकारी के लिए पूछ नहीं है। user799188 ने एक महान उद्देश्यपूर्ण उत्तर प्रदान किया।
user48956

3
मुझे लगता है कि प्रवेशकर्ता केवल प्रश्न को देखते हैं यदि इसमें किसी भी प्रकार का कोड है और इस तरह की जानकारी नहीं मांगी जा रही है .. Btw आप हमेशा प्रश्न को फिर से खोलने के लिए वोट कर सकते हैं।
तरुण

11
सवाल फिर से खोला। आपका स्वागत है, सब लोग ...
एलेक्सिस डुफ्रेनॉय

जवाबों:


523

C, A & P (संगति, उपलब्धता और विभाजन सहिष्णुता) में से कौन सा 2 आपके लिए अधिक महत्वपूर्ण हैं? त्वरित संदर्भ, NoSQL सिस्टम के लिए विजुअल गाइड

  • MongodB: संगति और विभाजन सहिष्णुता
  • काउचडीबी: उपलब्धता और विभाजन सहिष्णुता

एक ब्लॉग पोस्ट, Cassandra बनाम MongoDB बनाम CouchDB बनाम Redis बनाम Riak बनाम HBase बनाम मेम्बेस बनाम Neo4j तुलना में प्रत्येक NoSQL डेटाबेस के लिए ' सर्वश्रेष्ठ उपयोग ' परिदृश्य हैं। लिंक का हवाला देते हुए,

  • MongoDB: यदि आपको गतिशील प्रश्नों की आवश्यकता है। यदि आप अनुक्रमित को परिभाषित करना पसंद करते हैं, तो कार्यों को मैप / कम नहीं करें। यदि आपको बड़े DB पर अच्छे प्रदर्शन की आवश्यकता है। यदि आप CouchDB चाहते थे, लेकिन आपका डेटा बहुत अधिक बदल जाता है, डिस्क को भरना।
  • काउचडीबी: संचय के लिए, कभी-कभार डेटा बदलने के लिए, जिस पर पूर्व-निर्धारित क्वेरी चलनी होती हैं। वे स्थान जहाँ संस्करण बनाना महत्वपूर्ण है।

हाल ही में (फरवरी 2012) और रियाद कल्ला द्वारा अधिक व्यापक तुलना ,

  • MongoDB: केवल मास्टर-दास प्रतिकृति
  • CouchDB: मास्टर-मास्टर प्रतिकृति

एक ब्लॉग पोस्ट (अक्टूबर 2011) किसी ने दोनों की कोशिश की, A MongoDB लड़के सीखता है CouchDB CouchDB के पेजिंग के रूप में उपयोगी नहीं है पर टिप्पणी की।

क्रिस्टीना चोडोरो द्वारा एक दिनांकित (जून 2009) बेंचमार्क ( MongoDB के पीछे टीम का हिस्सा ),

मैं MongoDB के लिए जाऊंगा।

आशा है ये मदद करेगा।


8
मैं जो समझता हूं कि MongoDB किसी भी तरह से सुसंगत नहीं है: ivoras.sharanet.org/blog/tree/…
sheerun

2
समय के लिए अच्छी जानकारी है, लेकिन यह वास्तव में पुराना है ... बहुत कुछ बदल गया है (मोंगो के लिए रीस्ट इंटरफेस सहित)।
rICh

4
मुझे लगता है कि यह थोड़ा भ्रामक हो सकता है, लेकिन काउचडब में संस्करण एक तर्क नहीं है। काउचडब द्वारा उपयोग की जाने वाली वर्जनिंग स्कीम का उपयोग प्रति वर्जन के रूप में नहीं किया जाना चाहिए। इसका उपयोग विभाजन को संभालने के लिए किया जाता है। एक डेटाबेस संघनन के दौरान, संशोधन वास्तव में हटाए गए तरीके से हटा दिए जाएंगे। और डेटाबेस में केवल रिवाइंड चेन ही रहनी चाहिए। यदि आप couchdb में संस्करणों को संभालना चाहते हैं, तो इसे वैसे ही किया जाना चाहिए जैसे कि यह mongodb में किया जा सकता है।
Lo15c Faure-Lacroix

2
मैं इस सूची में शामिल करूंगा कि couchdb में स्व-निहित वेब अनुप्रयोग हो सकते हैं। जैसा कि काउचडब में वास्तव में एक वेबसर्वर है।
Lo15c Faure-Lacroix

41
मैं एक गलत जवाब के लिए 332 वोटों से हैरान हूं। MongoDB डिफ़ॉल्ट रूप से CP है और CouchDB AP stackoverflow.com/questions/11292215/… है
adnan kamili

219

सब से ऊपर के उत्तर कहानी को जटिल बनाते हैं।

  1. यदि आपके पास एक मोबाइल घटक होने की योजना है, या ऑफ़लाइन काम करने के लिए डेस्कटॉप उपयोगकर्ताओं की आवश्यकता है और फिर अपने काम को उस सर्वर से सिंक करें जिसे आपको CouchDB की आवश्यकता है।
  2. यदि आपका कोड केवल सर्वर पर चलेगा तो MongoDB के साथ जाएं

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


18
संक्षिप्त, वे जिस तरह से मुझे पसंद करते हैं।
एली

मुझे इस तरह से सरल गैर-अति-तकनीकी उत्तर पसंद हैं। धन्यवाद!

यह उत्तर नाखूनों के लिए यह उन मोबाइल के लिए है, जो मोबाइल, ऑफलाइन और सिंक के लिए देख रहे हैं! धन्यवाद
एरिक कप्लून

जब मैंने "मोबाइल डिवाइस पर प्रतिकृति" पढ़ा तो मुझे हंसी आई कि आपका डेटा कितना कम है?
डेनियल डब्ल्यू।

3
"lol आपका डेटा कितना कम है?" - यह वास्तव में एक बात है? मैं सीडीबी चुन सकता हूं क्योंकि मेरा डेटा बड़ा है - या मैं इसे चुन सकता हूं क्योंकि इसमें विकल्पों की तुलना में बेहतर प्रतिकृति है। इस मामले में हम डेटासेट को लगभग 100Mb-200Mb प्रति डिवाइस पर फ़िल्टर करते हैं। क्या यह गलत बात है?
इवान मेकपीस

62

बहुत पुराना सवाल है, लेकिन यह Google के शीर्ष पर है और मुझे यहां मेरे द्वारा देखे गए उत्तर पसंद नहीं हैं।

CouchApps को विकसित करने की क्षमता की तुलना में Couchdb के लिए बहुत कुछ है। ज्यादातर लोग काउचडब का उपयोग शास्त्रीय 3-स्तरीय वेब वास्तुकला में करते हैं।

व्यवहार में ज्यादातर लोगों के लिए निर्णायक कारक यह तथ्य होगा कि MongoDb सिंटैक्स की तरह SQL के साथ तदर्थ क्वेरी की अनुमति देता है जबकि CouchDb नहीं है (आपको नक्शे बनाने / विचार कम करने की अनुमति मिली है जो इन विचारों को बनाते हुए भी कुछ लोगों को बंद कर देता है। तेजी से अनुप्रयोग विकास के अनुकूल है - वे संग्रहीत प्रक्रियाओं के साथ कुछ नहीं करना है)।

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

एक बहुत ही महत्वपूर्ण बात जिसका किसी ने भी उल्लेख नहीं किया है वह यह है कि काउचडब बी-ट्री इंडेक्स पर निर्भर करता है। इसका मतलब है कि चाहे आपके पास 1 "पंक्ति" या 20 बिलियन हों, क्वेरी का समय हमेशा 10ms से नीचे रहेगा। यह एक गेम चेंजर है जो काउचडब को कम-विलंबता और रीड-फ्रेंडली डेटाबेस बनाता है, और इसे वास्तव में अनदेखा नहीं किया जाना चाहिए।

उचित और संपूर्ण होने के लिए MongoDb का काउचडब पर होने वाला लाभ टूलींग और विपणन है। उनके पास सभी प्रमुख भाषाओं और प्लेटफार्मों के लिए प्रथम श्रेणी के नागरिक उपकरण हैं जो ऑन-बोर्डिंग को आसान बनाते हैं और यह उनके एडहॉक क्वेरी में जोड़ा गया SQL से संक्रमण को और भी आसान बनाता है।

CouchDb में टूलिंग का यह स्तर नहीं है - भले ही आज कई लाइब्रेरी उपलब्ध हैं - लेकिन CouchDb को HTTP API के रूप में उजागर किया गया है और इसलिए इसके साथ बात करने के लिए अपनी पसंदीदा भाषा में रैपर बनाना काफी आसान है। मैं व्यक्तिगत रूप से इस दृष्टिकोण को पसंद करता हूं क्योंकि यह ब्लोट से बचता है और आपको केवल वही लेने की अनुमति देता है जो आप चाहते हैं (इंटरफ़ेस अलगाव सिद्धांत)।

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

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

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


12
अपडेट २०१६: सितम्बर २०१६ में जारी २.० संस्करण के बाद से, काउचडब आउट-ऑफ-द-बॉक्स :)
tobiak777

1
CouchDb relies on b-tree indexes. This means that whether you have 1 "row" or 20 billions, the querying time will always remain below 10ms.यह लगभग सभी डेटाबेस का सच नहीं है? इस तरह से यह अन्यथा निहित है।
शेल्वकु

38

यह सवाल खुद से पूछें? और आप अपना DB चयन तय करेंगे।

  1. क्या आपको मास्टर-मास्टर की आवश्यकता है ? फिर काउचडीबी। मुख्य रूप से काउचडीबी मास्टर-मास्टर प्रतिकृति का समर्थन करता है जो नोड्स को लंबे समय तक डिस्कनेक्ट होने की आशंका करता है। MongoDB उस माहौल में अच्छा नहीं करेगा।
  2. क्या आपको MAXIMUM R / W थ्रूपुट की आवश्यकता है ? फिर MongoDB
  3. क्या आपको अंतिम एकल-सर्वर स्थायित्व की आवश्यकता है क्योंकि आप केवल एक ही डीबी सर्वर रखने जा रहे हैं? फिर काउचडीबी।
  4. क्या आप एक सामान्य डेटा सेट को स्टोर कर रहे हैं जो कि पागल थ्रूपुट को बनाए रखते हुए तेज करने की आवश्यकता है? फिर MongoDB।
  5. क्या आपको डेटा की मजबूत स्थिरता की आवश्यकता है ? फिर MongoDB।
  6. क्या आपको डेटाबेस की उच्च उपलब्धता की आवश्यकता है? फिर काउचडीबी।
  7. क्या आप मल्टी डेटाबेस और मल्टी टेबल / कलेक्शन की उम्मीद कर रहे हैं ? फिर MongoDB
  8. आपके पास एक मोबाइल ऐप ऑफ़लाइन उपयोगकर्ता है और अपने गतिविधि डेटा को सर्वर में सिंक करना चाहते हैं? फिर आपको CouchDB की आवश्यकता है।
  9. क्या आपको क्वेरी इंजन की बड़ी विविधता की आवश्यकता है ? फिर MongoDB
  10. क्या आपको DB का उपयोग करने के लिए बड़े समुदाय की आवश्यकता है ? फिर MongoDB

# 9 CouchDB और MongoDB के बीच CouchDB 2.x के बीच एक आभासी टाई है।
फ्लिमेजी

27

मैं उस लेख में पाए गए उत्तरों को संक्षेप में प्रस्तुत करता हूं:

http://www.quora.com/How-does-MongoDB-compare-to-CouchDB-What-are-the-advantages-and-disadvantages-of-each

MongoDB: बेहतर क्वेरी, BSON में डेटा स्टोरेज (तेज पहुंच), बेहतर डेटा संगति, कई संग्रह

CouchDB: बेहतर प्रतिकृति, मास्टर प्रतिकृति और संघर्ष समाधान के लिए मास्टर के साथ, JSON में डेटा भंडारण (मानव-पठनीय, REST सेवाओं के माध्यम से बेहतर पहुंच), नक्शे-कम के माध्यम से क्वेरी।

तो निष्कर्ष में, MongoDB तेज है, CouchDB अधिक सुरक्षित है।

इसके अलावा: http://nosql.mypopescu.com/post/298557551/couchdb-vs-pongodb


7
उपयोगी उत्तर, लेकिन निष्कर्ष पसंद करना कठिन है।
एरिक कपलुन

"कठिन पसंद" से आपका क्या अभिप्राय है?
एलेक्सिस डुफ्रेनॉय

23

MongoDB में विरल अनूठे अनुक्रमों के साथ एक मुद्दे के बारे में पता होना। मैंने इसे मारा है और यह वर्कअराउंड के लिए बेहद बोझिल है।

समस्या यह है - आपके पास एक फ़ील्ड है, जो वर्तमान में अद्वितीय है और आप उन सभी ऑब्जेक्ट्स को ढूंढना चाहते हैं जहाँ फ़ील्ड अनुपस्थित है। मोंगो में जिस तरह से अनोखे इंडेक्स लागू किए जाते हैं, वह यह है कि जिन वस्तुओं में वह फील्ड गायब है, वे इंडेक्स में बिल्कुल भी नहीं हैं - उन्हें उस फील्ड की क्वेरी द्वारा पुनर्प्राप्त नहीं किया जा सकता है - {$exists: false}बस काम नहीं करता है।

एकमात्र समाधान जो मैं लेकर आया हूं, इसमें मूल्यों का एक विशेष अशक्त परिवार है, जहां एक खाली मूल्य का अनुवाद एक विशेष उपसर्ग (जैसे नल :) से किया जाता है, जिसे एक यूआईडी के लिए संक्षिप्त किया जाता है। यह एक वास्तविक सिरदर्द है, क्योंकि लिखने / पढ़ने / पढ़ने के दौरान खाली मूल्यों से / में बदलने का ध्यान रखना पड़ता है। एक प्रमुख उपद्रव।

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

BTW, अगर किसी को विरल अद्वितीय सूचकांक समस्या का वर्णन करने वाले संबंधित मानगो मुद्दे की लिंक पता है - कृपया साझा करें।


3
मुझे खेद है, लेकिन मुझे इस बात का अहसास है कि यह एक अच्छा विचार नहीं है और इसकी भावना को मैंने अनदेखा नहीं करना सीखा है
उत्सुकता

8
खैर, मैं एक भावना के साथ बहस नहीं कर सकता। मुझे पता है कि मुझे वैकल्पिक क्षेत्रों की वजह से अद्वितीय अनुक्रमितों की आवश्यकता थी, जो वर्तमान में अद्वितीय हैं।
मार्क

37
मैं समझता हूं कि आपके पास एक वास्तविक उपयोग-मामला है जो इस मुद्दे का वर्णन करता है, लेकिन मेरे आंत के बारे में क्या?
Chev

14
मुझे नहीं पता। इसके बारे में क्या है?
मार्क

2
ROTFL। +1 एलेक्स फोर्ड और अपने उल्लसित टिप्पणियों के लिए चिह्न। :-)) @ चिह्न, मुझे यकीन नहीं है कि आप जिन मुद्दों को सूचीबद्ध करते हैं वे वास्तव में MongoDB से CouchDB पर स्विच करने को सही ठहराते हैं। मैंने न तो MongoDB और न ही CouchDB के साथ काम किया है, लेकिन मेरी आंत मुझे बताती है कि आप CouchDB के साथ कुछ अन्य जटिल सीमाओं में भाग लेंगे, और उनके आसपास काम करने में कुछ और समय बर्बाद करेंगे। यदि आपने अब MongoDB में महारत हासिल कर ली है, तो आपको संभवतः इसके साथ रहना चाहिए। लेकिन फिर से, मैं कभी भी नोस्कल-लैंड में नहीं गया, यह सिर्फ मेरी बात है।
मिनीक्वार्क

6

मुझे यकीन है कि आप मोंगो (इसके साथ अधिक परिचित) के साथ कर सकते हैं, और यकीन है कि आप सोफे के साथ भी कर सकते हैं।

दोनों दस्तावेज उन्मुख (JSON- आधारित) हैं, इसलिए कोई "कॉलम" नहीं होगा, बल्कि दस्तावेजों में फ़ील्ड - लेकिन वे पूरी तरह से गतिशील हो सकते हैं।

वे दोनों ऐसा करते हैं जो आप उन अन्य कारकों को देखना चाहते हैं जिन पर उपयोग करना है: अन्य विशेषताएं जिनके बारे में आप परवाह करते हैं, लोकप्रियता, आदि। Google अंतर्दृष्टि, वास्तव में.कॉम पोस्ट लोकप्रियता को देखने के तरीके होंगे।

तुम सिर्फ यह कोशिश कर सकते हैं मुझे लगता है कि आपको 5 मिनट में मूंग चलाने में सक्षम होना चाहिए।

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