इंडेक्स की खास जानकारी

इस सेक्शन में, Firestore Enterprise edition के लिए इंडेक्सिंग के बारे में बताया गया है. Firestore Enterprise edition, डिफ़ॉल्ट रूप से कोई इंडेक्स नहीं बनाता. लागत कम करने और डेटाबेस की परफ़ॉर्मेंस बेहतर बनाने के लिए, सबसे ज़्यादा इस्तेमाल की जाने वाली क्वेरी के लिए इंडेक्स बनाएं.

इंडेक्स का डेटाबेस की परफ़ॉर्मेंस पर काफ़ी असर पड़ता है. अगर किसी क्वेरी के लिए इंडेक्स मौजूद है, तो डेटाबेस नतीजों को आसानी से दिखा सकता है. इसके लिए, उसे स्कैन किए जाने वाले डेटा की मात्रा कम करनी होती है और नतीजों को क्रम से लगाने के लिए कम काम करना पड़ता है. हालांकि, इंडेक्स की एंट्री से स्टोरेज की लागत बढ़ जाती है. साथ ही, इंडेक्स किए गए फ़ील्ड पर राइट ऑपरेशन के दौरान किए जाने वाले काम की मात्रा भी बढ़ जाती है.

इंडेक्स की परिभाषा और स्ट्रक्चर

किसी इंडेक्स में ये चीज़ें शामिल होती हैं:

  • कलेक्शन आईडी
  • दिए गए कलेक्शन में मौजूद फ़ील्ड की सूची
  • हर फ़ील्ड के लिए क्रम, जो बढ़ते या घटते क्रम में हो सकता है

इंडेक्स, स्पार्स या यूनीक विकल्प भी चालू कर सकता है.

इंडेक्स का क्रम

हर फ़ील्ड का क्रम और सॉर्ट करने की दिशा, इंडेक्स को खास तौर पर तय करती है. उदाहरण के लिए, ये इंडेक्स दो अलग-अलग इंडेक्स हैं और इन्हें आपस में बदला नहीं जा सकता:

कलेक्शन फ़ील्ड
शहर देश (बढ़ते क्रम में), जनसंख्या (घटते क्रम में)
शहर जनसंख्या (घटते क्रम में), देश (बढ़ते क्रम में)

क्वेरी के लिए इंडेक्स बनाते समय, फ़ील्ड को उसी क्रम में शामिल करें जिस क्रम में वे आपकी क्वेरी में शामिल हैं.

इंडेक्स की सघनता

डिफ़ॉल्ट रूप से, इंडेक्स की एंट्री में किसी कलेक्शन के सभी दस्तावेज़ों का डेटा सेव होता है. इसे नॉन-स्पार्स इंडेक्स कहा जाता है. किसी दस्तावेज़ के लिए इंडेक्स की एंट्री तब भी जोड़ी जाएगी, भले ही दस्तावेज़ में इंडेक्स में बताए गए कोई भी फ़ील्ड शामिल न हों. इंडेक्स की एंट्री जनरेट करते समय, मौजूद न होने वाले फ़ील्ड को NULL वैल्यू के तौर पर माना जाता है. इस व्यवहार को बदलने के लिए, इंडेक्स को स्पार्स इंडेक्स के तौर पर तय किया जा सकता है.

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

स्पार्स इंडेक्स में, कलेक्शन के सिर्फ़ उन दस्तावेज़ों को इंडेक्स किया जाता है जिनमें इंडेक्स किए गए कम से कम एक फ़ील्ड के लिए कोई वैल्यू (null भी शामिल है) मौजूद हो. स्पार्स इंडेक्स से स्टोरेज की लागत कम होती है और परफ़ॉर्मेंस बेहतर हो सकती है.

यूनीक इंडेक्स

इंडेक्स किए गए फ़ील्ड के लिए यूनीक वैल्यू लागू करने के लिए, यूनीक इंडेक्स का विकल्प सेट करें. एक से ज़्यादा फ़ील्ड पर इंडेक्स के लिए, वैल्यू का हर कॉम्बिनेशन इंडेक्स में यूनीक होना चाहिए. डेटाबेस, डुप्लीकेट वैल्यू वाली इंडेक्स एंट्री बनाने की कोशिश करने वाले किसी भी अपडेट और इंसर्ट ऑपरेशन को अस्वीकार कर देता है. अगर इंडेक्स किए गए फ़ील्ड के डेटा में डुप्लीकेट वैल्यू मौजूद हैं और यूनीक इंडेक्स बनाने की कोशिश की जाती है, तो ऑपरेशन की जानकारी में गड़बड़ी का मैसेज दिखता है और इंडेक्स नहीं बन पाता.

यूनीक इंडेक्स में मौजूद नहीं होने वाले फ़ील्ड

अगर यूनीक इंडेक्स के लिए, फ़ील्ड मौजूद नहीं हैं और कोई दस्तावेज़ जोड़ा जाता है, तो इंडेक्स, मौजूद नहीं होने वाले फ़ील्ड के लिए null वैल्यू सेट करता है. इंडेक्स की एंट्री यूनीक होनी चाहिए. ऐसा न होने पर, ऑपरेशन पूरा नहीं हो पाएगा.

उदाहरण के लिए, इस इंडेक्स के साथ:

कलेक्शन इंडेक्स किए गए फ़ील्ड क्वेरी का दायरा
शहर नाम (बढ़ते क्रम में) कलेक्शन

अगर कलेक्शन में {"abbreviation": "LA"} दस्तावेज़ जोड़ा जाता है, तो यूनीक इंडेक्स, name को null पर सेट करके एक एंट्री बनाता है. इसके बाद, अगर दस्तावेज़ {"abbreviation": "NYC"} जोड़ने की कोशिश की जाती है, तो ऑपरेशन पूरा नहीं हो पाता. ऐसा इसलिए होता है, क्योंकि यूनीक इंडेक्स के लिए बनने वाली एंट्री एक जैसी होती है.

एक से ज़्यादा फ़ील्ड वाले यूनीक इंडेक्स पर भी यही तरीका लागू होता है. कोई दस्तावेज़ बनाते या अपडेट करते समय, इंडेक्स किए गए मौजूद नहीं होने वाले फ़ील्ड को null पर सेट किया जाता है. साथ ही, इंडेक्स की एंट्री इंडेक्स में यूनीक होनी चाहिए.

इंडेक्स बनाने में आने वाली गड़बड़ियों को ठीक करना

इंडेक्स मैनेज करते समय, इंडेक्स बनाने में गड़बड़ियां आ सकती हैं. अगर डेटाबेस को डेटा में कोई समस्या मिलती है, तो इंडेक्सिंग का ऑपरेशन पूरा नहीं हो सकता. इंडेक्सिंग के ऑपरेशन इन वजहों से पूरे नहीं हो सकते:

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

आगे क्या करना है

इंडेक्स बनाने और उन्हें मैनेज करने का तरीका जानें.