MongoDB

स्पार्स इंडेक्स के साथ MongoDB का अनुकूलन

Spread the love

विषयसूची

स्पार्स इंडेक्स क्या है?

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

उदाहरण के लिए, उपयोगकर्ता दस्तावेज़ों के एक संग्रह पर विचार करें जिसमें खाता स्थिति को दर्शाने वाला एक active फ़ील्ड है। active पर एक स्पार्स इंडेक्स केवल उन दस्तावेज़ों को इंडेक्स करेगा जहाँ active सत्य है (या कोई अन्य गैर-नुल मान)। active को null या अपरिभाषित पर सेट किए गए दस्तावेज़ इंडेक्स से बाहर रखे जाएंगे।

स्पार्स इंडेक्स के लाभ

स्पार्स इंडेक्स का उपयोग करने से कई महत्वपूर्ण लाभ मिलते हैं:

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

MongoDB में स्पार्स इंडेक्स बनाना

sparse: true विकल्प के साथ createIndex() कमांड का उपयोग करके स्पार्स इंडेक्स बनाना सरल है। active फ़ील्ड (आरोही) पर स्पार्स इंडेक्स बनाने के लिए:


db.users.createIndex( { active: 1 }, { sparse: true } );

अवरोही इंडेक्स के लिए, 1 के बजाय -1 का उपयोग करें।

स्पार्स इंडेक्स के साथ क्वेरी करना

यदि क्वेरी इंडेक्स किए गए फ़ील्ड के मानदंड से मेल खाती है, तो MongoDB स्वचालित रूप से एक स्पार्स इंडेक्स का उपयोग करता है। निम्न क्वेरी ऊपर बनाए गए स्पार्स इंडेक्स का उपयोग करेगी:


db.users.find( { active: true } );

इंडेक्स किए गए फ़ील्ड के बिना या विभिन्न फ़िल्टर का उपयोग करने वाली क्वेरी को स्पार्स इंडेक्स से लाभ नहीं हो सकता है।

स्पार्स इंडेक्स का उपयोग करते समय विचार

लाभदायक होने पर, इन बिंदुओं पर विचार करें:

  • क्वेरी चयनशीलता: जब इंडेक्स किया गया फ़ील्ड दस्तावेज़ों के एक बड़े हिस्से में अनुपस्थित होता है, तो स्पार्स इंडेक्स सबसे कुशल होते हैं। यदि अधिकांश दस्तावेज़ों में फ़ील्ड है, तो अंतरिक्ष बचत न्यूनतम हो सकती है।
  • जटिल क्वेरी: कई फ़ील्ड वाले जटिल क्वेरी स्पार्स इंडेक्स का पूरी तरह से लाभ नहीं उठा सकते हैं।
  • इंडेक्स रखरखाव: अपडेट और डिलीशन अभी भी स्पार्स इंडेक्स को प्रभावित करते हैं, हालांकि मानक इंडेक्स की तुलना में कम बार।
  • डीबगिंग: यह समझना कि कौन से दस्तावेज़ इंडेक्स किए गए हैं, डीबगिंग के लिए महत्वपूर्ण है। इंडेक्स संरचना का निरीक्षण करने के लिए db.collection.getIndexes() का उपयोग करें।

निष्कर्ष

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

अक्सर पूछे जाने वाले प्रश्न (FAQ)

  • प्रश्न: क्या मेरे पास एक संग्रह पर कई स्पार्स इंडेक्स हो सकते हैं?
    उत्तर: हाँ, आप एक ही संग्रह पर कई स्पार्स इंडेक्स बना सकते हैं।
  • प्रश्न: क्या मैं स्पार्स इंडेक्स का उपयोग यौगिक इंडेक्स के साथ कर सकता हूँ?
    उत्तर: हाँ, लेकिन विरलता यौगिक सूचकांक के सभी क्षेत्रों द्वारा निर्धारित की जाती है। सूचकांक में शामिल होने के लिए एक दस्तावेज़ में *सभी* फ़ील्ड के लिए गैर-नुल मान होने चाहिए।
  • प्रश्न: मैं कैसे जांचूँ कि कोई विशिष्ट दस्तावेज़ स्पार्स इंडेक्स में शामिल है या नहीं?
    उत्तर: कोई सीधा आदेश नहीं है। db.collection.getIndexes() का उपयोग करके इंडेक्स संरचना की जांच करें और इसकी तुलना अपने दस्तावेज़ डेटा से करें।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *