Verilerinizi Dizine Ekleyin

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

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

Veri İndekslerini Tanımlama

Firebase, verilerinizi sipariş etmek 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 indeksleyerek sorgularınızın performansını iyileştirir.

orderByChild ile indeksleme

Bunu açıklamanın en kolay yolu bir örnek aracılığıyladır. Firebase'deki hepimiz dinozorların oldukça havalı olduğu konusunda hemfikiriz. İşte dinozor gerçeklerinin örnek bir veri tabanı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
  }
}

Diyelim ki uygulamamızda dinozorları genellikle isme, boy ve uzunluğa göre sıralamamız gerekiyor, ama asla ağırlıklarına göre değil. Firebase'e bu bilgileri söyleyerek sorgularımızın performansını iyileştirebiliriz. Dinozorların adı yalnızca anahtar olduğundan, Firebase zaten dinozor adına göre sorguları optimize eder, çünkü bu kaydın anahtarıdır. Firebase'e sorguları yükseklik ve uzunluk açısından da 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ünde saklanıyor.

orderByValue ile indeksleme

Bu örnekte, .indexOn orderByValue() ile nasıl çalıştığını göstereceğiz. Aşağıdaki verilerle bir dino spor skorları tablosu oluşturduğumuzu varsayalım:

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

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

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

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

Veri İndekslerini Tanımlama

Firebase, verilerinizi sipariş etmek 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 indeksleyerek sorgularınızın performansını iyileştirir.

orderByChild ile indeksleme

Bunu açıklamanın en kolay yolu bir örnek aracılığıyladır. Firebase'deki hepimiz dinozorların oldukça havalı olduğu konusunda hemfikiriz. İşte dinozor gerçeklerinin örnek bir veri tabanı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
  }
}

Diyelim ki uygulamamızda dinozorları genellikle isme, boy ve uzunluğa göre sıralamamız gerekiyor, ama asla ağırlıklarına göre değil. Firebase'e bu bilgileri söyleyerek sorgularımızın performansını iyileştirebiliriz. Dinozorların adı yalnızca anahtar olduğundan, Firebase zaten dinozor adına göre sorguları optimize eder, çünkü bu kaydın anahtarıdır. Firebase'e sorguları yükseklik ve uzunluk açısından da 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ünde saklanıyor.

orderByValue ile indeksleme

Bu örnekte, .indexOn orderByValue() ile nasıl çalıştığını göstereceğiz. Aşağıdaki verilerle bir dino spor skorları tablosu oluşturduğumuzu varsayalım:

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

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

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