Verilerinizi Dizine Ekleyin

Firebase, rasgele bir alt anahtar kullanarak verileriniz üzerinde geçici sorgular yapmanıza olanak tanır. Dizinlerinizin ne olacağını önceden biliyorsanız, sorgu performansını artırmak için bunları Firebase Gerçek Zamanlı Veritabanı Güvenlik Kurallarınızda .indexOn kuralı aracılığıyla tanımlayabilirsiniz.

Veri İndekslerini Tanımlama

Firebase, verilerinizi sıralamak ve sorgulamak için güçlü araçlar sağlar. Özellikle, Firebase, herhangi bir ortak alt anahtarı kullanarak bir düğüm koleksiyonunda geçici sorgular yapmanıza olanak tanır. Uygulamanız büyüdükçe bu sorgunun performansı düşer. Ancak, sorgulayacağınız anahtarları Firebase'e bildirirseniz, Firebase bu anahtarları sunucularda dizine ekleyerek sorgularınızın performansını artırır.

orderByChild ile indeksleme

Bunu açıklamanın en kolay yolu bir örnektir. Firebase'deki hepimiz dinozorların oldukça havalı olduğu konusunda hemfikiriz. İşte dinozor gerçeklerinin örnek bir veritabanından bir pasaj. .indexOn orderByChild() ile nasıl çalıştığını açıklamak için kullanacağız.

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

Uygulamamızda dinozorları genellikle adlarına, boylarına ve boylarına göre sıralamamız gerektiğini, ancak asla ağırlıklarına göre sıralamamız gerektiğini düşünelim. Firebase'e bu bilgileri söyleyerek sorgularımızın performansını iyileştirebiliriz. Dinozorların adı yalnızca anahtar olduğundan, kaydın anahtarı bu olduğundan, Firebase dinozor adına göre sorgular için zaten optimize eder. Firebase'e sorguları yükseklik ve uzunluk için de optimize etmesini söylemek için .indexOn kullanabiliriz:

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

Diğer kurallar gibi, kurallarınızda herhangi bir düzeyde bir .indexOn kuralı belirtebilirsiniz. Yukarıdaki örnek için kök düzeyine yerleştirdik çünkü tüm dinozor verileri veritabanının kök dizininde depolanır.

orderByValue ile indeksleme

Bu örnekte, .indexOn orderByValue() ile nasıl çalıştığını göstereceğiz. Diyelim ki aşağıdaki verilerle dino spor skorlarının bir skor tablosunu yapıyoruz:

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

Skor tablosunu oluşturmak için orderByValue() kullandığımız için, /scores düğümümüze bir .value kuralı ekleyerek sorgularımızı optimize edebiliriz:

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