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 en iyi uygulamaları görelim.

orderByChild ile dizine ekleme

Bunu açıklamanın en kolay yolu bir örnek vermektir. Firebase olarak hepimiz dinozorlar da oldukça havalı. Dinozorlarla ilgili bilgilerin yer aldığı örnek bir veritabanından bir snippet'i burada bulabilirsiniz. Biz bunu, .indexOn ile orderByChild() arasındaki işleyiş şeklini açıklamak için kullanı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 bu bilgileri bildirerek sorgularımızın performansını artırabiliriz. 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 veritabanının kökünde depolandığından, yukarıdaki örnekte bu tabloyu kök düzeyine yerleştirdik.

orderByValue ile dizine ekleme

Bu örnekte, .indexOn'ü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"
    }
  }
}