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

MongoDB में अनुक्रमणिका के पुनर्निर्माण के लिए क्यों और कब आवश्यक है?

MongoDB प्रलेखन के अनुसार, आमतौर पर अनुक्रमणिका को नियमित रूप से पुनर्निर्माण करने की कोई आवश्यकता नहीं होती है।

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

एमएमएपी स्टोरेज इंजन के साथ एक इंडेक्स के पुनर्निर्माण में कुछ लाभ हो सकता है यदि:

  • डेटा की तुलना में एक इंडेक्स अपेक्षित मात्रा से अधिक स्थान की खपत कर रहा है। नोट:तुलना के लिए आधार रेखा रखने के लिए आपको ऐतिहासिक डेटा और अनुक्रमणिका आकार की निगरानी करने की आवश्यकता है।

  • आप पुराने इंडेक्स फ़ॉर्मैट से नए में माइग्रेट करना चाहते हैं। यदि एक रीइंडेक्स सलाह दी जाती है तो इसका उल्लेख अपग्रेड नोट्स में किया जाएगा। उदाहरण के लिए, MongoDB 2.0 ने महत्वपूर्ण सूचकांक प्रदर्शन सुधार इसलिए रिलीज़ नोट्स में अपग्रेड करने के बाद v2.0 प्रारूप में सुझाया गया रीइंडेक्स शामिल है। इसी तरह, MongoDB 2.6 ने 2dsphere पेश किया। (v2.0) अनुक्रमणिका जिनका एक अलग डिफ़ॉल्ट व्यवहार है (डिफ़ॉल्ट रूप से विरल)। मौजूदा इंडेक्स को इंडेक्स वर्जन अपग्रेड के बाद दोबारा नहीं बनाया जाता है; अगर/कब अपग्रेड करना है तो डेटाबेस एडमिनिस्ट्रेटर पर छोड़ दिया जाता है।

  • आपने _id बदल दिया है एक संग्रह के लिए या एक नीरस रूप से बढ़ती कुंजी (जैसे। ObjectID) से एक यादृच्छिक मान के लिए प्रारूप। यह थोड़ा गूढ़ है, लेकिन यदि आप _id प्रविष्ट कर रहे हैं, तो एक अनुक्रमणिका अनुकूलन है जो b-ट्री बकेट 90/10 (50/50 के बजाय) को विभाजित करता है s जो हमेशा बढ़ रहे हैं (संदर्भ:SERVER-983 ) अगर आपकी _id . की प्रकृति s महत्वपूर्ण रूप से बदलता है, तो पुन:अनुक्रमणिका के साथ अधिक कुशल बी-पेड़ बनाना संभव हो सकता है।

सामान्य बी-ट्री व्यवहार के बारे में अधिक जानकारी के लिए, देखें:विकिपीडिया:बी-ट्री

अनुक्रमणिका उपयोग को विज़ुअलाइज़ करना

यदि आप वास्तव में इंडेक्स इंटर्नल में थोड़ा और खोदने के लिए उत्सुक हैं, तो कुछ प्रयोगात्मक आदेश/उपकरण हैं जिन्हें आप आजमा सकते हैं। मुझे उम्मीद है कि ये केवल MongoDB 2.4 और 2.6 तक ही सीमित हैं:



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb:किसी स्तंभ का उच्चतम संख्यात्मक मान ज्ञात करना

  2. दस्तावेज़ से एकल संपत्ति पुनर्प्राप्त करें

  3. अलग गिनती के आधार पर छाँटने के लिए मोंगो क्वेरी

  4. 10000 दस्तावेज़ सम्मिलित करने पर अधिकतम कॉल स्टैक आकार पार हो गया

  5. Node.js MongoDB संग्रह। ढूँढें ()। toArray कुछ भी नहीं देता है