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

MongoDB 4.2 में नया क्या है?

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

कई उत्पादों को ध्यान में रखते हुए, नए प्रमुख संस्करण के पहले छोटे संस्करणों से पहले वाले उत्पादों में सबसे महत्वपूर्ण सुधार हैं। उदाहरण के लिए, मैं संस्करण 4.2.0 की तुलना में रिलीज के कुछ दिनों बाद उत्पादन में MongoDB संस्करण 4.2.1 रखना पसंद करूंगा।

इस ब्लॉग में हम चर्चा करने जा रहे हैं कि क्या शामिल किया गया है और MongoDB संस्करण 4.2 में क्या सुधार किए गए हैं

MongoDB 4.2 में नया क्या है

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

वितरित लेनदेन

लेनदेन महत्वपूर्ण डेटाबेस विशेषताएं हैं जो डेटा स्थिरता और अखंडता सुनिश्चित करती हैं, विशेष रूप से वे जो एसीआईडी ​​​​प्रक्रियाओं की गारंटी देती हैं। MongoDB संस्करण 4.2 अब प्रतिकृति सेट पर बहु-दस्तावेज़ लेनदेन का समर्थन करता है और वितरित लेनदेन दृष्टिकोण के माध्यम से एक शार्प्ड क्लस्टर का समर्थन करता है। लेन-देन का उपयोग करने के लिए समान सिंटैक्स को पिछले 4.0 संस्करण के रूप में बनाए रखा गया है।

हालांकि, क्लाइंट ड्राइवर विनिर्देश थोड़ा बदल गया है इसलिए यदि कोई MongoDB 4.2 में लेनदेन का उपयोग करने का इरादा रखता है, तो आपको ड्राइवरों को उन संस्करणों में अपग्रेड करना होगा जो 4.2 सर्वर के साथ संगत हैं।

यह संस्करण स्मृति उपयोग के संदर्भ में लेन-देन के आकार को सीमित नहीं करता है बल्कि केवल आपके हार्डवेयर के आकार और हार्डवेयर प्रबंधन क्षमता पर निर्भर करता है।

संस्करण 4.2 के साथ अब वैश्विक क्लस्टर लोकेल पुनर्असाइनमेंट संभव है। कहने का तात्पर्य यह है कि, एक भू-क्षेत्र शार्डिंग कार्यान्वयन के लिए, यदि क्षेत्र A में रहने वाला कोई उपयोगकर्ता अपने स्थान फ़ील्ड के मान को बदलकर, क्षेत्र B में जाता है, तो डेटा को लेन-देन के माध्यम से क्षेत्र A से B में स्वचालित रूप से स्थानांतरित किया जा सकता है।

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

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

लेन-देन का उपयोग करने के एक अच्छे अभ्यास में शामिल हैं:

  1. एक लेन-देन के अंदर अनुक्रमित प्रश्नों का उपयोग करने से बचें क्योंकि यह सुनिश्चित करने का एक तरीका है कि ऑप धीमा नहीं होगा।
  2. आपके लेन-देन में कुछ दस्तावेज़ शामिल होने चाहिए।

MongoDB गतिशील स्कीमा प्रारूप और एम्बेडिंग सुविधा के साथ, आप पहले उपाय के रूप में लेनदेन का उपयोग करने की आवश्यकता से बचने के लिए सभी फ़ील्ड को एक ही संग्रह में रखने का विकल्प चुन सकते हैं।

वाइल्डकार्ड अनुक्रमणिका

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

{

Sport: ‘Chess’,

playerName: ‘John Mah’,

Career_earning: {amount: NumberDecimal(“3000”), currency: “EUR”},

gamesPlayed:25,

career_titles:10

},

