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

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

डेटा इंडेक्स तय करना

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

OrderBychild की मदद से इंडेक्स करना

एक उदाहरण के ज़रिए आसानी से इसकी जानकारी दी जा सकती है. Firebase में हम सभी इसका सहमति देते हैं कि डायनासॉर बहुत बुद्धिमान होते हैं. यहां डायनासॉर से जुड़े तथ्यों के डेटाबेस का सैंपल दिया गया है. बुध इसका इस्तेमाल यह बताने के लिए करेगा कि .indexOn, orderByChild() के साथ कैसे काम करता है.

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

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

{
  "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"
    }
  }
}