Emulator Datastore menyediakan emulasi lokal lingkungan Datastore produksi. Anda dapat menggunakan emulator untuk mengembangkan dan menguji aplikasi secara lokal. Selain itu, emulator dapat membantu Anda membuat indeks untuk instance Datastore produksi dan menghapus indeks yang tidak diperlukan. Halaman ini memandu Anda menginstal emulator, memulai emulator, dan menetapkan variabel lingkungan untuk menghubungkan aplikasi ke emulator.
Masalah umum
Secara default, emulator Datastore tidak mengemulasikan fitur yang diperkenalkan oleh Firestore dalam mode Datastore. Perilaku emulator default berikut tidak cocok dengan mode Datastore:
- Emulator menyimulasikan konsistensi tertunda, secara default. Firestore dalam mode Datastore sangat konsisten.
- Emulator tidak mengizinkan kueri non-ancestor dalam transaksi. Firestore dalam mode Datastore tidak lagi memiliki batasan ini.
- Emulator tidak mendukung kueri
IN
,!=
, danNOT-IN
. - Emulator tidak mendukung kueri agregasi seperti
COUNT(*)
.
Namun, tanda --use-firestore-in-datastore-mode membantu melonggarkan beberapa batasan di atas untuk Firestore dalam Mode Datastore.
- Emulator menyimulasikan kueri non-ancestor yang sangat konsisten.
- Emulator memungkinkan kueri non-ancestor dalam transaksi.
- Emulator menghapus batasan 25 entity group dalam transaksi.
Untuk mengemulasi Firestore dalam mode Datastore, gunakan gcloud emulators firestore start --database-mode=datastore-mode
.
Sebelum memulai
Untuk menggunakan emulator Datastore, Anda memerlukan:
- JRE Java (versi 11 atau yang lebih baru)
- Google Cloud CLI
- Aplikasi yang dibuat menggunakan Library Klien Google Cloud
Menginstal emulator
Emulator Datastore adalah komponen gcloud CLI.
Gunakan perintah gcloud components install
untuk menginstal
emulator Datastore:
gcloud components install cloud-datastore-emulator
Direktori data emulator
Emulator menyimulasikan Datastore dengan membuat
/WEB-INF/appengine-generated/local_db.bin
di direktori data yang ditentukan dan
menyimpan data di local_db.bin
. Secara default, emulator menggunakan
direktori data ~/.config/gcloud/emulators/datastore/
.
File local_db.bin
tetap ada di antara sesi emulator. Anda dapat menyiapkan beberapa direktori data dan menganggap setiap direktori sebagai instance mode Datastore lokal yang terpisah. Untuk menghapus konten file local_db.bin
, hentikan emulator dan hapus file secara manual.
Memulai emulator
Mulai emulator dengan menjalankan datastore start
dari command prompt:
gcloud emulators datastore start [flags]
dengan [flags]
adalah argumen command line opsional yang disediakan ke gcloud CLI. Contoh:
--data-dir=[DATA_DIR]
mengubah direktori data emulator. Emulator membuat file/WEB-INF/appengine-generated/local_db.bin
di dalam[DATA_DIR]
atau, jika tersedia, menggunakan file yang ada.--no-store-on-disk
mengonfigurasi emulator agar tidak mempertahankan data apa pun ke disk untuk sesi emulator.
Lihat referensi gcloud beta emulators datastore start
untuk mengetahui daftar lengkap flag opsional.
Setelah memulai emulator, Anda akan melihat pesan yang mirip dengan berikut ini:
...
[datastore] Dev App Server is now running.
Untuk menghentikan emulator, ketik Control-C di command prompt.
Menyetel variabel lingkungan
Setelah memulai emulator, Anda perlu menetapkan variabel lingkungan agar aplikasi terhubung ke emulator, bukan database mode Datastore produksi. Tetapkan variabel lingkungan ini di mesin yang sama dengan yang Anda gunakan untuk menjalankan aplikasi.
Anda perlu menetapkan variabel lingkungan setiap kali memulai emulator. Variabel lingkungan bergantung pada nomor port yang ditetapkan secara dinamis yang dapat berubah saat Anda memulai ulang emulator.
Menetapkan variabel secara otomatis
Jika aplikasi dan emulator berjalan di komputer yang sama, Anda dapat menetapkan variabel lingkungan secara otomatis:
Linux / macOS
Jalankan env-init
menggunakan penggantian perintah:
$(gcloud beta emulators datastore env-init)
Windows
Buat dan jalankan file batch menggunakan output dari env-init
:
gcloud beta emulators datastore env-init > set_vars.cmd && set_vars.cmd
Aplikasi Anda sekarang akan terhubung ke emulator Datastore.
Menetapkan variabel secara manual
Jika aplikasi dan emulator Anda berjalan di mesin yang berbeda, tetapkan variabel lingkungan secara manual:
Jalankan perintah
env-init
:gcloud beta emulators datastore env-init
Di komputer yang menjalankan aplikasi Anda, tetapkan variabel dan nilai lingkungan seperti yang diarahkan oleh output perintah
env-init
. Contoh:Linux / macOS export DATASTORE_DATASET=my-project-id export DATASTORE_EMULATOR_HOST=::1:8432 export DATASTORE_EMULATOR_HOST_PATH=::1:8432/datastore export DATASTORE_HOST=http://::1:8432 export DATASTORE_PROJECT_ID=my-project-id
Windows set DATASTORE_DATASET=my-project-id set DATASTORE_EMULATOR_HOST=::1:8432 set DATASTORE_EMULATOR_HOST_PATH=::1:8432/datastore set DATASTORE_HOST=http://::1:8432 set DATASTORE_PROJECT_ID=my-project-id
Aplikasi Anda sekarang akan terhubung ke emulator Datastore. Perhatikan bahwa project ID dan port yang diberikan oleh perintah akan berbeda dengan contoh di atas.
Memperbarui dan menghapus indeks
Dengan menjalankan aplikasi menggunakan emulator, Anda dapat membuat indeks untuk database mode Datastore produksi, serta menghapus indeks yang tidak diperlukan. Pelajari lebih lanjut di Menggunakan gcloud CLI.
Menghapus variabel lingkungan
Setelah Anda selesai menggunakan emulator, hentikan emulator (Control-C) dan hapus variabel lingkungan agar aplikasi Anda terhubung ke database mode Datastore produksi.
Menghapus variabel secara otomatis
Jika aplikasi dan emulator berjalan di mesin yang sama, Anda dapat menghapus variabel lingkungan secara otomatis:
Linux / macOS
Jalankan env-unset
menggunakan penggantian perintah:
$(gcloud beta emulators datastore env-unset)
Windows
Buat dan jalankan file batch menggunakan output dari env-unset
:
gcloud beta emulators datastore env-unset > remove_vars.cmd && remove_vars.cmd
Aplikasi Anda sekarang akan terhubung ke database mode Datastore produksi.
Menghapus variabel secara manual
Jika aplikasi dan emulator Anda berjalan di mesin yang berbeda, hapus variabel lingkungan secara manual:
Jalankan perintah
env-unset
:gcloud beta emulators datastore env-unset
Di komputer yang menjalankan aplikasi Anda, hapus variabel lingkungan seperti yang diarahkan oleh output perintah
env-unset
. Contoh:Linux / macOS unset DATASTORE_DATASET unset DATASTORE_EMULATOR_HOST unset DATASTORE_EMULATOR_HOST_PATH unset DATASTORE_HOST unset DATASTORE_PROJECT_ID
Windows set DATASTORE_DATASET= set DATASTORE_EMULATOR_HOST= set DATASTORE_EMULATOR_HOST_PATH= set DATASTORE_HOST= set DATASTORE_PROJECT_ID=
Aplikasi Anda sekarang akan terhubung ke database mode Datastore produksi.