{

Sport: Tennis,

playerName: ‘Semenya Jones,

Career_earning: {amount: NumberDecimal(“34545”), currency: “USD”},

Event: {

name:”Olympics”,

career_titles:10,

career_tournaments:14

}

वाइल्डकार्ड इंडेक्स का उपयोग करके पूरे दस्तावेज़ को इंडेक्स करके, आप इंडेक्स के रूप में किसी भी मनमानी फ़ील्ड का उपयोग करके एक क्वेरी बना सकते हैं।

वाइल्डकार्ड अनुक्रमणिका बनाने के लिए

$db.collection.createIndex({“fieldA.$**”: 1})

यदि चयनित फ़ील्ड एक नेस्टेड दस्तावेज़ या एक सरणी है, तो वाइल्डकार्ड अनुक्रमणिका दस्तावेज़ में फिर से आ जाती है और दस्तावेज़ या सरणी में सभी फ़ील्ड के लिए मान संग्रहीत करती है।

पुन:प्रयास करने योग्य पढ़ना और लिखना

आम तौर पर एक डेटाबेस में कुछ बार-बार नेटवर्क क्षणिक रुकावटें आ सकती हैं, जिसके परिणामस्वरूप क्वेरी आंशिक रूप से या पूरी तरह से निष्पादित नहीं हो सकती है। हो सकता है कि ये नेटवर्क त्रुटियां इतनी गंभीर न हों, इसलिए एक बार फिर से कनेक्ट होने के बाद इन प्रश्नों के पुन:प्रयास का अवसर प्रदान करें। MongoDB 4.2 से शुरू होकर, डिफ़ॉल्ट रूप से पुनः प्रयास कॉन्फ़िगरेशन सक्षम है। MongoDB ड्राइवर कुछ लेन-देन के लिए असफल पढ़ने और लिखने का पुन:प्रयास कर सकते हैं जब भी उन्हें मामूली नेटवर्क त्रुटियों का सामना करना पड़ता है या जब वे शार्प क्लस्टर/प्रतिकृति सेट में कुछ स्वस्थ प्राथमिक खोजने में असमर्थ होते हैं। हालाँकि, यदि आप पुन:प्रयास करने योग्य लेखन नहीं चाहते हैं, तो आप उन्हें अपने कॉन्फ़िगरेशन में स्पष्ट रूप से अक्षम कर सकते हैं, लेकिन मुझे कोई अनिवार्य कारण नहीं मिल रहा है कि किसी को उन्हें अक्षम क्यों करना चाहिए।

यह सुविधा यह सुनिश्चित करने के लिए है कि किसी भी स्थिति में MongoDB अवसंरचना में परिवर्तन होने पर, एप्लिकेशन कोड प्रभावित नहीं होना चाहिए। मोंगोडीबी के सह-संस्थापक एलियट होरोविट्ज़ द्वारा समझाया गया एक उदाहरण के बारे में, एक वेबपेज के लिए जो 20 अलग-अलग डेटाबेस संचालन करता है, पूरी चीज को फिर से लोड करने या पूरे वेब पेज को किसी प्रकार के लूप में लपेटने के बजाय, कवर के तहत ड्राइवर बस ऑपरेशन को फिर से करने का फैसला कर सकते हैं। जब भी कोई लेखन विफल हो जाता है, तो यह स्वचालित रूप से पुनः प्रयास करेगा और सर्वर के साथ एक अनुबंध होगा ताकि यह गारंटी दी जा सके कि प्रत्येक लेखन केवल एक बार होता है।

पुन:प्रयास करने योग्य लेखन केवल एक बार पुनः प्रयास करने का प्रयास करता है जो प्रतिकृति सेट चुनावों और  क्षणिक नेटवर्क त्रुटियों को दूर करने में मदद करता है लेकिन लगातार नेटवर्क त्रुटियों के लिए नहीं।

पुन:प्रयास करने योग्य लेखन उन उदाहरणों को संबोधित नहीं करते हैं जहां विफलता अवधि पैरामीटर कॉन्फ़िगरेशन में सर्वर चयन समय से अधिक हो जाती है।

इस MongoDB संस्करण के साथ, कोई भी दस्तावेज़ शार्प कुंजी मानों को अपडेट कर सकता है (सिवाय अगर शार्पकी अपरिवर्तनीय _id फ़ील्ड है) एक एकल-दस्तावेज़ खोज जारी करके और लेनदेन में या एक पुन:प्रयास करने योग्य लेखन के रूप में संचालन को संशोधित/अपडेट करें ।

MongoDB संस्करण 4.2 अब एकल-दस्तावेज़ अप्सर्ट ऑपरेशन (यानी upsert:true और multi:false) को फिर से आज़मा सकता है, जो डुप्लिकेट कुंजी त्रुटि के कारण विफल हो सकता है यदि ऑपरेशन इन प्रमुख शर्तों को पूरा करता है:

  1. लक्ष्य संग्रह में एक अद्वितीय अनुक्रमणिका है जिससे डुप्लिकेट कुंजी त्रुटि हुई है।
  2. अपडेट ऑपरेशन क्वेरी विधेय में किसी भी फ़ील्ड को संशोधित नहीं करेगा।
  3. अपडेट मैच कंडीशन या तो सिंगल इक्वलिटी विधेय {फ़ील्ड:"वैल्यू"} है या एक लॉजिकल एंड ऑफ़ इक्वलिटी प्रेडिकेट {filed:"value", फ़ील्ड0:"value0"}
  4. अद्वितीय अनुक्रमणिका कुंजी पैटर्न में फ़ील्ड का सेट अद्यतन क्वेरी विधेय में फ़ील्ड के सेट से मेल खाता है।

स्वचालित क्लाइंट-साइड फ़ील्ड-स्तरीय एन्क्रिप्शन

MongoDB संस्करण 4.2 स्वचालित क्लाइंट-साइड फ़ील्ड स्तर एन्क्रिप्शन (CSFLE) के साथ आता है, एक ऐसी सुविधा जो डेवलपर्स को सर्वर पर भेजे जाने से पहले क्लाइंट पक्ष पर दस्तावेज़ के अलग-अलग फ़ील्ड को चुनिंदा रूप से एन्क्रिप्ट करने की अनुमति देती है। इस प्रकार एन्क्रिप्टेड डेटा को डेटाबेस होस्ट करने वाले प्रदाताओं और डेटाबेस तक सीधे पहुंच रखने वाले किसी भी उपयोगकर्ता से निजी रखा जाता है।

केवल सही एन्क्रिप्शन कुंजियों तक पहुंच वाले एप्लिकेशन ही सुरक्षित डेटा को डिक्रिप्ट और पढ़ सकते हैं। यदि एन्क्रिप्शन कुंजी हटा दी जाती है, तो एन्क्रिप्ट किया गया सभी डेटा अपठनीय हो जाएगा।

ध्यान दें:यह सुविधा केवल MongoDB एंटरप्राइज़ के लिए ही उपलब्ध है।

अभिव्यंजक अपडेट के लिए बेहतर क्वेरी भाषा

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

इस संस्करण के साथ, अब आप एक अद्यतन विवरण के माध्यम से सीधे सरणियों को संभाल सकते हैं, योग और अन्य गणित संचालन कर सकते हैं।

ऑन-डिमांड भौतिकीकृत दृश्य

MongoDB में डेटा एकत्रीकरण पाइपलाइन ढांचा एक दस्तावेज़ को कुछ वांछित स्थिति में बदलने के विभिन्न चरणों के साथ एक महान विशेषता है। मोंगोडीबी संस्करण 4.2 एक नया चरण $ मर्ज पेश करता है जो मेरे लिए मैं कहूंगा कि इसने मुझे अंतिम आउटपुट के साथ काम करने में कुछ समय बचाया जिसे संग्रह में संग्रहीत करने की आवश्यकता थी। प्रारंभ में, $out चरण एकत्रीकरण के आधार पर एक नया संग्रह बनाने की अनुमति देता है और प्राप्त परिणामों के साथ संग्रह को पॉप्युलेट करता है। यदि संग्रह पहले से मौजूद है, तो यह $ मर्ज चरण के विपरीत नए परिणामों के साथ संग्रह को अधिलेखित कर देगा, जो संग्रह को पूरी तरह से बदलने के बजाय मौजूदा आउटपुट में केवल पाइपलाइन परिणामों को शामिल करता है। $out चरण के साथ हर बार एक संपूर्ण संग्रह को पुन:उत्पन्न करने से बहुत अधिक CPU और IO की खपत होती है जो डेटाबेस के प्रदर्शन को ख़राब कर सकता है। इसलिए आउटपुट सामग्री को समय पर अपडेट किया जाएगा जिससे उपयोगकर्ता ऑन-डिमांड भौतिक दृश्य बनाने में सक्षम हो सकें

आधुनिक रखरखाव संचालन

डेवलपर्स के पास अब MongoDB संस्करण 4.2 के साथ एक महान परिचालन अनुभव हो सकता है, जिसमें एकीकृत विशेषताएं हैं जो उच्च उपलब्धता, क्लाउड प्रबंधित बैकअप रणनीति को बढ़ाती हैं, निगरानी शक्ति और अलर्ट सिस्टम में सुधार करती हैं। MongoDB Atlas और MongoDB Ops Manager इन सुविधाओं के लिए उपलब्ध कराने वाले प्लेटफ़ॉर्म हैं। बाद वाले को MongoDB ऑन-एंटरप्राइज़ चलाने के लिए सर्वश्रेष्ठ के रूप में लेबल किया गया है। निजी क्लाउड में जाने वाले ऑन-प्रिमाइसेस उपयोगकर्ताओं के लिए इसे कुबेरनेट्स ऑपरेटर के साथ भी एकीकृत किया गया है। यह इंटरफ़ेस किसी को सीधे Ops Manager को नियंत्रित करने में सक्षम बनाता है।

MongoDB संस्करण 4.2 में कुछ आंतरिक परिवर्तन किए गए हैं जिनमें शामिल हैं:

  1. खुले कर्सर की सूची बनाना.
  2. एमएमएपीवी1 स्टोरेज इंजन को हटाना।
  3. WiredTiger डेटा फ़ाइल की मरम्मत में सुधार।
  4. डायग्नोस्टिक फ़ील्ड में अब queryHash हो सकता है
  5. मोंगोस नोड्स के लिए ऑटो-स्प्लिटिंग थ्रेड को हटा दिया गया है।

निष्कर्ष

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. परमाणु ऑपरेशन के साथ एक दस्तावेज़ में बूलियन फ़ील्ड को कैसे टॉगल करें?

  2. सबसे अच्छा MongoDB GUI कौन सा है? — 2019 अपडेट

  3. डोकर के साथ MongoDB पहले कनेक्ट पर सर्वर [लोकलहोस्ट:27017] से कनेक्ट करने में विफल रहा

  4. एक मोंगोडब संग्रह में डुप्लिकेट दस्तावेज़ों को सम्मिलित करने से कैसे रोकें

  5. MongoDB चेन प्रतिकृति मूल बातें