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

MongoDB fsync () का उपयोग क्यों नहीं करता है?

कारण प्रदर्शन है। प्रत्येक परिवर्तन पर डिस्क पर लिखे बिना, MongoDB तेजी से अपडेट को संभाल सकता है।

MongoDB आपको बताता है कि कब अपडेट डिलीवर किया गया है सर्वर पर, तब नहीं जब अपडेट लिखे गए , जैसा कि आप प्रचार की पुष्टि करने वाले दस्तावेज़ में पढ़ सकते हैं GetLastError के साथ राइट्स का :

यह ACID के विरुद्ध जा रहा है , विशेष रूप से D के विरुद्ध, जिसका अर्थ है स्थायित्व :

एसीआईडी ​​​​गुण ज्यादातर पारंपरिक आरडीबीएमएस सिस्टम पर लागू होते हैं। NoSQL सिस्टम, जिसमें MongoDB शामिल है, बेहतर मापनीयता प्राप्त करने के लिए एक या अधिक ACID गुणों को छोड़ देता है। MongoDB के मामले में स्थायित्व का त्याग कर दिया गया है बड़ी मात्रा में अपडेट प्रबंधित करते समय बेहतर प्रदर्शन के लिए।

MongoDB और ACID

अधिकांश ACID गुण लेन-देन स्तर . पर गारंटीकृत हैं . लेन-देन आमतौर पर प्रश्नों का एक समूह होता है जिसे एक इकाई के रूप में माना जाना चाहिए। MongoDB के पास लेन-देन की कोई अवधारणा नहीं है, फिर से प्रदर्शन कारणों के लिए . इसलिए अधिकांश ACID गुण MongoDB पर लागू नहीं होते हैं।

- परमाणु कहता है कि एक लेन-देन या तो सफल होना चाहिए या असफल होना चाहिए। इसे आंशिक रूप से सफल होने की अनुमति नहीं है; यदि लेन-देन का हिस्सा विफल हो जाता है, तो पूरे लेनदेन को वापस ले लिया जाना चाहिए। MongoDB परमाणु संचालन का समर्थन करता है दस्तावेज़ स्तर पर, लेकिन 'लेन-देन' स्तर पर नहीं।

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

मैं - अलगाव बताता है कि दो समवर्ती लेनदेन को एक दूसरे के साथ हस्तक्षेप करने की अनुमति नहीं है; यदि दो लेन-देन एक ही डेटा को संशोधित करने का प्रयास करते हैं, तो दूसरे लेन-देन को पहले वाले के पूरा होने तक प्रतीक्षा करनी होगी। इसे प्राप्त करने के लिए, डेटाबेस डेटा को लॉक कर देगा। MongoDB में लॉकिंग की कोई अवधारणा नहीं है, इसलिए यह एकाधिक . के लिए अलगाव का समर्थन नहीं करता है संचालन। सिंगल ऑपरेशंस अलग-थलग हैं।

डी - स्थायित्व ऊपर वर्णित है। ACID-ic स्थायित्व के संदर्भ में MongoDB वास्तविक स्थायित्व (अभी तक) का समर्थन नहीं करता है।

अब, आप सोच सकते हैं कि RDBMS सिस्टम की तुलना में MongoDB बेकार है क्योंकि इसमें लेनदेन और अधिकांश ACID गारंटी का अभाव है। हालांकि, लेन-देन के मौजूद होने का एक कारण यह है कि संबंधपरक डेटाबेस को कुछ डेटा को एकल इकाई के रूप में मानने की आवश्यकता होती है। , लेकिन इस डेटा को एकाधिक तालिकाओं . में सामान्य कर दिया गया है ।

MongoDB आपको अपने डेटा को एक इकाई के रूप में संग्रहीत करने . की अनुमति देता है . यह ज्यादातर मामलों में विदेशी कुंजी और संदर्भात्मक अखंडता की आवश्यकता को हटा देता है। आपको बहु-क्वेरी लेनदेन की भी आवश्यकता नहीं है, क्योंकि आपको एक इकाई को अद्यतन करने के लिए एकाधिक तालिकाओं की आवश्यकता नहीं है। अधिकांश बार आपको केवल एक ही दस्तावेज़ को अपडेट करना होता है, और ये ऑपरेशन MongoDB में परमाणु होते हैं।

इस पृष्ठ पर पहली टिप्पणी के अनुसार , db.eval() एकाधिक कार्यों के लिए अलगाव प्रदान करता है। हालांकि, दस्तावेज़ीकरण आप आमतौर पर db.eval() . के उपयोग से बचना चाहते हैं ।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मैं async विधि में कोड डीबग क्यों नहीं कर सकता?

  2. जावा और मोंगो:ऑब्जेक्ट प्राप्त करें जहां फ़ील्ड मौजूद है

  3. मोंगोडीबी $सिंह

  4. मोंगोडब में किसी फ़ील्ड में ऑब्जेक्ट सरणी से आंशिक वस्तुओं को कैसे पुनर्प्राप्त करें?

  5. NodeJS का उपयोग करके ब्राउज़र में GET अनुरोध परिणाम प्रदर्शित करें