अपना डेटा इंडेक्स करें

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

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

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

ऑर्डरबायचाइल्ड के साथ अनुक्रमण

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

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

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

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

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

ऑर्डरबायवैल्यू के साथ इंडेक्सिंग

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

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

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

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