Menjalankan Emulator Datastore

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, !=, dan NOT-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:

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:

  1. Jalankan perintah env-init:

    gcloud beta emulators datastore env-init
  2. 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:

  1. Jalankan perintah env-unset:

    gcloud beta emulators datastore env-unset
  2. 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.