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

MongoDB 4.0 लेनदेन:ACID पढ़ें + लिखें?

परमाणुता के लिए संक्षिप्त उत्तर हां है।

MongoDB में, लेन-देन (जिसे बहु-दस्तावेज़ लेनदेन भी कहा जाता है) एक सत्र से संबद्ध होते हैं . यही है, आप एक सत्र के लिए एक लेनदेन शुरू करते हैं। किसी भी समय, आपके पास अधिकतम एक . हो सकता है एक सत्र के लिए खुला लेनदेन।

आप लिखने के लिए पूरे संग्रह को लॉक नहीं कर सकते। आप यह सुनिश्चित करने के लिए कई लेन-देन बनाना चाह सकते हैं कि लेखन आपकी प्रक्रियाओं के बीच इंटरलेसिंग/ओवरराइडिंग नहीं कर रहा है। MongoDB आशावादी लॉकिंग का उपयोग करता है निराशावादी लॉकिंग के बजाय ।

इसी तरह MongoDB बहु-दस्तावेज़ लेनदेन में। उदाहरण के लिए, mongo shell का इस्तेमाल करना :

s1 = Mongo().startSession() 
sessionTest = s1.getDatabase("databaseName").test;
s1.startTransaction() 
sessionTest.find({a:"foo"})
> {_id: ObjectId(..), a:"foo", b:1}

// Let's update the record outside of the session (i.e. another process)
db.test.update({a:"foo"}, {$set:{b:2}})

sessionTest.update({a:"foo"}, {$set:{b:9}})
// You'll get a WriteConflict error because the the document has been modified outside of the session. 

यह भी ध्यान दें कि लेन-देन खुला होने पर, लेन-देन में संचालन द्वारा किए गए कोई भी डेटा परिवर्तन लेनदेन के बाहर दिखाई नहीं देता है।

  • जब कोई लेन-देन होता है, तो सभी डेटा परिवर्तन सहेजे जाते हैं और लेन-देन के बाहर दिखाई देते हैं और लेनदेन समाप्त हो जाता है।
  • जब कोई लेन-देन बंद हो जाता है, तो लेन-देन में राइट द्वारा किए गए सभी डेटा परिवर्तन कभी भी दिखाई दिए बिना छोड़ दिए जाते हैं और लेन-देन समाप्त हो जाता है।

यह भी देखें परमाणु उदाहरण

ध्यान देने योग्य बात यह है कि MongoDB एक वितरित डेटाबेस है। , इसलिए आपको एकरूपता के विभिन्न विकल्पों के बारे में भी पता होना चाहिए। Session.startTransaction() शुरू करते समय आप इन विकल्पों को निर्दिष्ट कर सकते हैं। उपयोग के मामले के आधार पर:

बहु-दस्तावेज़ लेन-देन पठन वरीयता का समर्थन करते हैं प्राथमिक और किसी दिए गए लेन-देन में सभी संचालन एक ही सदस्य को रूट करना चाहिए।

आपकी रुचि इंजीनियरिंग चाक और वार्ता:MongoDB लेनदेन में भी हो सकती है। वीडियो जिसमें MongoDB लेनदेन के पीछे कुछ तकनीकी स्पष्टीकरण शामिल हैं।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मैं pymongo.cursor.Cursor ऑब्जेक्ट को कैसे पुनः प्राप्त और प्रिंट कर सकता हूँ?

  2. MongoDB - अपने कॉन्फ़िगरेशन में 'org.springframework.data.mongodb.repository.query.MongoEntityInformation' प्रकार के बीन को परिभाषित करने पर विचार करें

  3. $group by . के बाद डायनामिक कुंजियाँ

  4. मोंगो में अद्यतन सरणी तत्व

  5. आईडी के आधार पर अद्यतन सरणी वस्तु?