Verilerinizi Dizine Ekleme

Firebase, rastgele bir alt anahtar kullanarak verilerinizde anlık sorgular yapmanıza olanak tanır. Dizinlerinizin ne olacağını önceden biliyorsanız sorgu performansını iyileştirmek için Firebase Realtime Database Güvenlik Kurallarınızdaki .indexOn kuralıyla bunları tanımlayabilirsiniz.

Veri Dizinlerini Tanımlama

Firebase, Google Analytics 4'te sipariş verme ve verilerinizi sorgulama olanağı sunar. Spesifik olarak, Firebase bir düğüm koleksiyonu üzerinde anlık sorgular yapmanıza olanak tanır. ortak alt anahtardı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 daha iyi performans gösterir.

orderByChild ile dizine ekleme

Bunu açıklamanın en kolay yolu bir örnek üzerinden gitmektir. Firebase olarak hepimiz dinozorlar da oldukça havalı. Dinozorlarla ilgili bilgilerin yer aldığı örnek bir veritabanından bir snippet'i burada bulabilirsiniz. Biz bu bilgiyi, .indexOn ile orderByChild() arasındaki işleyiş şeklini açıklamak için kullanacaktır.

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

Uygulamamızda genellikle dinozorları adları, boyları ve boyutlarına göre sıralamamız gerektiğini varsayalım. ama asla ağırlığa göre yok. Firebase'e bilgi vererek sorgularımızın performansını iyileştirebiliriz bu bilgilerden faydalanabilirsiniz. Dinozorların adları sadece anahtar olduğundan Firebase zaten dinozor adına göre yapılan sorgular için optimizasyon yapar, çünkü bu, kaydın anahtarıdır. .indexOn kullanarak Firebase'e sorguları yükseklik ve uzunluğa göre optimize etmesini de bildirebiliriz:

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

Diğer kurallar gibi, kurallarınızda herhangi bir düzeyde bir .indexOn kuralı belirtebilirsiniz. Tüm dinozor verileri saklandığından bunu yukarıdaki örnekte kök düzeyine yerleştirdik. bulmanız gerekir.

orderByValue ile dizine ekleme

Bu örnekte, .indexOn ürününün orderByValue() ile nasıl çalıştığını göstereceğiz. Aşağıdaki verileri kullanarak dinozor maçlarının skorlarını içeren bir skor tablosu oluşturduğumuzu varsayalım:

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

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

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