Ringkasan indeks

Bagian ini menjelaskan pengindeksan untuk edisi Cloud Firestore Enterprise. Edisi Cloud Firestore Enterprise tidak membuat indeks apa pun secara default. Untuk meningkatkan performa database, buat indeks untuk kueri yang paling sering Anda gunakan.

Indeks memiliki dampak besar pada performa database. Jika ada indeks untuk kueri, database dapat menampilkan hasil secara efisien dengan mengurangi jumlah data yang perlu dipindai dan mengurangi pekerjaan yang diperlukan untuk mengurutkan hasil. Namun, entri indeks meningkatkan biaya penyimpanan dan jumlah pekerjaan yang dilakukan selama operasi tulis pada kolom yang diindeks.

Perbedaan antara kedua edisi

Tabel berikut meringkas perbedaan utama dalam hal pengindeksan antara edisi Cloud Firestore Standard dan edisi Cloud Firestore Enterprise.

Fitur Edisi Cloud Firestore Standard Edisi Cloud Firestore Enterprise
Persyaratan pengindeksan Semua kueri memerlukan indeks untuk dieksekusi. Kueri umumnya berperforma baik karena persyaratan ini. Kueri tidak memerlukan indeks. Operasi baca yang tidak diindeks dapat dilakukan, sehingga dapat menghilangkan hambatan untuk pembuatan prototipe.
Pengindeksan otomatis Secara default, indeks kolom tunggal dibuat secara otomatis untuk semua kolom dalam dokumen. Tidak ada indeks otomatis. Anda harus mengelola semua indeks secara manual.
Kepadatan indeks Sparse secara default. Dokumen dalam grup koleksi diindeks hanya jika dokumen tersebut berisi nilai untuk setiap kolom terindeks. Non-sparse secara default. Semua dokumen dalam grup koleksi diindeks. Kolom yang diindeks tanpa nilai ditetapkan ke NULL. Perilaku dapat diubah dengan opsi indeks sparse.
Jenis dan opsi indeks yang didukung
  • Kolom tunggal (indeks otomatis)
  • Indeks komposit
  • Cakupan Koleksi atau Grup koleksi
  • Array-contains
  • Vektor
  • Cakupan Koleksi atau Grup koleksi
  • Kepadatan indeks non-sparse atau sparse
  • Array-contains
  • Vektor
  • Indeks unik

Definisi dan struktur indeks

Indeks terdiri dari hal-hal berikut:

  • ID koleksi
  • daftar kolom dalam koleksi tertentu
  • urutan, baik menaik atau menurun, untuk setiap kolom

Indeks juga dapat mengaktifkan opsi sparse atau unique.

Pengurutan indeks

Urutan dan arah pengurutan setiap kolom menentukan indeks secara unik. Misalnya, indeks berikut adalah dua indeks yang berbeda dan tidak dapat dipertukarkan:

Koleksi Kolom
cities country (menaik), population (menurun)
cities population (menurun), country (menaik),

Saat membuat indeks untuk mendukung kueri, sertakan kolom dalam urutan yang sama dengan kueri Anda.

Kepadatan indeks

Secara default, entri indeks menyimpan data dari semua dokumen dalam koleksi. Hal ini dikenal sebagai indeks non-sparse. Entri indeks akan ditambahkan untuk dokumen, terlepas dari apakah dokumen berisi kolom yang ditentukan dalam indeks atau tidak. Kolom yang tidak ada diperlakukan sebagai memiliki nilai NULL saat membuat entri indeks. Untuk mengubah perilaku ini, Anda dapat menentukan indeks sebagai indeks sparse.

Indeks sparse

Indeks sparse hanya mengindeks dokumen dalam koleksi yang berisi nilai (termasuk null) untuk setidaknya salah satu kolom terindeks. Indeks sparse mengurangi biaya penyimpanan dan dapat meningkatkan performa.

Indeks unik

Tetapkan opsi indeks unik untuk menerapkan nilai unik untuk kolom yang diindeks. Untuk indeks pada beberapa kolom, setiap kombinasi nilai harus unik di seluruh indeks. Database menolak semua operasi update dan penyisipan yang mencoba membuat entri indeks dengan nilai duplikat. Jika data kolom yang diindeks berisi nilai duplikat dan Anda mencoba membuat indeks unik, pembuatan indeks akan gagal dengan pesan error dalam detail operasi.

Kolom yang tidak ada dalam indeks unik

Jika Anda menyisipkan dokumen dengan kolom yang tidak ada untuk indeks unik, indeks akan menetapkan nilai null untuk kolom yang tidak ada. Entri indeks yang dihasilkan harus unik atau operasi gagal.

Misalnya, dengan indeks ini:

Koleksi Kolom yang diindeks Cakupan kueri
cities nama (menaik) Koleksi

Jika Anda menambahkan dokumen {"abbreviation": "LA"} ke koleksi, indeks unik akan membuat entri dengan name disetel ke null. Jika Anda kemudian mencoba menambahkan dokumen {"abbreviation": "NYC"}, operasi akan gagal karena entri yang dihasilkan untuk indeks unik sama.

Perilaku yang sama berlaku untuk indeks unik dengan beberapa kolom. Saat membuat atau memperbarui dokumen, kolom yang diindeks yang tidak ada akan ditetapkan ke null dan entri indeks yang dihasilkan harus unik dalam indeks.

Memecahkan masalah error pembuatan indeks

Anda mungkin mengalami error pembuatan indeks saat mengelola indeks. Operasi pengindeksan dapat gagal jika database mengalami masalah dengan data. Operasi pengindeksan dapat gagal karena alasan berikut:

  • Anda telah mencapai batas indeks. Misalnya, operasi mungkin telah mencapai jumlah entri indeks maksimum per dokumen. Jika pembuatan indeks gagal, Anda akan melihat pesan error. Jika Anda belum mencapai batas indeks, coba lagi operasi indeks.
  • Anda menetapkan opsi indeks unik dan data kolom yang diindeks akan membuat entri indeks duplikat. Untuk melanjutkan, hapus kombinasi nilai duplikat dari data.

Langkah berikutnya

Pelajari cara membuat dan mengelola indeks.