निजी तौर पर, मैं 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 के साथ कुछ अनसुना। इसके अलावा, इस तरह की परियोजना के लिए माइग्रेशन लागत निषेधात्मक रूप से महंगी हो सकती है।