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

MongoDB में बहु-संग्रह, बहु-दस्तावेज़ 'लेनदेन'

MongoDB पर एक सामान्य प्रतिक्रिया के रूप में बहु-दस्तावेज़ दो चरणों के रूप में किया जा सकता है, जिन्हें मैनुअल में कुछ हद तक व्यापक रूप से प्रलेखित किया गया है (देखें:http://docs.mongodb.org/manual/tutorial/perform-two-phase- प्रतिबद्ध/)।

मैनुअल द्वारा सुझाया गया पैटर्न संक्षेप में निम्नलिखित है:

  • एक अलग transactions सेट करें संग्रह, जिसमें लक्षित दस्तावेज़ . शामिल है , स्रोत दस्तावेज़ , मान और राज्य (लेन-देन का)
  • initial के साथ नया ट्रांजेक्शन ऑब्जेक्ट बनाएं state . के रूप में
  • लेन-देन करना शुरू करें और state को अपडेट करें करने के लिए pending
  • दोनों दस्तावेज़ों पर लेन-देन लागू करें (लक्ष्य, स्रोत)
  • लेन-देन की स्थिति को committed में अपडेट करें
  • यह निर्धारित करने के लिए खोज का उपयोग करें कि क्या दस्तावेज़ लेन-देन की स्थिति को दर्शाते हैं, यदि ठीक है, तो लेन-देन की स्थिति को done पर अपडेट करें

इसके अलावा:

  • आपको विफलता परिदृश्यों को मैन्युअल रूप से संभालने की आवश्यकता है (जैसा कि नीचे वर्णित है कुछ नहीं हुआ)
  • आपको मूल रूप से एक नाम state introducing का परिचय देकर रोलबैक को मैन्युअल रूप से कार्यान्वित करने की आवश्यकता है मान canceling

आपके कार्यान्वयन के लिए कुछ विशिष्ट नोट:

  • मैं आपको lock_status . जैसे फ़ील्ड जोड़ने से हतोत्साहित करूंगा , data_old , data_new स्रोत/लक्ष्य दस्तावेजों में। ये लेन-देन के गुण होने चाहिए, न कि स्वयं दस्तावेज़।
  • लक्ष्य/स्रोत दस्तावेज़ों की अवधारणा को सामान्य बनाने के लिए, मुझे लगता है कि आप DBref . का उपयोग कर सकते हैं s:http://www.mongodb.org/display/DOCS/Database+References
  • मुझे लेन-देन के दस्तावेज़ों के पूर्ण होने पर हटाने का विचार पसंद नहीं है। राज्य को done पर सेट करना एक बेहतर विचार की तरह लगता है क्योंकि इससे आप बाद में डिबग कर सकते हैं और पता लगा सकते हैं कि किस तरह के लेनदेन किए गए हैं। मुझे पूरा यकीन है कि आपके पास डिस्क स्थान भी समाप्त नहीं होगा (और इसके लिए समाधान भी हैं)।
  • आपके मॉडल में आप कैसे गारंटी देते हैं कि सब कुछ उम्मीद के मुताबिक बदल दिया गया है? क्या आप किसी तरह परिवर्तनों का निरीक्षण करते हैं?


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB/NoSQL:दस्तावेज़ परिवर्तन इतिहास रखना

  2. MongoDB डेटाबेस प्रोफाइलर का अवलोकन

  3. MongoDB:नेस्टेड सरणी फ़िल्टरिंग के साथ खोजें और खोजें

  4. मैं अपने डेटाबेस का MongoDB डंप कैसे बनाऊं?

  5. मैं Mongoose में अलग-अलग मानों के लिए क्वेरी कैसे करूं?