MongoDB में डिफ़ॉल्ट लेखन चिंता w:1
. रही है 2012 में MongoDB 2.2 से बहुत पीछे।
तीन अलग-अलग सेटिंग्स हैं जिनका उपयोग आप वर्तमान MongoDB संस्करणों (संस्करण 3.2.6 और नए) में चिंता लिखने के लिए कर सकते हैं:
w
सेटिंग :इसे सफल घोषित करने से पहले कितने नोड्स को लेखन को स्वीकार करना चाहिए। डिफ़ॉल्ट 1 है, जिसका अर्थ है कि प्राथमिक नोड की पावती पर्याप्त है।j
सेटिंग :क्या लेखन को स्वीकार करने से पहले जर्नल किया जाना चाहिए? डिफ़ॉल्टwriteConcernMajorityJournalDefault
. पर निर्भर करता है ।- writeConcernMajorityJournalDefault
:यदि आप
w:majority
specify निर्दिष्ट करते हैंj
. को सेट किए बिना अपने लेखन के लिए चिंता सेटिंग लिखें , निहितj
क्या है मूल्य? डिफ़ॉल्टtrue
है (स्वीकार किए जाने से पहले अधिकांश मतदान नोड्स में लेखन को जर्नल किया जाना चाहिए)।
एक wtimeout
भी है सेटिंग
यह कॉन्फ़िगर करने के लिए कि क्लाइंट को सूचित नहीं किया गया है कि लिखने को स्वीकार नहीं किया गया है, इससे पहले MongoDB को संतुष्ट होने के लिए कब तक प्रतीक्षा करनी चाहिए। अन्यथा, लिखने की चिंता के संतुष्ट होने की प्रतीक्षा करने वाले लेखन विफल होने के बजाय हमेशा के लिए प्रतीक्षा कर सकते हैं।
यहाँ विशेष सेटिंग है w:majority
. इसका मतलब है कि लेखन को अधिकांश मतदान नोड्स . तक प्रचारित करना चाहिए (और उनकी पत्रिकाओं के लिए भी) एक प्रतिकृति सेट में स्वीकार किया जाना है। अच्छा प्रदर्शन प्रदान करते हुए यह यकीनन सबसे सुरक्षित सेटिंग है, क्योंकि:
- यह विफल होने की स्थिति में स्वीकृत लेखन को वापस लेने से रोकता है।
- यह एप्लिकेशन के थ्रूपुट को नियंत्रित करता है ताकि यह प्रतिकृति सेट (हार्डवेयर बाधाओं, नेटवर्क स्थिति, आदि के कारण) की तुलना में तेजी से लेखन नहीं भेजेगा।
जैसा कि आपने कल्पना की है, मतदान नोड्स में मध्यस्थ शामिल होता है . इस प्रकार, प्राथमिक-माध्यमिक-मध्यस्थ सेटअप के साथ एक प्रतिकृति सेट में, w:majority
ऐसे परिदृश्य में विफल हो सकता है जहां:
- डेटा-असर नोड में से एक किसी कारण से ऑफ़लाइन है।
- प्रतिलिपि सेट अभी भी एक लिखने योग्य प्राथमिक के साथ ऑनलाइन है, क्योंकि टोपोलॉजी अब प्राथमिक-मध्यस्थ-ऑफ़लाइन है।
w:1
के साथ लिखता है हमेशा की तरह सफल होगा, लेकिन उन लेखन को वापस लाया जा सकता है (क्योंकि यह अधिकांश मतदान-डेटा-असर नोड्स को नहीं लिखा गया था)।- चूंकि मध्यस्थ के पास कोई डेटा नहीं होता है,
w:majority
राइट्स विफल हो जाएगा (या अनिश्चित काल तक प्रतीक्षा करता है) क्योंकि मध्यस्थ को वोटिंग नोड के रूप में गिना जाता है।
इस कारण से, यदि आप w:majority
का उपयोग करने की योजना बना रहे हैं, तो किसी मध्यस्थ का उपयोग करने की अनुशंसा नहीं की जाती है आपके आवेदन में।
कृपया ध्यान दें कि 3-नोड प्रतिकृति सेट में एक आर्बिटर का उपयोग करने की भी अनुशंसा नहीं की जाती है, जो एक शार्प क्लस्टर में एक शार्ड बनाता है, क्योंकि चंक मूव्स के लिए w:majority
की आवश्यकता होती है। . एक शार्क में डेटा-असर नोड विफलता होने से चंक माइग्रेशन संचालन के लिए हानिकारक होगा।