2011-08-09 12 views
14

मैंने अब तक काम पर मोंगोडीबी का उपयोग करना शुरू कर दिया है। मैं सोच रहा था कि मोंगोडीबी समवर्ती अपडेट के साथ कैसे काम करता है? मैंने पढ़ा है कि मोंगोडीबी में कोई लॉकिंग सुविधा नहीं है इसलिए मैं सोच रहा था कि इससे निपटने के लिए आम अभ्यास क्या है।मोंगोडीबी समवर्ती अपडेट के साथ कैसे काम करता है?

धन्यवाद।

उत्तर

20

मोंगोडीबी ने एक प्रक्रिया में व्यापक लेखन लॉक का उपयोग किया ताकि गारंटी दी जा सके कि एक समय में केवल एक ही लिखने का ऑपरेशन (अपडेट/डालने/निकालना) किया जा सकता है। जैसे-जैसे यह समरूपता मुद्दों को स्वचालित रूप से हल करता है क्योंकि लिखने की सहमति की अनुमति नहीं है।

यदि 4 धागे अद्यतन ऑपरेशन का प्रयास करते हैं तो उनमें से एक लिखने के लॉक लेगा, इसके अपडेट करें और लॉक जारी करें। उसके बाद शेष 3 में से एक लॉक पकड़ लेगा, इसके अपडेट करें, आदि

यदि आपके ऑपरेशन को एक ही लिखने के ऑपरेशन में लपेटा नहीं जा सकता है तो Concurrency केवल खेल में आता है। ध्यान दें कि सबसे आम उपयोगकेस के लिए (एक डॉक्टर ढूंढें, इसे अपडेट करें और नए संस्करण को परमाणु रूप से पकड़ें) मोंगोडीबी "findAndModify" कमांड प्रदान करता है जो केवल यह करता है: http://www.mongodb.org/display/DOCS/findAndModify+Command

अद्यतन: इन दिनों लॉकिंग अधिक बारीक है।

+0

धन्यवाद मुझे समझ में आता है कि यह सामान्य ज्ञान क्यों लग रहा था। – lollancf37

+0

आपका स्वागत है। यह एक सीमित विशेषता की तरह लगता है लेकिन क्योंकि लिखने अपेक्षाकृत तेज़ हैं, यह वास्तव में शायद ही कभी एक प्रदर्शन मुद्दा है। लॉक के साथ कितना समय बिताया जाता है यह देखने के लिए मोंगोस्टैट में "लॉक%" पर नजर रखें। –

3

उपयोग modifier operations:

$inc $set $unset $push $pushAll $addToSet $pop $pull $pullAll $rename $bit

उन सभी को परमाणु कर रहे हैं।

+0

इस आलेख को इंगित करने के लिए धन्यवाद लेकिन ऐसा लगता है कि यह गारंटी नहीं देता है कि आप किसी विशेष संग्रह संख्या पर लिखने वाले अकेले हैं? – lollancf37

+2

जब तक आप संशोधक संचालन का उपयोग कर रहे हों, इससे कोई फ़र्क नहीं पड़ता कि आपके पास कितने समवर्ती लेखन हैं। –

संबंधित मुद्दे