इस सेक्शन में, Firestore Enterprise edition के लिए इंडेक्सिंग के बारे में बताया गया है. Firestore Enterprise edition, डिफ़ॉल्ट रूप से कोई इंडेक्स नहीं बनाता. लागत कम करने और डेटाबेस की परफ़ॉर्मेंस बेहतर बनाने के लिए, सबसे ज़्यादा इस्तेमाल की जाने वाली क्वेरी के लिए इंडेक्स बनाएं.
इंडेक्स का डेटाबेस की परफ़ॉर्मेंस पर काफ़ी असर पड़ता है. अगर किसी क्वेरी के लिए इंडेक्स मौजूद है, तो डेटाबेस नतीजों को आसानी से दिखा सकता है. इसके लिए, उसे स्कैन किए जाने वाले डेटा की मात्रा कम करनी होती है. साथ ही, नतीजों को क्रम से लगाने के लिए कम काम करना पड़ता है. हालांकि, इंडेक्स की एंट्री से स्टोरेज की लागत बढ़ जाती है. साथ ही, इंडेक्स किए गए फ़ील्ड पर राइट ऑपरेशन के दौरान किए जाने वाले काम की मात्रा भी बढ़ जाती है.
इंडेक्स की परिभाषा और स्ट्रक्चर
किसी इंडेक्स में ये चीज़ें शामिल होती हैं:
- कलेक्शन आईडी
- दिए गए कलेक्शन में मौजूद फ़ील्ड की सूची
- हर फ़ील्ड के लिए क्रम, जो बढ़ते या घटते क्रम में हो सकता है
इंडेक्स, स्पार्स या यूनीक विकल्पों को भी चालू कर सकता है.
इंडेक्स का क्रम
हर फ़ील्ड का क्रम और सॉर्ट करने की दिशा, इंडेक्स को खास तौर पर तय करती है. उदाहरण के लिए, ये इंडेक्स दो अलग-अलग इंडेक्स हैं और इन्हें आपस में बदला नहीं जा सकता:
| कलेक्शन | फ़ील्ड |
|---|---|
| शहर | देश (बढ़ते क्रम में), जनसंख्या (घटते क्रम में) |
| शहर | जनसंख्या (घटते क्रम में), देश (बढ़ते क्रम में) |
क्वेरी के लिए इंडेक्स बनाते समय, फ़ील्ड को उसी क्रम में शामिल करें जिस क्रम में वे आपकी क्वेरी में शामिल हैं.
इंडेक्स की सघनता
डिफ़ॉल्ट रूप से, इंडेक्स की एंट्री में किसी कलेक्शन के सभी दस्तावेज़ों का डेटा सेव होता है. इसे नॉन-स्पार्स इंडेक्स कहा जाता है. किसी दस्तावेज़ के लिए इंडेक्स की एंट्री तब भी जोड़ी जाएगी, भले ही उसमें इंडेक्स में बताए गए कोई भी फ़ील्ड शामिल न हों. इंडेक्स की एंट्री जनरेट करते समय, मौजूद न होने वाले फ़ील्ड को NULL वैल्यू के तौर पर माना जाता है. इस व्यवहार को बदलने के लिए, इंडेक्स को स्पार्स इंडेक्स के तौर पर तय किया जा सकता है.
स्पार्स इंडेक्स
स्पार्स इंडेक्स में, कलेक्शन के सिर्फ़ उन दस्तावेज़ों को इंडेक्स किया जाता है जिनमें इंडेक्स किए गए कम से कम एक फ़ील्ड के लिए कोई वैल्यू (null भी शामिल है) मौजूद हो. स्पार्स इंडेक्स से स्टोरेज की लागत कम होती है और परफ़ॉर्मेंस बेहतर हो सकती है.
यूनीक इंडेक्स
इंडेक्स किए गए फ़ील्ड के लिए यूनीक वैल्यू लागू करने के लिए, यूनीक इंडेक्स का विकल्प सेट करें. एक से ज़्यादा फ़ील्ड पर बने इंडेक्स के लिए, वैल्यू का हर कॉम्बिनेशन इंडेक्स में यूनीक होना चाहिए. डेटाबेस, डुप्लीकेट वैल्यू वाली इंडेक्स एंट्री बनाने की कोशिश करने वाले किसी भी अपडेट और इंसर्ट ऑपरेशन को अस्वीकार कर देता है. अगर इंडेक्स किए गए फ़ील्ड के डेटा में डुप्लीकेट वैल्यू मौजूद हैं और आपने यूनीक इंडेक्स बनाने की कोशिश की, तो ऑपरेशन की जानकारी में गड़बड़ी का मैसेज दिखेगा. साथ ही, इंडेक्स नहीं बन पाएगा.
यूनीक इंडेक्स में मौजूद नहीं फ़ील्ड
अगर आपने यूनीक इंडेक्स के लिए, ऐसे फ़ील्ड वाला कोई दस्तावेज़ जोड़ा है जो मौजूद नहीं है, तो इंडेक्स, मौजूद न होने वाले फ़ील्ड के लिए null वैल्यू सेट करता है. इंडेक्स की एंट्री यूनीक होनी चाहिए. ऐसा न होने पर, ऑपरेशन पूरा नहीं हो पाएगा.
उदाहरण के लिए, इस इंडेक्स के साथ:
| कलेक्शन | इंडेक्स किए गए फ़ील्ड | क्वेरी का दायरा |
|---|---|---|
| शहर | नाम (बढ़ते क्रम में) | कलेक्शन |
अगर आपने कलेक्शन में {"abbreviation": "LA"} दस्तावेज़ जोड़ा है, तो यूनीक
इंडेक्स, name को null पर सेट करके एक एंट्री बनाता है. इसके बाद, अगर आपने
दस्तावेज़ {"abbreviation": "NYC"} जोड़ने की कोशिश की, तो ऑपरेशन पूरा नहीं हो पाएगा. ऐसा इसलिए, क्योंकि यूनीक इंडेक्स के लिए बनने वाली
एंट्री एक जैसी है.
एक से ज़्यादा फ़ील्ड वाले यूनीक इंडेक्स पर भी यही तरीका लागू होता है.
कोई दस्तावेज़ बनाते या अपडेट करते समय, इंडेक्स किए गए मौजूद न होने वाले फ़ील्ड को null पर सेट किया जाता है. साथ ही, इंडेक्स की एंट्री इंडेक्स में यूनीक होनी चाहिए.
इंडेक्स बनाने में आने वाली गड़बड़ियों को ठीक करना
इंडेक्स मैनेज करते समय, आपको इंडेक्स बनाने में गड़बड़ियां आ सकती हैं. अगर डेटाबेस को डेटा में कोई समस्या मिलती है, तो इंडेक्सिंग का ऑपरेशन पूरा नहीं हो सकता. इंडेक्सिंग के ऑपरेशन इन वजहों से पूरे नहीं हो सकते:
- आपने इंडेक्स की सीमा पूरी कर ली है. उदाहरण के लिए, हो सकता है कि ऑपरेशन में हर दस्तावेज़ के लिए इंडेक्स की एंट्री की तय सीमा पूरी हो गई हो. अगर इंडेक्स नहीं बन पाता है, तो आपको गड़बड़ी का मैसेज दिखेगा. अगर आपने इंडेक्स की सीमा पूरी नहीं की है, तो इंडेक्स के ऑपरेशन को फिर से करें.
- आपने यूनीक इंडेक्स का विकल्प सेट किया है. साथ ही, इंडेक्स किए गए फ़ील्ड के डेटा से इंडेक्स की डुप्लीकेट एंट्री बनेंगी. आगे बढ़ने के लिए, डेटा से वैल्यू के डुप्लीकेट कॉम्बिनेशन हटाएं.
आगे क्या करना है
इंडेक्स बनाने और उन्हें मैनेज करने का तरीका जानें.