Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Indeks Data Anda

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Firebase memungkinkan Anda melakukan kueri ad-hoc pada data Anda menggunakan kunci anak arbitrer. Jika Anda mengetahui sebelumnya akan seperti apa indeks Anda, Anda dapat menentukannya melalui aturan .indexOn di Aturan Keamanan Firebase Realtime Database untuk meningkatkan kinerja kueri.

Mendefinisikan Indeks Data

Firebase menyediakan alat canggih untuk mengurutkan dan membuat kueri data Anda. Secara khusus, Firebase memungkinkan Anda melakukan kueri ad-hoc pada kumpulan node menggunakan kunci anak umum apa pun. Saat aplikasi Anda tumbuh, kinerja kueri ini menurun. Namun, jika Anda memberi tahu Firebase tentang kunci yang akan Anda buat kuerinya, Firebase akan mengindeks kunci tersebut di server, sehingga meningkatkan kinerja kueri Anda.

Pengindeksan dengan orderByChild

Cara termudah untuk menjelaskan ini adalah melalui contoh. Kami semua di Firebase setuju bahwa dinosaurus itu keren. Berikut cuplikan dari database sampel fakta dinosaurus. Kami akan menggunakannya untuk menjelaskan bagaimana .indexOn bekerja dengan orderByChild() .

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

Bayangkan di aplikasi kita, kita sering perlu mengurutkan dinosaurus berdasarkan nama, tinggi, dan panjang, tetapi tidak pernah berdasarkan berat. Kami dapat meningkatkan kinerja kueri kami dengan memberi tahu Firebase informasi ini. Karena nama dinosaurus hanyalah kuncinya, Firebase sudah mengoptimalkan kueri berdasarkan nama dinosaurus, karena ini adalah kunci dari catatan. Kita dapat menggunakan .indexOn untuk memberi tahu Firebase agar mengoptimalkan kueri untuk tinggi dan panjang juga:

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

Seperti aturan lainnya, Anda dapat menentukan aturan .indexOn di level mana pun dalam aturan Anda. Kami menempatkannya di tingkat root untuk contoh di atas karena semua data dinosaurus disimpan di root database.

Pengindeksan dengan orderByValue

Dalam contoh ini, kami akan mendemonstrasikan bagaimana .indexOn bekerja dengan orderByValue() . Misalkan kita membuat papan peringkat skor olahraga dino dengan data berikut:

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

Karena kami menggunakan orderByValue() untuk membuat papan peringkat, kami dapat mengoptimalkan kueri kami dengan menambahkan aturan .value di node /scores kami:

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

Firebase memungkinkan Anda melakukan kueri ad-hoc pada data Anda menggunakan kunci anak arbitrer. Jika Anda mengetahui sebelumnya akan seperti apa indeks Anda, Anda dapat menentukannya melalui aturan .indexOn di Aturan Keamanan Firebase Realtime Database untuk meningkatkan kinerja kueri.

Mendefinisikan Indeks Data

Firebase menyediakan alat canggih untuk mengurutkan dan membuat kueri data Anda. Secara khusus, Firebase memungkinkan Anda melakukan kueri ad-hoc pada kumpulan node menggunakan kunci anak umum apa pun. Saat aplikasi Anda tumbuh, kinerja kueri ini menurun. Namun, jika Anda memberi tahu Firebase tentang kunci yang akan Anda buat kuerinya, Firebase akan mengindeks kunci tersebut di server, sehingga meningkatkan kinerja kueri Anda.

Pengindeksan dengan orderByChild

Cara termudah untuk menjelaskan ini adalah melalui contoh. Kami semua di Firebase setuju bahwa dinosaurus itu keren. Berikut cuplikan dari database sampel fakta dinosaurus. Kami akan menggunakannya untuk menjelaskan bagaimana .indexOn bekerja dengan orderByChild() .

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

Bayangkan di aplikasi kita, kita sering perlu mengurutkan dinosaurus berdasarkan nama, tinggi, dan panjang, tetapi tidak pernah berdasarkan berat. Kami dapat meningkatkan kinerja kueri kami dengan memberi tahu Firebase informasi ini. Karena nama dinosaurus hanyalah kuncinya, Firebase sudah mengoptimalkan kueri berdasarkan nama dinosaurus, karena ini adalah kunci dari catatan. Kita dapat menggunakan .indexOn untuk memberi tahu Firebase agar mengoptimalkan kueri untuk tinggi dan panjang juga:

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

Seperti aturan lainnya, Anda dapat menentukan aturan .indexOn di level mana pun dalam aturan Anda. Kami menempatkannya di tingkat root untuk contoh di atas karena semua data dinosaurus disimpan di root database.

Pengindeksan dengan orderByValue

Dalam contoh ini, kami akan mendemonstrasikan bagaimana .indexOn bekerja dengan orderByValue() . Misalkan kita membuat papan peringkat skor olahraga dino dengan data berikut:

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

Karena kami menggunakan orderByValue() untuk membuat papan peringkat, kami dapat mengoptimalkan kueri kami dengan menambahkan aturan .value di node /scores kami:

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