सीएपी प्रमेय (संगति, उपलब्धता, विभाजन: उठाएं) को लाए बिना आप कभी भी तथाकथित "NoSQL" डेटाबेस के बारे में बात नहीं कर सकते। अगर आपको MongoDB (विभाजन, संगति) और CouchDB (उपलब्धता, विभाजन) के बीच कहना है, तो आपको सबसे पहले यह सोचना होगा कि "क्या मुझे सही डेटा चाहिए या मुझे हर समय एक्सेस की आवश्यकता है?"
उन नए डेटाबेस को विभाजन के लिए बनाया गया था । लेकिन क्या होगा अगर मैं नहीं ? क्या होगा अगर मैं सिर्फ एक कुंजी / मूल्य, कॉलम, दस्तावेज़, एक रिलेशनल के बजाय जो भी डेटाबेस हो, और बस एक सर्वर इंस्टेंस बनाने के लिए और इसे कभी भी शार्द करने के लिए अपने सुंदर शांत नहीं लगता? उस स्थिति में, क्या मेरे पास उपलब्धता और स्थिरता दोनों नहीं होगी? MongoDB को कुछ भी दोहराने की आवश्यकता नहीं होगी, इसलिए यह उपलब्ध होगा। और CouchDB में डेटा का केवल एक स्रोत होगा, इसलिए यह बहुत संगत होगा।
तो इसका मतलब यह होगा कि, उस स्थिति में, MongoDB और CouchDB के उपयोग के मामले में थोड़ा अंतर होगा? ठीक है, पाठ्यक्रम के प्रदर्शन, एपीआई और अल को छोड़कर, लेकिन यह पोस्टग्रेक्यूएल और माईएसक्यूएल के बीच दो मूलभूत आवश्यकताओं के अलग-अलग सेटों को चुनने की तुलना में अधिक पसंद करेगा।
क्या मैं यहीं हूँ? क्या मैं एक से अधिक इंस्टेंस नहीं बनाकर एक एपी या सीपी डेटाबेस को एक एसी में बदल सकता हूं? या कुछ ऐसा है जो मुझे याद आ रहा है?
चलिए सवाल उल्टा करते हैं। क्या होगा अगर मैं एक रिलेशनल डेटाबेस लेता हूं, तो MySQL को कहने दें, और इसे मास्टर / दास कॉन्फ़िगरेशन में डाल दें। मैं ACID लेनदेन का उपयोग नहीं करता हूं, अगर मुझे आवश्यकता है कि किसी भी लेखन को तुरंत दास के साथ सिंक्रनाइज़ किया जाए, तो क्या यह सीपी डेटाबेस नहीं होगा? और क्या होगा अगर मैं इसे कुछ पूर्वनिर्धारित अंतरालों को सिंक्रनाइज़ करता हूं, और इससे कोई फर्क नहीं पड़ता कि एक ग्राहक एक दास से बासी डेटा पढ़ता है। कि यह एक एपी डेटाबेस नहीं होगा? क्या इसका मतलब यह नहीं होगा कि अगर मैं ACID अनुपालन छोड़ दूं तो भी मैं एक पक्षपाती डेटाबेस के लिए संबंध मॉडल का उपयोग कर सकता हूं?
संक्षेप में: अंतर्निहित डेटा मॉडल की तुलना में कैप प्रमेय में आप क्या देने के लिए तैयार हैं, इसके बारे में मापनीयता है? क्या कॉलम, डॉक्यूमेंट, की वैल्यू, जो किसी रिलेशनल मॉडल पर स्केलेबिलिटी को बढ़ावा देते हैं? क्या हम विभाजन सहिष्णुता के लिए जमीन से डिज़ाइन किया गया एक संबंधपरक डेटाबेस तैयार कर सकते हैं? (शायद यह पहले से मौजूद है)। क्या हम NoSQL डेटाबेस ACID का अनुपालन कर सकते हैं?
क्षमा करें, इसके बहुत सारे प्रश्न हैं, लेकिन मैंने हाल ही में NoSQL डेटाबेस के बारे में बहुत कुछ पढ़ा है और यह मुझे प्रतीत होता है कि उनका उपयोग करने का सबसे बड़ा लाभ यह है कि वे आपके विभाजन के बजाय आपके डेटा के "आकार" को बेहतर ढंग से फिट करते हैं, CAP और ACID का अनुपालन करना। आखिरकार, सभी के पास इतना डेटा नहीं है कि उन्हें इसे विभाजित करने की आवश्यकता हो। इससे पहले कि मैं अपने डेटा को विभाजित करने के बारे में सोचूं , क्या संबंधपरक मॉडल का उपयोग नहीं करने के लिए कोई प्रदर्शन / मापनीयता है ?