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

आपको अभी भी MongoDB के लिए MMAPv1 संग्रहण इंजन का उपयोग क्यों करना चाहिए?

जबकि इस स्टोरेज इंजन को MongoDB संस्करण 4.0 के रूप में बहुत पहले से हटा दिया गया है, इसमें कुछ महत्वपूर्ण विशेषताएं हैं। MMAPv1 MongoDB में मूल भंडारण इंजन है और मैप की गई फ़ाइलों पर आधारित है। केवल 64-बिट इंटेल आर्किटेक्चर (x86_64) इस स्टोरेज इंजन का समर्थन करता है।

MMAPv1 के साथ कार्यभार में उत्कृष्ट प्रदर्शन करता है...

  • बड़े अपडेट
  • उच्च मात्रा में पढ़ता है
  • हाई वॉल्यूम इंसर्ट
  • सिस्टम मेमोरी का उच्च उपयोग

एमएमएपीवी1 आर्किटेक्चर

MMAPv1 एक बी-पेड़ आधारित प्रणाली है जो ऑपरेटिंग सिस्टम के लिए स्टोरेज इंटरैक्शन और मेमोरी प्रबंधन जैसे कई कार्यों को शक्ति प्रदान करती है।

यह WiredTiger स्टोरेज इंजन की शुरुआत तक 3.2 से पहले के संस्करणों के लिए MongoDB के लिए डिफ़ॉल्ट डेटाबेस था। इसका नाम इस तथ्य से आता है कि यह डेटा तक पहुंचने के लिए मेमोरी मैप की गई फ़ाइलों का उपयोग करता है। यह फ़ाइल सामग्री को सीधे लोड और संशोधित करके ऐसा करता है, जो एक एमएमएपी () syscall पद्धति के माध्यम से वर्चुअल मेमोरी में हैं।

सभी रिकॉर्ड लगातार डिस्क पर स्थित होते हैं और यदि कोई दस्तावेज़ आवंटित रिकॉर्ड आकार से बड़ा हो जाता है, तो MongoDB एक नया रिकॉर्ड आवंटित करता है। MMAPv1 के लिए यह क्रमिक डेटा एक्सेस के लिए फायदेमंद है, लेकिन साथ ही एक सीमा है क्योंकि यह एक समय लागत के साथ आता है क्योंकि सभी दस्तावेज़ अनुक्रमणिका को अद्यतन करने की आवश्यकता होती है और इसके परिणामस्वरूप भंडारण विखंडन हो सकता है।

MMAPv1 स्टोरेज इंजन का मूल आर्किटेक्चर नीचे दिखाया गया है।

जैसा कि ऊपर उल्लेख किया गया है, यदि कोई दस्तावेज़ आकार आवंटित रिकॉर्ड आकार से अधिक है, तो इसका परिणाम एक पुन:आवंटन होगा जो अच्छी बात नहीं है। इससे बचने के लिए MMAPv1 इंजन 2 आकार के आवंटन की शक्ति का उपयोग करता है ताकि प्रत्येक दस्तावेज़ को एक रिकॉर्ड में संग्रहीत किया जा सके जिसमें दस्तावेज़ स्वयं हो (कुछ अतिरिक्त स्थान जिसे पैडिंग के रूप में जाना जाता है)। पैडिंग का उपयोग किसी भी दस्तावेज़ वृद्धि की अनुमति देने के लिए किया जाता है जो अद्यतनों के परिणामस्वरूप हो सकता है जबकि यह वास्तविक आवंटन की संभावना को कम करता है। अन्यथा, यदि पुन:आवंटन होता है तो आप भंडारण विखंडन कर सकते हैं। पैडिंग दक्षता में सुधार के लिए अतिरिक्त स्थान का व्यापार करती है इसलिए विखंडन को कम करती है। इन्सर्ट, अपडेट या डिलीट की उच्च मात्रा वाले वर्कलोड के लिए, 2 आवंटन की शक्ति को सबसे अधिक प्राथमिकता दी जानी चाहिए, जबकि सटीक फिट आवंटन उन संग्रहों के लिए आदर्श है जिनमें कोई अपडेट शामिल नहीं है या वर्कलोड को हटाना नहीं है।

2 आकार के आवंटन की शक्ति

सुचारू दस्तावेज़ विकास के लिए, यह रणनीति MMAPv1 संग्रहण इंजन में नियोजित है। प्रत्येक रिकॉर्ड का आकार बाइट्स में होता है जो 2 की शक्ति है, अर्थात (32, 64, 128, 256, 512...2MB)। 2MB डिफ़ॉल्ट रूप से बड़ी सीमा होने के कारण कोई भी दस्तावेज़ जो इससे आगे निकल जाता है, इसकी मेमोरी को 2MB के निकटतम गुणक में गोल कर दिया जाता है। उदाहरण के लिए, यदि कोई दस्तावेज़ 200MB है, तो इस आकार को 256MB तक पूर्णांकित किया जाएगा और किसी भी अतिरिक्त वृद्धि के लिए 56MB स्थान उपलब्ध होगा। यह दस्तावेज़ों को एक वास्तविक आवंटन को ट्रिगर करने के बजाय बढ़ने में सक्षम बनाता है, जब दस्तावेज़ उनके पास पहुँचते हैं तो सिस्टम को बनाने की आवश्यकता होगी। उपलब्ध स्थान की सीमा।

