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 production dan menghapus indeks yang tidak diperlukan. Halaman ini akan memandu Anda dalam menginstal emulator, memulai emulator, dan menetapkan variabel lingkungan untuk menghubungkan aplikasi ke emulator.
Masalah umum
Secara default, emulator Datastore tidak mengemulasi 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, flag --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 grup entity dalam satu 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
dalam direktori data yang ditentukan dan menyimpan data dalam local_db.bin
. Secara default, emulator menggunakan
direktori data ~/.config/gcloud/emulators/datastore/
.
File local_db.bin
akan dipertahankan di antara sesi emulator. Anda dapat menyiapkan
beberapa direktori data dan menganggap masing-masing 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 diberikan ke gcloud CLI. Contoh:
--data-dir=[DATA_DIR]
mengubah direktori data emulator. Emulator akan membuat file/WEB-INF/appengine-generated/local_db.bin
di dalam[DATA_DIR]
atau, jika tersedia, menggunakan file yang sudah 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 seperti berikut:
...
[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 Anda terhubung ke emulator, bukan database mode Datastore produksi. Tetapkan variabel lingkungan ini pada mesin yang sama dengan yang digunakan untuk menjalankan aplikasi Anda.
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 pada mesin yang sama, Anda dapat menetapkan variabel lingkungan secara otomatis:
Linux / Mac
Jalankan env-init
menggunakan substitusi 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
Sekarang aplikasi Anda akan terhubung ke emulator Datastore.
Menetapkan variabel secara manual
Jika aplikasi dan emulator Anda berjalan pada mesin yang berbeda, tetapkan variabel lingkungan secara manual:
Jalankan perintah
env-init
:gcloud beta emulators datastore env-init
Pada mesin 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
Sekarang aplikasi Anda 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 artikel Menggunakan gcloud CLI.
Menghapus variabel lingkungan
Setelah selesai menggunakan emulator, hentikan emulator (Control-C) dan hapus variabel lingkungan sehingga aplikasi Anda akan terhubung ke database mode Datastore produksi.
Menghapus variabel secara otomatis
Jika aplikasi dan emulator berjalan pada mesin yang sama, Anda dapat menghapus variabel lingkungan secara otomatis:
Linux / Mac
Jalankan env-unset
menggunakan substitusi 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 kini akan terhubung ke database mode Datastore produksi.
Menghapus variabel secara manual
Jika aplikasi dan emulator Anda berjalan pada komputer yang berbeda, hapus variabel lingkungan secara manual:
Jalankan perintah
env-unset
:gcloud beta emulators datastore env-unset
Di mesin 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 kini akan terhubung ke database mode Datastore produksi.