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

मोंगोडब इंडेक्स लापता मूल्यों को कवर करता है

इंडेक्स की दो प्रासंगिक विशेषताएं हैं जो तेजी से देखने की अनुमति देती हैं (संग्रह स्कैन करने की तुलना में):

  • मानों का क्रम
  • अनुक्रमित मानों की संक्षिप्तता

यदि आपके पास मान हैं a और b , आप कह सकते हैं कि a b . से पहले आता है , लेक्सिकोग्राफिक रूप से। अगर आपके पास दस्तावेज़ हैं {a: 2, b: 5} और {b: 4, a: 3} , इन दस्तावेज़ों का एक भी क्रम ऐसा नहीं है जो विशिष्ट प्रश्नों को संतुष्ट कर सके। उदाहरण के लिए, यदि आप सभी a . चाहते हैं मूल्यों का आदेश दिया तो आप उम्मीद कर सकते हैं 2, 3 , लेकिन यदि आप b . चाहते हैं वे मान जिनकी आप अपेक्षा कर सकते हैं 4, 5 - दस्तावेज़ आदेश को उलटने की आवश्यकता है।

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

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

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

अब, मानों की कमी . को संग्रहीत करने के बारे में आपके प्रश्न पर एक अनुक्रमणिका में।

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

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




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एलम मैच सभी डेटा लौटा रहा है जबकि मुझे केवल चयनित डेटा चाहिए

  2. दो संग्रहों पर एक मोंगो अंतर की तुलना करें

  3. ES6 टेम्पलेट स्ट्रिंग के साथ MongoDB ऑब्जेक्ट कुंजी

  4. MongoCharpdriver 2.7.0 . का उपयोग करके MongoDb (प्रमाणीकरण का उपयोग करके) से कनेक्ट करने में असमर्थ

  5. मोंगोडब में अजगर वस्तु डालें