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

MongoDB अनुक्रमण का आंतरिक कार्यान्वयन?

मुझे लगता है, आपको यह पता चल रहा है कि अनुक्रमणिका RAM में संग्रहीत हैं। क्या होगा अगर मैं कहूं कि वे नहीं हैं।

सबसे पहले हमें यह समझने की जरूरत है कि इंडेक्स क्या हैं, इंडेक्स मूल रूप से यह बताने के लिए एक पॉइंटर हैं कि डिस्क पर वह दस्तावेज कहां है। जैसे हमारे पास बुक में इंडेक्सिंग है, तेजी से एक्सेस के लिए हम देख सकते हैं कि कौन सा टॉपिक किस पेज नंबर पर है।

इसलिए जब इंडेक्स बनाए जाते हैं, तो वे डिस्क में भी स्टोर हो जाते हैं, लेकिन जब कोई एप्लिकेशन चल रहा होता है, तो बार-बार इस्तेमाल और तेज एक्सेस के आधार पर वे रैम में लोड हो जाते हैं लेकिन लोड और क्रिएट में अंतर होता है।

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

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

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

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब कुल प्रश्नों को जोड़ता है

  2. होमब्रे के साथ मोंगोडब के पुराने संस्करण को कैसे स्थापित करें?

  3. जब मैं मोंगोडब सर्वर चलाता हूं तो स्टार्टअप के दौरान सॉकेट सेट अप करने में विफल कैसे हल कर सकता हूं?

  4. mongomapper भू-स्थानिक 'के भीतर' क्वेरी

  5. com.mongodb.spark.exceptions.MongoTypeConversionException को कैसे हल करें:कास्ट नहीं किया जा सकता... जावा स्पार्क