शक्ति 2 आकार के आवंटन के गुण

  1. विखंडन को कम करने के लिए मुक्त रिकॉर्ड का पुन:उपयोग: इस अवधारणा के साथ, रिकॉर्ड्स को एक निश्चित आकार के लिए मात्राबद्ध मेमोरी दी जाती है जो नए दस्तावेज़ों को समायोजित करने के लिए पर्याप्त है जो पहले के दस्तावेज़ हटाने या स्थानांतरण द्वारा बनाए गए आवंटित स्थान में फिट होंगे।
  2. दस्तावेज़ की चाल कम करता है: जैसा कि पहले उल्लेख किया गया है, डिफ़ॉल्ट रूप से MongoDB इंसर्ट्स और अपडेट जो दस्तावेज़ के आकार को सेट रिकॉर्ड आकार से बड़ा बनाते हैं, परिणामस्वरूप इंडेक्स को भी अपडेट किया जाएगा। इसका सीधा सा मतलब है कि दस्तावेजों को स्थानांतरित कर दिया गया है। हालांकि, जब किसी दस्तावेज़ में वृद्धि के लिए पर्याप्त जगह होती है, तो दस्तावेज़ को स्थानांतरित नहीं किया जाएगा, इसलिए अनुक्रमणिका में कम अपडेट होते हैं।

स्मृति उपयोग

MMAPv1 स्टोरेज इंजन में मशीन पर सभी मुफ्त मेमोरी को कैश के रूप में उपयोग किया जाता है। मेमोरी में फिट होने वाले वर्किंग सेट के माध्यम से सही आकार के वर्किंग सेट और इष्टतम प्रदर्शन हासिल किया जाता है। इसके अलावा, प्रत्येक 60 सेकंड के लिए, MMAPv1 डेटा को डिस्क में बदल देता है जिससे कैश मेमोरी पर बचत होती है। इस मान को इस तरह बदला जा सकता है कि बार-बार फ्लशिंग की जा सके। क्योंकि सभी मुफ्त मेमोरी का उपयोग कैश के रूप में किया जाता है, चौंकिए नहीं कि सिस्टम संसाधन निगरानी उपकरण इंगित करेंगे कि MongoDB बहुत अधिक मेमोरी का उपयोग करता है क्योंकि यह उपयोग गतिशील है।

एमएमएपीवी1 स्टोरेज इंजन की खूबियां

  1. पूर्व-आवंटन रणनीति का उपयोग करते समय डिस्क पर विखंडन को कम किया।
  2. जब वर्किंग सेट को मेमोरी में फ़िट करने के लिए कॉन्फ़िगर किया गया हो तो बहुत ही कुशल रीड करता है।
  3. इन-प्लेस अपडेट यानी अलग-अलग फ़ील्ड अपडेट के परिणामस्वरूप अधिक डेटा संग्रहीत किया जा सकता है इसलिए न्यूनतम समवर्ती लेखकों के साथ बड़े दस्तावेज़ अपडेट में सुधार होता है।
  4. समवर्ती लेखकों की कम संख्या के साथ, डेटा को बार-बार डिस्क में प्रवाहित करने की अवधारणा के माध्यम से लेखन प्रदर्शन में सुधार किया जा सकता है।
  5. संग्रह-स्तर लॉकिंग लिखने के संचालन की सुविधा प्रदान करता है। डेटाबेस प्रदर्शन में लॉकिंग योजना सबसे महत्वपूर्ण कारकों में से एक है। इस मामले में, एक समय में केवल 1 क्लाइंट डेटाबेस तक पहुंच सकता है। यह एक ऐसा परिदृश्य बनाता है कि भंडारण इंजन द्वारा क्रमबद्ध तरीके से प्रस्तुत किए जाने की तुलना में संचालन अधिक तेज़ी से प्रवाहित होता है।
मोंगोडीबी डीबीए बनें - मोंगोडीबी को प्रोडक्शन में लाना सीखें कि मोंगोडीबी को तैनात करने, मॉनिटर करने, प्रबंधित करने और स्केल करने के लिए आपको क्या जानने की जरूरत है मुफ्त में डाउनलोड करें

