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

MongoDB इंडेक्स बनाता है - उपयोगकर्ताओं को नए बिल्ड को ट्रिगर करने से रोकता है

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

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

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

var privs = db.getRole('readWrite',{ showPrivileges: true });
privs.privileges.forEach(function (item, index) {
  var index = item.actions.indexOf("createIndex");
  if (index !== -1) item.actions.splice(index, 1);
});
db.createRole({role:"readWriteNoIndex",privileges:privs.privileges,roles:[]});
  1. कोड स्निपेट की सामग्री को createRole.js के रूप में सहेजें।
  2. नीचे दिए गए सिंटैक्स का उपयोग करके स्क्रिप्ट चलाएँ:
mongo -u <user> -p <password> <host>:27017/<db name> --authenticationDatabase admin createRole.js

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

आपके लिए और टिप्स

MongoDB में केस-असंवेदनशील इंडेक्स कैसे बनाएं

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

MongoDB में रनवे इंडेक्स बिल्ड को कैसे रोकें

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

MongoDB Regex, अनुक्रमणिका और प्रदर्शन

MongoDB $regex ऑपरेटर का उपयोग करके रेगुलर एक्सप्रेशन का समर्थन करता है। हालांकि इन मोंगोडीबी रेगेक्स प्रश्नों में नकारात्मक पक्ष है, लेकिन एक प्रकार का रेगेक्स इंडेक्स का खराब उपयोग करता है और परिणाम प्रदर्शन समस्याओं में परिणाम देता है। अधिक जानें


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेस्टेड सरणी के भीतर केवल मिलान किए गए उप-दस्तावेज़ तत्वों को वापस करें

  2. नेवला डिजाइन मॉडल में एंबेडेड दस्तावेज़ बनाम संदर्भ?

  3. मोंगोडब कुल प्रकार और समूह के भीतर सीमा

  4. मोंगोडब / नेवला में आंशिक अनुक्रमणिका

  5. रेडिस कब? मोंगोडीबी कब?