Cloud Firestore में अनुक्रमणिका प्रबंधित करें

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

त्रुटि संदेश के माध्यम से अनुपलब्ध अनुक्रमणिका बनाएँ

यदि आप एक श्रेणी खंड के साथ एक मिश्रित क्वेरी का प्रयास करते हैं जो किसी मौजूदा अनुक्रमणिका पर मैप नहीं करता है, तो आपको एक त्रुटि प्राप्त होती है। त्रुटि संदेश में Firebase कंसोल में अनुपलब्ध अनुक्रमणिका बनाने के लिए एक सीधा लिंक शामिल है।

Firebase कंसोल के जनरेट किए गए लिंक का अनुसरण करें, स्वचालित रूप से पॉप्युलेट की गई जानकारी की समीक्षा करें और बनाएं पर क्लिक करें।

फायरबेस कंसोल का प्रयोग करें

Firebase कंसोल से मैन्युअल रूप से एक नई अनुक्रमणिका बनाने के लिए:

फायरबेस कंसोल में फायरस्टोर इंडेक्सिंग इंटरफेस की छवि

  1. फायरबेस कंसोल के क्लाउड फायरस्टोर सेक्शन में जाएं।
  2. इंडेक्स टैब पर जाएं और इंडेक्स जोड़ें पर क्लिक करें।
  3. संग्रह का नाम दर्ज करें और उन फ़ील्ड को सेट करें जिनके द्वारा आप अनुक्रमणिका को क्रमित करना चाहते हैं।
  4. बनाएं क्लिक करें.

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

अनुक्रमणिका हटाएं

किसी अनुक्रमणिका को हटाने के लिए:

  1. फायरबेस कंसोल के क्लाउड फायरस्टोर सेक्शन में जाएं।
  2. इंडेक्स टैब पर क्लिक करें।
  3. उस इंडेक्स पर होवर करें जिसे आप हटाना चाहते हैं और संदर्भ मेनू से हटाएं चुनें।
  4. पुष्टि करें कि आप अलर्ट से हटाएँ क्लिक करके इसे हटाना चाहते हैं।

फायरबेस सीएलआई का प्रयोग करें

आप अनुक्रमणिका को Firebase CLI के साथ परिनियोजित भी कर सकते हैं। आरंभ करने के लिए, अपनी परियोजना निर्देशिका में firebase init firestore चलाएँ। सेटअप के दौरान, फायरबेस सीएलआई सही प्रारूप में डिफ़ॉल्ट इंडेक्स के साथ एक JSON फ़ाइल बनाता है। अधिक अनुक्रमणिका जोड़ने के लिए फ़ाइल को संपादित करें और इसे firebase deploy आदेश के साथ परिनियोजित करें। यदि आप केवल अनुक्रमणिका परिनियोजित करना चाहते हैं, तो --only firestore:indexes ध्वज जोड़ें। यदि आप Firebase कंसोल का उपयोग करके अनुक्रमणिका में संपादन करते हैं, तो सुनिश्चित करें कि आप अपनी स्थानीय अनुक्रमणिका फ़ाइल को भी अपडेट करते हैं। JSON अनुक्रमणिका परिभाषा संदर्भ देखें।

सूचकांक निर्माण समय

एक इंडेक्स बनाने के लिए, क्लाउड फायरस्टोर को इंडेक्स सेट करना होगा और फिर मौजूदा डेटा के साथ इंडेक्स को बैकफिल करना होगा। अनुक्रमणिका निर्माण समय सेटअप समय और बैकफ़िल समय का योग है:

  • एक इंडेक्स सेट करने में कुछ मिनट लगते हैं। एक इंडेक्स के लिए न्यूनतम निर्माण समय कुछ मिनट है, यहां तक ​​कि एक खाली डेटाबेस के लिए भी।

  • बैकफ़िल का समय इस बात पर निर्भर करता है कि नए इंडेक्स में मौजूदा डेटा कितना है। इंडेक्स की परिभाषा से मेल खाने वाले जितने अधिक फ़ील्ड मान होंगे, इंडेक्स को बैकफ़िल करने में उतना ही अधिक समय लगेगा।

इंडेक्स बिल्ड लंबे समय तक चलने वाले ऑपरेशन हैं।

