MongoDB MMAPv1 बनाम वायर्डटेगर भंडारण इंजन


25

में mongoDB3 एक नया भंडारण इंजन दिखाई दिया: WiredTigerफिर भी, MMAPv1 अभी भी मानगो में डिफ़ॉल्ट विकल्प है

एक दूसरे से बेहतर नहीं हो सकता है, यह अक्सर उपयोग के मामले और नौकरी के लिए सही उपकरण चुनने की बात है। लेकिन कौन सा इंजन किस काम के लिए सही है?

वास्तव में, जबकि MMAPv1 डिफ़ॉल्ट इंजन है, लगभग हर क्षेत्र में WiredTiger बेहतर लगता है। इसमें MMAPv1 प्लस जैसी ही विशेषताएं हैं:

  • बेहतर लेखन प्रदर्शन,
  • दस्तावेज़ स्तर संगामिति,
  • संपीड़न,
  • स्नैपशॉट्स और चौकियों प्रणाली।

मुझे MongoDB के ब्लॉग पर एक तुलना तालिका मिली :

वायर्डटाइगर और MMAPv1 की तुलना

तो सिवाय इसके कि अगर आप सोलारिस पर हैं, तो क्या वायर्डटेगर को चुनने का कोई कारण नहीं है?


संपादित करें

यहां दो वीडियो दिए गए हैं जो विवरण में वायर्डटाइगर और एमएमएपी 1 के आंतरिक विवरणों के बारे में बताते हैं


यहाँ सभी लोग ... आप इस विषय पर बहुत अच्छी व्याख्या के लिए blog.clevertap.com/ ... पर जा सकते हैं
therealprashant

जवाबों:


26

निजी तौर पर, मैं mmapv1 स्टोरेज इंजन को तीन कारणों से पसंद करता हूं।

कारण 1: परिपक्वता

