अपना डेटा अनुक्रमित करें

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

डेटा इंडेक्स को परिभाषित करना

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

orderByChild के साथ अनुक्रमण

इसे समझाने का सबसे आसान तरीका एक उदाहरण है। फायरबेस में हम सभी इस बात से सहमत हैं कि डायनासोर बहुत अच्छे होते हैं। यहां डायनासोर से जुड़े तथ्यों के नमूना डेटाबेस का एक अंश दिया गया है। हम इसका उपयोग यह समझाने के लिए करेंगे कि .indexOn orderByChild() के साथ कैसे काम करता है।

{
  "lambeosaurus": {
    "height" : 2.1,
    "length" : 12.5,
    "weight": 5000
  },
  "stegosaurus": {
    "height" : 4,
    "length" : 9,
    "weight" : 2500
  }
}

आइए कल्पना करें कि हमारे ऐप में, हमें अक्सर डायनासोरों को नाम, ऊंचाई और लंबाई के आधार पर ऑर्डर करने की आवश्यकता होती है, लेकिन वजन के आधार पर नहीं। हम फायरबेस को यह जानकारी बताकर अपने प्रश्नों के प्रदर्शन में सुधार कर सकते हैं। चूंकि डायनासोर के नाम केवल कुंजी हैं, फायरबेस पहले से ही डायनासोर के नाम से प्रश्नों के लिए अनुकूलन करता है, क्योंकि यह रिकॉर्ड की कुंजी है। हम ऊंचाई और लंबाई के लिए प्रश्नों को अनुकूलित करने के लिए फायरबेस को बताने के लिए .indexOn उपयोग कर सकते हैं:

{
  "rules": {
    "dinosaurs": {
      ".indexOn": ["height", "length"]
    }
  }
}

अन्य नियमों की तरह, आप अपने नियमों में किसी भी स्तर पर .indexOn नियम निर्दिष्ट कर सकते हैं। हमने इसे उपरोक्त उदाहरण के लिए रूट स्तर पर रखा है क्योंकि डायनासोर का सारा डेटा डेटाबेस के रूट पर संग्रहीत है।

orderByValue के साथ अनुक्रमण

इस उदाहरण में, हम प्रदर्शित करेंगे कि .indexOn orderByValue() के साथ कैसे काम करता है। मान लीजिए कि हम निम्नलिखित डेटा के साथ डिनो स्पोर्ट्स स्कोर का लीडरबोर्ड बना रहे हैं:

{
  "scores": {
    "bruhathkayosaurus" : 55,
    "lambeosaurus" : 21,
    "linhenykus" : 80,
    "pterodactyl" : 93,
    "stegosaurus" : 5,
    "triceratops" : 22
  }
}

चूँकि हम लीडरबोर्ड बनाने के लिए orderByValue() का उपयोग कर रहे हैं, हम अपने /scores नोड पर एक .value नियम जोड़कर अपनी क्वेरी को अनुकूलित कर सकते हैं:

{
  "rules": {
    "scores": {
      ".indexOn": ".value"
    }
  }
}