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

एक क्लस्टर में MongoDB चलाने के लिए सर्वोत्तम अभ्यास

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

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

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

इस लेख में हम आपके अनुप्रयोगों के कुशल प्रदर्शन के लिए मोंगोडीबी क्लस्टर के लिए नियोजित कुछ सर्वोत्तम प्रथाओं पर चर्चा करने जा रहे हैं। कुछ कारकों पर विचार करना चाहिए जिनमें शामिल हैं...

  1. नवीनतम संस्करण में अपग्रेड करना
  2. उपयुक्त भंडारण इंजन
  3. हार्डवेयर संसाधन आवंटन
  4. प्रतिकृति और शार्डिंग
  5. सर्वर कॉन्फ़िगरेशन फ़ाइल कभी न बदलें
  6. अच्छी सुरक्षा रणनीति

नवीनतम संस्करण में अपग्रेड करना

मैंने 3.2 से पहले के संस्करणों से MongoDB के साथ काम किया है और ईमानदारी से कहूं तो उस समय चीजें आसान नहीं थीं। महान विकास, फिक्स्ड बग और नई पेश की गई सुविधाओं के साथ, मैं आपको सलाह दूंगा कि आप अपने डेटाबेस को हमेशा नवीनतम संस्करण में अपग्रेड करें। उदाहरण के लिए, पहले से मौजूद मैप-रिड्यूस अवधारणा पर भरोसा करने के बजाय एकत्रीकरण ढांचे की शुरूआत का बेहतर प्रदर्शन प्रभाव पड़ा। नवीनतम संस्करण 4.0 के साथ, अब किसी के पास बहु दस्तावेज़ लेनदेन सुविधा का उपयोग करने की क्षमता है जो आम तौर पर थ्रूपुट संचालन में सुधार करती है। नवीनतम संस्करण में कुछ अतिरिक्त नए प्रकार के रूपांतरण ऑपरेटर भी हैं जैसे $toInt, $toString, $trim और $toBool। यह ऑपरेटर डेटा के सत्यापन में बहुत मदद करेगा इसलिए डेटा स्थिरता की कुछ भावना पैदा करेगा। अपग्रेड करते समय कृपया दस्तावेज़ देखें ताकि आप छोटी-छोटी गलतियां करने से बच सकें जो आगे जाकर गलत हो सकती हैं।

उपयुक्त संग्रहण इंजन चुनें

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

भंडारण इंजन के चयन के संबंध में कुछ विचार इस पहलू पर निर्भर हैं:

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

हार्डवेयर संसाधन आवंटन

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

  • अपने डेटाबेस की लगातार निगरानी करें और अपेक्षाओं के अनुसार समायोजित करें। जैसा कि पहले उल्लेख किया गया है, उपयोगकर्ताओं की संख्या में वृद्धि अब और अधिक प्रश्नों को ट्रिगर करेगी, विशेष रूप से यदि आप अनुक्रमित नियोजित करते हैं तो कार्यभार में वृद्धि होगी। आप एप्लिकेशन के अंत में इस प्रभाव का अनुभव करना शुरू कर सकते हैं जब यह समय के साथ लिखने बनाम पढ़ने के प्रतिशत में बदलाव रिकॉर्ड करना शुरू कर देता है। इसलिए आपको इस समस्या को हल करने के लिए अपने हार्डवेयर कॉन्फ़िगरेशन को फिर से कॉन्फ़िगर करने की आवश्यकता होगी। सिस्टम प्रदर्शन पैरामीटर में परिवर्तन का पता लगाने के लिए mongoperf और MMS टूल का उपयोग करें।
  • अपनी सभी प्रदर्शन आवश्यकताओं को पहले ही दस्तावेज़ित करें। जब आप एक ही समस्या का सामना करते हैं तो आपके पास कम से कम एक संदर्भ बिंदु होगा जो आपको कुछ समय बचाएगा। आपकी रिकॉर्डिंग में उस डेटा का आकार शामिल होना चाहिए जिसे आप स्टोर करना चाहते हैं, विलंबता के संदर्भ में प्रश्नों का विश्लेषण और एक निश्चित समय में आप कितना डेटा एक्सेस करना चाहते हैं। उत्पादन वातावरण में आपको यह निर्धारित करने की आवश्यकता है कि आप प्रति सेकंड कितने अनुरोधों को संभालने जा रहे हैं और अंत में आप कितनी विलंबता को सहन करने जा रहे हैं।
  • अवधारणा का प्रमाण प्रस्तुत करें। परफॉर्मा स्कीमा/इंडेक्स डिज़ाइन और क्वेरी पैटर्न को समझें और फिर कार्यशील सेट आकार के अपने अनुमान को परिशोधित करें। इस कॉन्फ़िगरेशन को एप्लिकेशन के क्रमिक संशोधनों के साथ परीक्षण के लिए एक संदर्भ बिंदु के रूप में रिकॉर्ड करें।
  • अपने परीक्षण वास्तविक कार्यभार के साथ करें। प्रूफ़ अवधारणा के चरण को पूरा करने के बाद, वास्तविक विश्व डेटा और प्रदर्शन आवश्यकताओं के साथ पर्याप्त परीक्षण करने के बाद ही परिनियोजित करें।

