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