आपकी सबसे अच्छी शर्त चिंता लिखें का उपयोग करना है - ये आपको मोंगोडीबी को यह बताने की अनुमति देते हैं कि डेटा का एक टुकड़ा कितना महत्वपूर्ण है। सबसे तेज लिखें चिंता भी कम से कम सुरक्षित है - डेटा अगले शेड्यूल किए गए फ्लश तक डिस्क पर फ़्लश नहीं किया जाता है। सबसे सुरक्षित यह पुष्टि करेगा कि लौटने से पहले डेटा कई मशीनों पर डिस्क पर लिखा गया है।
आप जिस लेखन चिंता की तलाश कर रहे हैं वह FSYNC_SAFE है (कम से कम इसे जावा ड्राइवर ) या REPLICAS_SAFE जो पुष्टि करता है कि आपके डेटा को दोहराया गया है।
ध्यान रखें कि MongoDB में पारंपरिक अर्थों में लेन-देन नहीं होता है - आपके रोलबैक को हाथ से रोल करना होगा क्योंकि आप Mongo डेटाबेस को आपके लिए ऐसा करने के लिए नहीं कह सकते।
दूसरी चीज़ जो आपको करने की ज़रूरत है वह या तो अपेक्षाकृत नए --journal
. का उपयोग करना है विकल्प (जो आगे लिखें लॉग का उपयोग करता है), या क्रैश/पावर हानि की स्थिति में डेटा अखंडता को अधिकतम करने के लिए अपने डेटा को कई मशीनों में साझा करने के लिए प्रतिकृति सेट का उपयोग करें।
विशेष रूप से बड़े डेटासेट के साथ काम करते समय लोड साझा करने के लिए एक विधि के रूप में हार्डवेयर विफलता के खिलाफ साझा करना इतना सुरक्षा नहीं है - शेरिंग को प्रतिकृति सेट के साथ भ्रमित नहीं किया जाना चाहिए जो एक से अधिक मशीनों पर एक से अधिक डिस्क पर डेटा लिखने का एक तरीका है। ।
इसलिए, यदि आपका डेटा पर्याप्त रूप से मूल्यवान है, तो आपको निश्चित रूप से प्रतिकृति सेट का उपयोग करना चाहिए, शायद अन्य डेटा केंद्रों/उपलब्धता क्षेत्रों/रैक/आदि में दासों को भी बैठना चाहिए ताकि आपको आवश्यक लचीलापन प्रदान किया जा सके।
प्रतिकृति सेट में अलग-अलग नोड्स की प्राथमिकता को निर्दिष्ट करने का एक तरीका है/होगा (यह याद नहीं किया जा सकता है कि क्या यह अभी तक लागू किया गया है) जैसे कि यदि मास्टर चुने गए नए मास्टर के नीचे जाता है तो उसी डेटा में से एक है केंद्र अगर ऐसी कोई मशीन उपलब्ध है (अर्थात देश के दूसरी तरफ के एक गुलाम को मालिक बनने से रोकने के लिए जब तक कि यह वास्तव में एकमात्र अन्य विकल्प न हो)।