ऐसा नहीं है कि WiredTiger अपरिपक्व है। लेकिन एमएमएपीवी 1 अच्छी तरह से समझा जाता है और लड़ाई को हर तरह से ऊपर और नीचे, आगे और पीछे और ऊपर और उससे परे परीक्षण किया जाता है। वायर्डटाइगर में कुछ गंभीर मुद्दे थे (देखें http://jira.mongodb.com विवरण के लिए देखें) काफी हाल ही में, और मैं अपने ग्राहकों को अगले एक कठिन रास्ता खोजने के लिए तैयार नहीं हूं।

कारण 2: विशेषताएं

दिया, WT कुछ च है ... अनजाने में भयानक विशेषताएं। बात यह है: मैंने किसी को उनसे लाभान्वित होते नहीं देखा। संपीड़न? किसी भी तरह से, आप सस्ते डिस्क स्थान के लिए प्रदर्शन को प्राप्त करने के बजाय कठिन बलिदान करते हैं। दस्तावेजों के विस्तार के लिए दस्तावेज़ प्रवासन समस्या का अभाव? खैर, हमारे पास अभी भी 16 एमबी आकार की सीमा है और एम्बेडेड दस्तावेजों के लिए जटिलता बढ़ गई है, खासकर जब एम्बेडिंग ओवरडोन है।

अन्य विशेषताएं हैं, लेकिन सामान्य तौर पर: मुझे अब तक उनसे बहुत अधिक लाभ नहीं मिला है ।

कारण 3: स्वामित्व की कुल लागत

नई परियोजनाओं के लिए, WT ठीक हो सकता है, खासकर 3.2 के बाद से, क्योंकि निम्नलिखित लागू नहीं होता है।

डेटा माइग्रेशन करना है महंगा है। इसे नियोजित करने की आवश्यकता है, सभी हितधारकों द्वारा योजना पर सहमति बनाने की आवश्यकता है, आपातकालीन आकस्मिक योजनाएं बनानी होंगी और उन पर सहमति बनानी होगी, प्रवास को तैयार करना, निष्पादित करना और समीक्षा करना होगा। अब हितधारकों के साथ समय की आवश्यकता को गुणा करें जो इस प्रक्रिया का हिस्सा हैं, और डेटा माइग्रेशन स्काईरकेट के लिए लागत। दूसरी ओर निवेश पर रिटर्न छोटा लगता है। यदि आप उन कारकों को ध्यान में रखते हैं, तो माइग्रेशन करने के बजाय आप थोड़ा सा स्केल कर सकते हैं। यदि आप एक माइग्रेशन की योजना बना रहे हैं, ठीक से और समीक्षा की जाती है, तो आपको एक धारणा देने के लिए: मैं लगभग एक "मैन-वीक" प्रति हितधारक का अनुमान लगाता हूँ। प्रति व्यक्ति $ 100 प्रति घंटे की लागत के साथ, और केवल तीन लोग शामिल थे (प्रबंधक, डीबीए और डेवलपर), जिसकी राशि $ 12.000 है। ध्यान दें कि यह एक रूढ़िवादी अनुमान है।

निष्कर्ष

ऊपर उन सभी कारकों ने मुझे इस निष्कर्ष पर पहुंचाया है कि डब्ल्यूटी जो भी उपयोग न करे। इस समय।


अद्यतन करें

यह पोस्ट अभी कुछ महीने पुरानी है, इसलिए यह अपडेट के योग्य है

परिपक्वता पर

परिपक्वता पर मेरी मूल टिप्पणियाँ अप्रचलित की तरह हैं। WiredTiger में अभी कुछ समय के लिए कोई बड़ी समस्या नहीं है और यह MongoDB 3.2 के रूप में डिफ़ॉल्ट भंडारण इंजन बन गया है

सुविधाओं पर

मेरी मूल टिप्पणियाँ अभी भी कुछ वैधता, इमो धारण करती हैं।

दबाव

हालाँकि, जब बजट पर तंग होना या, अधिक आम तौर पर बोलना, प्रदर्शन प्राथमिक चिंता नहीं है, प्रदर्शन ट्रेडऑफ़ छोटा है, और आप मूल रूप से डिस्क स्पेस के लिए मामूली प्रदर्शन प्रभाव (जब असम्पीडित डब्ल्यूटी की तुलना में) व्यापार करते हैं, तो उपयोग करना अन्यथा क्या निष्क्रिय होगा। आसपास: सीपीयू।

एन्क्रिप्शन

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

दस्तावेज़ स्तर लॉकिंग

मुझे स्वीकार करना होगा कि मैं मूल रूप से अपने उपरोक्त विश्लेषण में WT की उस विशेषता को छोड़ दिया था, मुख्य रूप से क्योंकि यह मेरे या मेरे ग्राहकों के लिए लागू नहीं था जब मैंने मूल उत्तर लिखा था।

आपके सेटअप के आधार पर, मुख्य रूप से जब आपके पास कई समवर्ती लेखन ग्राहक होते हैं, तो यह सुविधा एक शानदार प्रदर्शन को बढ़ावा दे सकती है।

स्वामित्व की कुल लागत पर

पलायन करना अब भी महंगा है। हालाँकि, परिपक्वता में बदलाव और सुविधाओं पर बदले हुए दृष्टिकोण को ध्यान में रखते हुए, एक प्रवासन निवेश के लायक हो सकता है यदि:

  • आपको केवल एन्क्रिप्शन (एंटरप्राइज़ संस्करण) की आवश्यकता है! "
  • प्रदर्शन आपकी पूर्ण प्राथमिक चिंता नहीं है और आप संपीड़न का उपयोग करके लंबे समय में पैसे बचा सकते हैं (रूढ़िवादी रूप से गणना करें)
  • आपके पास समवर्ती लेखन की बहुत सारी प्रक्रियाएँ हैं, क्योंकि प्रदर्शन में वृद्धि से आप ऊर्ध्वाधर या क्षैतिज स्केलिंग को बचा सकते हैं।

अपडेट किया गया निष्कर्ष

नई परियोजनाओं के लिए, मैं अभी WiredTiger का उपयोग करता हूं। चूंकि संपीडित से एक असम्पीडित वायर्डटाइगर स्टोरेज में माइग्रेशन आसान है, इसलिए मैं सीपीयू के उपयोग को बढ़ाने के लिए सम्पीडन के साथ शुरुआत करता हूं ("हिरन के लिए और अधिक धमाका करें")। संपीड़न के प्रदर्शन या UX पर ध्यान देने योग्य प्रभाव होना चाहिए, मैं WiredTiger को असम्पीडित करने के लिए माइग्रेट करता हूं।

बहुत से समवर्ती लेखकों वाली परियोजनाओं के लिए, पलायन करने या न करने का जवाब लगभग हमेशा "हां", भी - जब तक कि परियोजना का बजट निवेश को प्रतिबंधित नहीं करता है। लंबे समय में, प्रदर्शन में वृद्धि खुद के लिए भुगतान करना चाहिए, अगर तैनाती अन्यथा यथोचित नियोजित थी। हालांकि, आपको गणना में कुछ विकास समय जोड़ने की आवश्यकता है, क्योंकि कुछ मामलों में ड्राइवर को अपडेट करने की आवश्यकता होती है, और ऐसी समस्याएं हो सकती हैं जिनसे निपटने की आवश्यकता है।

उन परियोजनाओं के लिए जो बजट पर चुस्त हैं और इस समय के लिए अधिक डिस्क स्थान नहीं ले सकते हैं, एक संपीडित वायर्डटाइगर की ओर पलायन एक विकल्प हो सकता है, लेकिन संपीड़न सीपीयू पर थोड़ा भार डालता है, MMAPv1 के साथ कुछ अनसुना। इसके अलावा, इस तरह की परियोजना के लिए माइग्रेशन लागत निषेधात्मक रूप से महंगी हो सकती है।


मार्क आपके मार्क आपके anwser के लिए। मैं आपके तर्कों को समझता हूं। क्या आप नई परियोजनाओं के लिए MMAPv1 में वापस चूक करने की भी सलाह देंगे? मेरा मतलब है, अगर प्रदर्शन एक चिंता का विषय है, तो संपीड़न भी कुल अक्षम हो सकता है। डिस्क स्थान सस्ता है, लेकिन संपीड़न रैम में फिट होने में काम करने में मदद कर सकता है ... और इस प्रकार पूर्णता में लाभ होता है। या मैं गलत हूँ?
बुज़ुत

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

1
यह लेख इंगित करता है कि जिस तरह से अनुक्रमित संग्रहीत हैं, वह एक बहुत बड़ा लाभ है क्योंकि यह आपके अनुक्रमित स्थान को 10 गुना तक कम कर सकता है: ilearnasigoalong.blogspot.com/2015/03/… । डिस्क स्थान सस्ता है, लेकिन राम नहीं है।
बीटी

मैं सुविधाओं पर अपनी बात को लेकर थोड़ा भ्रमित हूं, क्या आप कह रहे हैं कि MMAPv1 में ऐसी विशेषताएं हैं जो वायर्डटेगर नहीं है? यह अच्छा होगा यदि वह खंड थोड़ा स्पष्ट हो।
बीटी

@BT बिल्कुल नहीं। मैं जो कहना चाह रहा था वह यह है कि डब्ल्यूटी में कुछ बहुत अच्छी विशेषताएं हैं जो कुछ उपयोग मामलों के लिए सहायक हो सकती हैं, लेकिन सामान्य रूप से नहीं हैं। जब डेटा स्टोरेज की बात आती है तो मैं कटिंग एज पर बैटल-टेस्टेड स्टोरेज इंजन पसंद करता हूं। लेख के अनुसार: हां, रैम को बचाने के लिए उपसर्ग संपीड़न के साथ यह संभव है , और अगर कोई चिंता नहीं थी, तो यह एक अच्छा विचार हो सकता है। कल्पना कीजिए कि आपको डेटा हानि या प्रदर्शन समस्याओं के लिए विश्वसनीय ठहराया जा सकता है।
मार्कस डब्ल्यू महलबर्ग

5

मेरे दो सेंट:

वायर्डटाइगर में जर्नलिंग हार्ड शटडाउन में अपडेट खो सकता है क्योंकि यह जर्नल रिकॉर्ड को संग्रहीत करने के लिए इन-मेमोरी बफरिंग का उपयोग करता है।

लेखन कार्यों के बीच में, जबकि जर्नल रिकॉर्ड वायर्डटाइगर बफ़र्स में बने रहते हैं, मूंगोड के सख्त बंद होने के बाद अपडेट खो सकते हैं।

में Journaling MMAPv1 डिस्क पर पत्रिका फ़ाइलों में परिवर्तन लिखता है।

यदि डेटा फ़ाइलों पर राइट्स को लागू किए बिना मोंगॉड इंस्टेंस क्रैश हो जाता है, तो जर्नल डेटा फ़ाइलों के लिए अंतिम लिखने के लिए साझा दृश्य पर फिर से लिख सकता है।


4

हम 7x से 10x के प्रदर्शन लाभ के लालच में MMAPv1 से WiredTiger में स्थानांतरित हो गए। हमें MMAPv1 पर वापस लौटना पड़ा क्योंकि MongoDB लॉक हो जाएगा जब वायर्डटाइगर कैश 100% हिट होगा। हमने यहां अपना अनुभव दर्ज किया है - https://blog.clevertap.com/sleepless-nights-with-mongodb-wiredtiger-and-our-return-to-mmapv1/


2
अच्छा लिख ​​दिया। किंडा ने मुझे 2013 में MySQL से PostgreSQL में जाने और फिर 2016 के जून में MySQL में वापस जाने की
याद दिलाई

अच्छी तरह से समझाया हम भी तो MMAPV1 करने के लिए इसे revreted वायर्ड बाघ के साथ एक ही अनुभव है
वीरेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.