Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

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

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

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

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

भूमिकाएँ और अनुमतियाँ

इससे पहले कि आप Cloud Firestore में एक अनुक्रमणिका बना सकें, सुनिश्चित करें कि आपको निम्न में से कोई भूमिका सौंपी गई है:

  • roles/datastore.owner
  • roles/datastore.indexAdmin
  • roles/editor
  • roles/owner

यदि आपने कस्टम भूमिकाएँ परिभाषित की हैं, तो अनुक्रमणिका बनाने के लिए निम्नलिखित सभी अनुमतियाँ असाइन करें:

  • datastore.indexes.create
  • datastore.indexes.delete
  • datastore.indexes.get
  • datastore.indexes.list
  • datastore.indexes.update

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

फायरबेस कंसोल से मैन्युअल रूप से एक नया इंडेक्स बनाने के लिए:

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

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

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

इंडेक्स हटाएं

एक इंडेक्स को हटाने के लिए:

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

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

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

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

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

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

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

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

आपके द्वारा इंडेक्स बनाना शुरू करने के बाद, Cloud Firestore ऑपरेशन को एक विशिष्ट नाम प्रदान करता है। उदाहरण के लिए, ऑपरेशन के नाम के साथ projects/[PROJECT_ID]/databases/(default)/operations/ जुड़ा हुआ है:

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

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

लंबे समय तक चलने वाले सभी ऑपरेशनों को सूचीबद्ध करना

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

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 को इंडेक्स किए जा रहे डेटा में कोई समस्या आती है, तो इंडेक्सिंग ऑपरेशन विफल हो सकता है। आमतौर पर, इसका अर्थ है कि आपने एक अनुक्रमणिका सीमा को पार कर लिया है। उदाहरण के लिए, ऑपरेशन प्रति दस्तावेज़ अनुक्रमणिका प्रविष्टियों की अधिकतम संख्या तक पहुँच सकता है।

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