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

MongoDB पर बिल्डिंग इंडेक्स के खतरे

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

<एच3>1. अग्रभूमि अनुक्रमणिका बिल्ड

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

<एच3>2. बैकग्राउंड इंडेक्स बिल्ड

जैसा कि नाम से ही स्पष्ट है कि बैकग्राउंड इंडेक्सिंग प्रक्रिया आपके डेटाबेस सर्वर की उपलब्धता को प्रभावित किए बिना बैकग्राउंड में इंडेक्स बनाती है। हालाँकि, यह अभी भी एक संसाधन-गहन ऑपरेशन है और आपको प्रदर्शन में गिरावट देखने की उम्मीद करनी चाहिए। साथ ही चूंकि यह पृष्ठभूमि में हो रहा है, इसलिए इसे अग्रभूमि अनुक्रमणिका की तुलना में बनाने में काफी समय लग सकता है। MongoDB के पिछले संस्करणों में (<2.6) जब आपने एक प्रतिकृति सेट के प्राथमिक पर एक पृष्ठभूमि सूचकांक का निर्माण किया था, तो यह द्वितीयक सर्वर पर "अग्रभूमि" निर्माण के रूप में चलेगा, शुक्र है कि अब ऐसा नहीं है - यह पृष्ठभूमि का निर्माण है सभी नोड्स। अगर कोई बैकग्राउंड इंडेक्स बिल्ड बाधित होता है तो यह सर्वर रीस्टार्ट होने पर फोरग्राउंड इंडेक्स बिल्ड के रूप में फिर से शुरू हो जाएगा।

<एच3>3. रोलिंग इंडेक्स बिल्ड

रोलिंग इंडेक्स बिल्ड प्रक्रिया एक समय में केवल एक नोड पर इंडेक्स बनाती है। यह कुछ इस प्रकार है:

  1. प्रतिकृति सेट से द्वितीयक नोड को घुमाएं (आप पोर्ट बदलकर या स्टैंडअलोन मोड में पुनरारंभ करके ऐसा कर सकते हैं)।
  2. अग्रभूमि में इस नोड पर अनुक्रमणिका बनाएँ। एक बार इंडेक्स बन जाने के बाद, नोड को वापस रेप्लिका सेट में घुमाएं।
  3. एक बार जब नोड परिवर्तनों को पकड़ लेता है तो अगले नोड पर चला जाता है। अगर अगला नोड प्राथमिक है तो आपको इसे सेकेंडरी बनाने के लिए rs.stepDown() करना होगा।
  4. कुल्ला और दोहराएं।

इंडेक्स निर्माण प्रक्रिया के अधिक विवरण MongoDB दस्तावेज़ में हैं।

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

अगर आपके पास रेप्लिका सेट नहीं है, तो क्या आप रोलिंग इंडेक्स बिल्ड कर सकते हैं? दुर्भाग्य से स्टैंडअलोन उदाहरणों के लिए, "बैकग्राउंड इंडेक्स बिल्ड" ही एकमात्र विकल्प है।

स्केलग्रिड पर अनुक्रमणिका बनाने के लिए रोलिंग इंडेक्स बिल्ड हमारा पसंदीदा तरीका है। हम एक यूआई भी प्रदान करते हैं और हमारे यूआई से पूरी प्रक्रिया को शुरू करना आपके लिए आसान बनाते हैं। हमारा बैकएंड पूर्ण इंडेक्स बिल्ड के लिए आवश्यक सभी ऑर्केस्ट्रेशन करेगा - यह सर्वर इंडेक्स बिल्ड द्वारा सर्वर को ट्रिगर करेगा। आपको बस हमारे साथ सेटअप करने की आवश्यकता है और फिर इंगित करें और क्लिक करें!

हमेशा की तरह, यदि आपके और प्रश्न हैं, तो आप [email protected] पर हमसे संपर्क कर सकते हैं।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. क्या MongoDB में _id प्रकार को पूर्णांक में बदलना बुरा है?

  2. MongoDB में कस्टम ऑब्जेक्ट आईडी बनाना

  3. MongoDB के लिए मॉनिटरिंग Percona सर्वर - प्रमुख मेट्रिक्स

  4. एक 'या' शर्त के साथ MongoDB क्वेरी

  5. मोंगोडब टीटीएल दस्तावेजों को नहीं हटा रहा है