आपके द्वारा अनुक्रमणिका निर्माण प्रारंभ करने के बाद, Cloud Firestore ऑपरेशन को एक अद्वितीय नाम प्रदान करता है। उदाहरण के लिए, ऑपरेशन नाम projects/[PROJECT_ID]/databases/(default)/operations/ के साथ उपसर्ग करते हैं:

projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

हालाँकि, आप describe कमांड के लिए एक ऑपरेशन नाम निर्दिष्ट करते समय उपसर्ग को छोड़ सकते हैं।

सभी लंबे समय से चल रहे कार्यों को सूचीबद्ध करना

लंबे समय से चल रहे संचालन को सूचीबद्ध करने के लिए, gcloud फायरस्टोर संचालन सूची कमांड का उपयोग करें। यह आदेश चल रहे और हाल ही में पूर्ण किए गए कार्यों को सूचीबद्ध करता है। संचालन पूरा होने के बाद कुछ दिनों के लिए सूचीबद्ध हैं:

gcloud firestore operations list

ऑपरेशन की स्थिति जांचें

सभी लंबे समय तक चलने वाले कार्यों को सूचीबद्ध करने के बजाय, आप किसी एकल ऑपरेशन के विवरण को सूचीबद्ध कर सकते हैं:

gcloud firestore operations describe operation-name

पूरा होने के समय का अनुमान

जैसे ही आपका ऑपरेशन चलता है, ऑपरेशन की समग्र स्थिति के लिए state फ़ील्ड का मान देखें।

लंबे समय तक चलने वाले ऑपरेशन की स्थिति के लिए अनुरोध भी मेट्रिक्स workEstimated और workCompleted है। ये मेट्रिक्स दस्तावेजों की संख्या के लिए लौटाए जाते हैं। workEstimated एक ऑपरेशन द्वारा संसाधित किए जाने वाले दस्तावेज़ों की अनुमानित कुल संख्या को दर्शाता है। workCompleted अब तक संसाधित किए गए दस्तावेज़ों की संख्या दिखाता है। ऑपरेशन पूरा होने के बाद, workCompleted उन दस्तावेजों की कुल संख्या को दर्शाता है जो वास्तव में संसाधित किए गए थे, जो workEstimated के मूल्य से भिन्न हो सकते हैं।

मोटे तौर पर प्रगति अनुमान के लिए अनुमानित workEstimated को workCompleted से विभाजित करें। अनुमान गलत हो सकता है क्योंकि यह विलंबित सांख्यिकी संग्रह पर निर्भर करता है।

उदाहरण के लिए, यहां एक इंडेक्स बिल्ड की प्रगति की स्थिति है:

{
  "operations": [
    {
      "name": "projects/project-id/operations/AyAyMDBiM2U5NTgwZDAtZGIyYi0zYjc0LTIzYWEtZjg1ZGdWFmZWQHEjF0c2Flc3UtcmV4ZWRuaS1uaW1kYRUKSBI",
      "metadata": {
        "@type": "type.googleapis.com/google.firestore.admin.v1.IndexOperationMetadata",
        "common": {
          "operationType": "CREATE_INDEX",
          "startTime": "2020-06-23T16:52:25.697539Z",
          "state": "PROCESSING"
        },
        "progressDocuments": {
          "workCompleted": "219327",
          "workEstimated": "2198182"
        }
       },
    },
    ...

जब कोई ऑपरेशन किया जाता है, तो ऑपरेशन विवरण में "done": true होगा। ऑपरेशन के परिणाम के लिए state क्षेत्र का मूल्य देखें। यदि done फ़ील्ड प्रतिक्रिया में सेट नहीं है, तो इसका मान false है। चल रहे कार्यों के लिए done मूल्य के अस्तित्व पर निर्भर न रहें।

सूचकांक निर्माण त्रुटियां

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

यदि अनुक्रमणिका निर्माण विफल रहता है, तो आपको कंसोल में त्रुटि संदेश दिखाई देता है। यह सत्यापित करने के बाद कि आप किसी अनुक्रमणिका सीमा को नहीं मार रहे हैं, अपनी अनुक्रमणिका कार्रवाई का पुन: प्रयास करें।