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