MongoDB
प्लगेबल स्टोरेज इंजन
खोज…
टिप्पणियों
MongoDB 3.0 में, MMAP (डिफ़ॉल्ट) और WiredTiger स्थिर भंडारण इंजन हैं। आमतौर पर, यदि आपका ऐप भारी है, तो MMAP का उपयोग करें। यदि इसका लेखन भारी है, तो WiredTiger का उपयोग करें।
आपके समाधान में मिश्रित प्रतिकृति सेट सदस्य भी हो सकते हैं जहाँ आप एक नोड को MMAP और दूसरे को वायर्डटेगर के साथ कॉन्फ़िगर कर सकते हैं। आप बड़े पैमाने पर डेटा डालने के लिए एक का उपयोग कर सकते हैं और दूसरे को विश्लेषणात्मक उपकरणों के साथ पढ़ने के लिए।
MongoDB 3.2 के बाद, WiredTiger डिफ़ॉल्ट इंजन बन जाता है।
mmap
MMAP एक प्लग करने योग्य स्टोरेज इंजन है जिसे mmap()
लिनक्स कमांड के नाम पर रखा गया था। यह वर्चुअल मेमोरी में फाइलों को मैप करता है और रीड कॉल को ऑप्टिमाइज़ करता है। यदि आपके पास एक बड़ी फाइल है, लेकिन उसके छोटे हिस्से को पढ़ने की जरूरत है, तो mmap()
बहुत तेज है तो एक read()
कॉल जो पूरी फाइल को मेमोरी में लाएगा।
एक नुकसान यह है कि आपके पास समान संग्रह के लिए समानांतर में संसाधित किए जा रहे दो लेखन कॉल नहीं हो सकते हैं। तो, MMAP में कलेक्शन-लेवल लॉकिंग है (और डॉक्यूमेंट-लेवल लॉकिंग नहीं है जैसा कि WiredTiger ऑफर है)। यह संग्रह-लॉकिंग आवश्यक है क्योंकि एक MMAP इंडेक्स कई गुना दस्तावेजों को संदर्भित कर सकता है और यदि उन डॉक्स को एक साथ अपडेट किया जा सकता है, तो इंडेक्स असंगत होगा।
WiredTiger
वायर्डटेगर इंडेक्स को स्टोर करने के लिए एलएसएम पेड़ों का समर्थन करता है । जब आप यादृच्छिक आवेषण के विशाल वर्कलोड को लिखने की आवश्यकता होती है, तो एलएसएम पेड़ लिखने के संचालन के लिए तेज़ होते हैं।
WiredTiger में, इन-प्लेस अपडेट नहीं है । यदि आपको किसी दस्तावेज़ के तत्व को अपडेट करने की आवश्यकता है, तो एक नया दस्तावेज़ डाला जाएगा जबकि पुराना दस्तावेज़ हटा दिया जाएगा।
WiredTiger भी दस्तावेज़-स्तरीय संग़ठन प्रदान करता है । यह मानता है कि दो लिखने का संचालन एक ही दस्तावेज़ को प्रभावित नहीं करेगा, लेकिन अगर ऐसा होता है, तो एक ऑपरेशन को बाद में रिवाइंड और निष्पादित किया जाएगा। अगर रिवाइंड दुर्लभ है, तो यह एक शानदार प्रदर्शन को बढ़ावा देने वाला है।
वायर्डटाइगर फ़ाइल सिस्टम में डेटा और इंडेक्स के संपीड़न के लिए स्नैपी और zLib एल्गोरिदम का समर्थन करता है। स्नैपी डिफ़ॉल्ट है। यह सीपीयू-सघन है लेकिन zLib की तुलना में कम संपीड़न दर है।
WiredTiger इंजन का उपयोग कैसे करें
mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>
ध्यान दें:
- 3.2 mongodb के बाद, डिफ़ॉल्ट इंजन WiredTiger है।
-
newWiredTigerDBPath
में किसी अन्य संग्रहण इंजन का डेटा नहीं होना चाहिए। अपने डेटा को माइग्रेट करने के लिए, आपको उन्हें डंप करना होगा, और उन्हें नए स्टोरेज इंजन में पुनः आयात करना होगा।
mongodump --out <exportDataDestination>
mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>
mongorestore <exportDataDestination>
याद में
सभी डेटा तेजी से पढ़ने / पहुंच के लिए मेमोरी (रैम) में संग्रहित किया जाता है।
मोंगो-चट्टानों
फेसबुक के RocksDB के साथ एकीकृत करने के लिए बनाया गया एक कुंजी-मूल्य इंजन।
फ्यूजन-कब
सैनडिस्क द्वारा बनाया गया एक स्टोरेज इंजन जो ओएस फाइल सिस्टम लेयर को बायपास करने और स्टोरेज डिवाइस पर सीधे लिखने के लिए संभव बनाता है।
TokuMX
पर्कोना द्वारा बनाया गया एक स्टोरेज इंजन जो भग्न ट्री इंडेक्स का उपयोग करता है।