एमएमएपीवी1 स्टोरेज इंजन की सीमाएं

  1. पुनरावृत्ति करते समय उच्च स्थान का उपयोग। MMAPv1 में फ़ाइल सिस्टम के लिए एक संपीड़न रणनीति का अभाव है इसलिए यह रिकॉर्ड स्थान का अधिक आवंटन करता है।
  2. लिखने का कार्य करते समय कई क्लाइंट के लिए संग्रह पहुंच प्रतिबंध। MMAPv1 संग्रह-स्तर-लॉकिंग रणनीति का उपयोग करता है जिसका अर्थ है कि 2 या अधिक ग्राहक एक ही समय में एक ही संग्रह तक नहीं पहुंच सकते हैं, इसलिए एक लेखन ब्लॉक सभी इस संग्रह को पढ़ता है। यह मोटे संगामिति की ओर ले जाता है जिससे MMAPv1 इंजन को मापना असंभव हो जाता है।
  3. यदि जर्नलिंग विकल्प सक्षम नहीं है, तो सिस्टम क्रैश संभावित रूप से डेटा हानि का कारण बन सकता है। हालाँकि, भले ही यह विंडो बहुत छोटी हो, लेकिन कम से कम आपको एक बड़े डेटा हानि परिदृश्य से सुरक्षित कर सकती है।
  4. अकुशल भंडारण उपयोग। पूर्व-आवंटन रणनीति का उपयोग करते समय, कुछ दस्तावेज़ डिस्क पर डेटा की तुलना में अधिक स्थान घेरते हैं।
  5. यदि वर्किंग सेट का आकार आवंटित मेमोरी से अधिक है, तो प्रदर्शन काफी हद तक गिर जाता है। इसके अलावा, प्रारंभिक भंडारण के बाद महत्वपूर्ण वृद्धि दस्तावेज़ अतिरिक्त I/O को ट्रिगर कर सकता है इसलिए प्रदर्शन समस्या का कारण बनता है।

एमएमएपीवी1 और वायर्ड टाइगर स्टोरेज इंजन की तुलना करना

<थ>एमएमएपीवी1
मुख्य विशेषता वायर्ड टाइगर
CPU प्रदर्शन दुर्भाग्य से अधिक CPU कोर जोड़ने से प्रदर्शन में सुधार नहीं होता है मल्टीकोर सिस्टम के साथ प्रदर्शन में सुधार होता है
एन्क्रिप्शन स्मृति-मैप की गई फ़ाइलों के उपयोग के कारण, यह किसी एन्क्रिप्शन का समर्थन नहीं करता मोंगोडीबी एंटरप्राइज़ और बीटा इंस्टॉलेशन दोनों में ट्रांज़िट और बाकी दोनों डेटा के लिए एन्क्रिप्शन उपलब्ध है
मापनीयता समवर्ती लिखता है कि संग्रह-स्तर लॉकिंग के परिणाम से स्केल आउट करना असंभव हो जाता है। कम से कम लॉकिंग स्तर के बाद से स्केलिंग आउट होने की उच्च संभावना दस्तावेज़ ही है।
ट्यूनिंग इस स्टोरेज इंजन को ट्यून करने की बहुत कम संभावनाएं कैश आकार, चेकपॉइंट अंतराल और टिकट पढ़ने/लिखने जैसे चर के आसपास बहुत सारी ट्यूनिंग की जा सकती है
डेटा संपीड़न कोई डेटा संपीड़न नहीं इसलिए अधिक स्थान का उपयोग किया जा सकता है तड़क-भड़क और zlib संपीड़न विधियां उपलब्ध हैं इसलिए दस्तावेज़ MMAPv1 की तुलना में कम स्थान घेर सकते हैं
परमाणु लेनदेन केवल एक दस्तावेज़ के लिए लागू संस्करण 4.0 से बहु-दस्तावेज़ों पर परमाणु लेनदेन समर्थित है।
स्मृति मशीन की सभी निःशुल्क मेमोरी को इसके कैशे के रूप में उपयोग किया जाता है फाइल सिस्टम कैश और आंतरिक कैश का उपयोग किया जाता है
अपडेट इन-प्लेस अपडेट का समर्थन करता है इसलिए भारी मात्रा में इंसर्ट्स, रीड और इन-प्लेस अपडेट के साथ वर्कलोड में उत्कृष्टता प्राप्त करता है इन-प्लेस अपडेट का समर्थन नहीं करता। पूरे दस्तावेज़ को फिर से लिखना होगा।

निष्कर्ष

डेटाबेस के लिए स्टोरेज इंजन चयन में आने पर, बहुत से लोग नहीं जानते कि किसे चुनना है। चुनाव आम तौर पर उस कार्यभार पर निर्भर करता है जिसके अधीन इसे किया जाएगा। एक सामान्य गेज पर, MMAPv1 एक खराब विकल्प बनाएगा और इसीलिए MongoDB ने WiredTiger विकल्प में बहुत प्रगति की है। हालांकि, यह अभी भी उपयोग के मामले के आधार पर कुछ अन्य स्टोरेज इंजनों से आगे निकल सकता है, उदाहरण के लिए जहां आपको केवल रीड वर्कलोड करने की आवश्यकता होती है या बड़े दस्तावेज़ों के साथ कई अलग-अलग संग्रह स्टोर करने की आवश्यकता होती है जिससे 1 या 2 फ़ील्ड अक्सर अपडेट होते हैं।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. रिमोट सर्वर से मोंगोडम्प

  2. मोंगोडब से पांडा में डेटा कैसे आयात करें?

  3. Node.js त्रुटि त्रुटि:मॉड्यूल 'नेवला' नहीं खोजा जा सका

  4. MongoDB पर मंदी का प्रदर्शन प्रभाव:AWS, Azure और DigitalOcean

  5. MongoDB, MapReduce और छँटाई