प्रतिकृति और साझाकरण

MongoDB क्लस्टर में क्रमशः डेटा की उच्च उपलब्धता और बढ़ी हुई क्षैतिज मापनीयता सुनिश्चित करने की ये दो प्रमुख अवधारणाएँ हैं।

मूल रूप से सर्वरों के बीच डेटा को छोटे भागों में विभाजित करना, जिन्हें शार्क के रूप में जाना जाता है। शार्क के बीच डेटा का संतुलन स्वचालित है, डेटाबेस को ऑफ़लाइन किए बिना शार्क को जोड़ा या हटाया जा सकता है।

दूसरे छोर पर प्रतिकृति उच्च उपलब्धता के लिए डेटा की एक से अधिक अनावश्यक प्रतियां रखता है। यह MongoDB में एक इन-बिल्ट फीचर है और विशेष नेटवर्क की आवश्यकता के बिना एक विस्तृत क्षेत्र नेटवर्क पर काम करता है। क्लस्टर सेटअप के लिए, मेरा सुझाव है कि आपके पास कम से कम 2+ mongos, 3 कॉन्फिग सर्वर, 1 शार्प, शार्प्ड क्लस्टर में शामिल मशीनों के बीच कनेक्टिविटी सुनिश्चित करें। कॉन्फ़िगरेशन में IP के बजाय DNS नाम का उपयोग करें।

उत्पादन वातावरण के लिए कम से कम 3 सदस्यों के साथ एक प्रतिकृति सेट का उपयोग करें और ओप्लॉग आकार जैसे अधिक कॉन्फ़िगरेशन चर को पॉप्युलेट करना याद रखें।

अपने सदस्यों के लिए अपना मोंगॉड इंस्टेंस शुरू करते समय उसी कीफाइल का उपयोग करें।

आपके शार्पकी के कुछ विचारों में शामिल होना चाहिए:

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

सर्वर कॉन्फ़िगरेशन फ़ाइल कभी न बदलें

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

अच्छी सुरक्षा रणनीति

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

निष्कर्ष

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. कुल 16MB सीमा से बचें

  2. बटन क्लिक के साथ उल्का पृष्ठ ताज़ा करना

  3. node.js और एक्सप्रेस - वैश्विक मॉड्यूल और अनुप्रयोग संरचना के लिए सर्वोत्तम अभ्यास

  4. MongoClient v3.0 का उपयोग करते समय db.Collection एक फ़ंक्शन नहीं है

  5. नेवला इंटरनेट के बिना कनेक्ट नहीं हो सकता