Anda dapat menggunakan Firestore dalam mode Datastore (Datastore) untuk menyimpan data bagi aplikasi yang berjalan di lingkungan standar. Datastore menggunakan indeks untuk setiap kueri yang dibuat aplikasi Anda. Indeks ini diupdate setiap kali entity berubah, sehingga hasilnya dapat ditampilkan dengan cepat saat aplikasi membuat kueri. Untuk melakukan ini, Datastore perlu mengetahui terlebih dahulu kueri mana yang akan dibuat oleh aplikasi. Anda menentukan indeks yang diperlukan aplikasi Anda di file konfigurasi index.yaml
. Anda dapat menggunakan emulator Datastore untuk membuat file secara otomatis saat menguji aplikasi, atau menulis file Anda sendiri. File index.yaml
harus diupload saat Anda men-deploy aplikasi.
Tentang index.yaml
Setiap kueri Datastore yang dibuat oleh aplikasi memerlukan indeks yang sesuai. Indeks untuk kueri sederhana, seperti kueri atas satu properti,
dibuat secara otomatis. Indeks untuk kueri kompleks harus ditentukan dalam file konfigurasi bernama index.yaml
. File ini diupload dengan aplikasi untuk membuat indeks di Datastore.
Berikut adalah contoh file index.yaml
:
indexes:
- kind: Cat
ancestor: no
properties:
- name: name
- name: age
direction: desc
- kind: Cat
properties:
- name: name
direction: asc
- name: whiskers
direction: desc
- kind: Store
ancestor: yes
properties:
- name: business
direction: asc
- name: owner
direction: asc
Sintaksis index.yaml
adalah format YAML. Untuk mengetahui informasi lebih lanjut tentang sintaksis ini, lihat situs YAML untuk mengetahui informasi selengkapnya.
Definisi indeks
index.yaml
memiliki satu elemen daftar yang disebut indexes
. Setiap elemen dalam
daftar mewakili indeks untuk aplikasi.
Elemen indeks dapat memiliki elemen berikut:
kind
- Jenis entity untuk kueri. Elemen ini bersifat wajib.
properties
Daftar properti yang akan disertakan sebagai kolom indeks, yang akan diurutkan: properti yang digunakan dalam filter kesetaraan terlebih dahulu, diikuti dengan properti yang digunakan dalam filter ketidaksetaraan, lalu tata urutan dan arahnya.
Setiap elemen dalam daftar ini memiliki elemen berikut:
name
- Nama datastore properti.
direction
- Arah dalam mengurutkan,
asc
untuk menaik ataudesc
untuk menurun. Ini hanya diperlukan untuk properti yang digunakan dalam tata urutan kueri, dan harus sesuai dengan arah yang digunakan oleh kueri. Defaultnya adalahasc
.
ancestor
yes
jika kueri memiliki klausa ancestor (Query.setAncestor). Defaultnya adalahno
.
Membuat file indeks
Anda dapat membuat file indeks secara manual, menggunakan editor teks dan mengikuti tata letak file yang dijelaskan di atas. Pendekatan yang lebih efisien adalah membuat file secara otomatis saat Anda menguji aplikasi secara lokal. Anda dapat menggabungkan kedua metode ini.
Saat melakukan pengujian di lingkungan lokal, Anda dapat menggunakan perintah emulator gcloud untuk memulai layanan yang mengemulasi Datastore sebelum menjalankan aplikasi:
gcloud beta emulators datastore start --data-dir DATA-DIR
Gunakan flag --data-dir
untuk menentukan direktori yang akan memunculkan file index.yaml
yang
dihasilkan secara otomatis.
Saat menguji aplikasi, setiap kali Anda membuat kueri Datastore,
emulator akan menambahkan definisi indeks yang dihasilkan ke index.yaml
. Semua
definisi indeks yang dibuat secara otomatis akan muncul dalam file di bawah
baris berikut:
# AUTOGENERATED
Semua definisi indeks di atas baris ini dianggap berada di bawah kontrol
manual, dan tidak diupdate oleh server web pengembangan aplikasi. Server web
hanya akan membuat perubahan di bawah baris, dan hanya akan melakukannya jika
file index.yaml
lengkap tidak mendeskripsikan indeks yang memperhitungkan kueri yang dijalankan
oleh aplikasi. Untuk mengontrol definisi indeks otomatis, pindahkan ke atas baris ini.
Emulator dapat memperbarui definisi yang ada di bawah baris ini saat aplikasi
membuat kueri. Jika aplikasi menghasilkan setiap kueri yang akan dibuat saat Anda mengujinya,
entri yang dihasilkan di index.yaml
akan lengkap. Anda mungkin perlu mengedit file secara manual untuk menghapus indeks yang tidak digunakan dalam produksi, atau untuk menentukan indeks yang tidak dibuat saat pengujian.
Men-deploy file konfigurasi indeks
File index.yaml
dapat berada di mana saja dalam direktori kode sumber Anda.
Untuk men-deploy file tanpa mengubah versi yang saat ini aktif, gunakan salah satu perintah berikut di direktori yang berisi file indeks Anda, bergantung pada lingkungan Anda:
gcloud
gcloud app deploy index.yaml
Maven
mvn appengine:deployIndex index.yaml
Gradle
gradle appengineDeployIndex index.yaml
IDE
Jika menggunakan IntelliJ atau Eclipse, Anda memilih setiap file konfigurasi yang akan di-deploy menggunakan formulir deployment.
Menghapus indeks yang tidak digunakan
Saat Anda mengubah atau menghapus indeks dari konfigurasi indeks, indeks asli tidak akan otomatis dihapus dari App Engine. Hal ini memberi Anda kesempatan untuk membiarkan aplikasi versi lama tetap berjalan saat indeks baru sedang dibuat, atau segera kembali ke versi lama jika ada masalah pada versi yang lebih baru.
Setelah yakin bahwa indeks lama tidak lagi diperlukan, Anda dapat menghapusnya dari App Engine dengan cara berikut:
gcloud datastore indexes cleanup index.yaml