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