Esecuzione dell'emulatore Datastore

L'emulatore Datastore fornisce l'emulazione locale dell'ambiente di produzione Ambiente Datastore. Puoi usare l'emulatore per sviluppare e testare l'applicazione localmente. Inoltre, l'emulatore può aiutarti generare indici per l'istanza Datastore di produzione eliminare gli indici non necessari. Questa pagina illustra come installare l'emulatore. avviando l'emulatore e impostando le variabili di ambiente per connettere all'emulatore.

Problemi noti

Per impostazione predefinita, l'emulatore Datastore non emula introdotte da Firestore in modalità Datastore. I seguenti comportamenti predefiniti dell'emulatore non corrispondono alla modalità Datastore:

  • Per impostazione predefinita, l'emulatore simula la coerenza finale. Firestore in modalità Datastore è a elevata coerenza.
  • L'emulatore non consente query non dei predecessori all'interno delle transazioni. Firestore in modalità Datastore non ha più questa limitazione.
  • L'emulatore non supporta le query IN, != e NOT-IN.
  • L'emulatore non supporta query di aggregazione come COUNT(*).

Tuttavia, la modalità --use-firestore-in-datastore-mode aiuta ad allentare alcune delle restrizioni riportate sopra per Firestore in modalità Datastore.

  • L'emulatore simula query non predecessori a elevata coerenza.
  • L'emulatore consente query non dei predecessori all'interno delle transazioni.
  • L'emulatore rimuove la limitazione di 25 gruppi di entità in una transazione.

Per emulare Firestore in modalità Datastore, usa gcloud emulators firestore start --database-mode=datastore-mode .

Prima di iniziare

Per utilizzare l'emulatore Datastore, devi avere:

Installazione dell'emulatore

L'emulatore Datastore è un componente di gcloud CLI. Utilizza il comando gcloud components install per installare Emulatore Datastore:

gcloud components install cloud-datastore-emulator

Directory dei dati dell'emulatore

L'emulatore simula Datastore creando /WEB-INF/appengine-generated/local_db.bin in una directory di dati specificata e per archiviare i dati in local_db.bin. Per impostazione predefinita, l'emulatore utilizza directory dei dati ~/.config/gcloud/emulators/datastore/. Il file local_db.bin persiste tra una sessione e l'altra dell'emulatore. Puoi impostare più directory di dati e considerarle ciascuna come una piattaforma Istanza in modalità Datastore. Per cancellare i contenuti di un local_db.bin arresta l'emulatore ed elimina manualmente il file.

Avvio dell'emulatore

Avvia l'emulatore eseguendo datastore start da un prompt dei comandi:

gcloud emulators datastore start [flags]

dove [flags] sono gli argomenti facoltativi della riga di comando forniti al gcloud CLI. Ad esempio:

  • --data-dir=[DATA_DIR] cambia i dati dell'emulatore . L'emulatore crea /WEB-INF/appengine-generated/local_db.bin file all'interno di [DATA_DIR] o, se disponibile, utilizza un file esistente.

  • --no-store-on-disk configura l'emulatore in modo che non venga mantenuto alcuno su disco per la sessione dell'emulatore.

Per la versione completa, consulta il riferimento di gcloud beta emulators datastore start l'elenco dei flag facoltativi.

Dopo aver avviato l'emulatore, dovresti vedere un messaggio simile a:

...
[datastore] Dev App Server is now running.

Per arrestare l'emulatore, digita Ctrl-C al prompt dei comandi.

Imposta le variabili di ambiente

Dopo aver avviato l'emulatore, devi impostare le variabili di ambiente in modo che si connette all'emulatore anziché alla versione di produzione in modalità Datastore. Imposta queste variabili di ambiente nella nella stessa macchina che usi per eseguire la tua applicazione.

Devi impostare le variabili di ambiente a ogni avvio dell'emulatore. Le variabili di ambiente dipendono da numeri di porta assegnati dinamicamente potrebbe cambiare quando riavvii l'emulatore.

Impostazione automatica delle variabili

Se l'applicazione e l'emulatore vengono eseguiti sulla stessa macchina, puoi impostare automaticamente le variabili di ambiente:

Linux / MacOS

Esegui env-init utilizzando la sostituzione dei comandi:

$(gcloud beta emulators datastore env-init)

Windows

Crea ed esegui un file batch utilizzando l'output da env-init:

gcloud beta emulators datastore env-init > set_vars.cmd && set_vars.cmd

L'applicazione si connetterà all'emulatore Datastore.

Impostare manualmente le variabili

Se la tua applicazione e l'emulatore sono eseguiti su macchine diverse, imposta il valore le variabili di ambiente manualmente:

  1. Esegui il comando env-init:

    gcloud beta emulators datastore env-init
  2. Sulla macchina su cui viene eseguita l'applicazione, imposta le variabili di ambiente e i valori come indicato dall'output del comando env-init. Ad esempio:

    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

L'applicazione si connetterà all'emulatore Datastore. Nota che l'ID progetto e la porta forniti dal comando siano diversi da quelli indicati sopra esempio.

Aggiornamento ed eliminazione degli indici

Eseguendo l'applicazione utilizzando l'emulatore, puoi generare indici per il database in modalità Datastore di produzione, nonché l'eliminazione non necessaria indici di appartenenza. Scopri di più, consulta Utilizzo di gcloud CLI.

Rimozione delle variabili di ambiente

Dopo aver finito di utilizzare l'emulatore, arrestalo (Ctrl-C) e rimuovilo le variabili di ambiente in modo che l'applicazione si connetta in modalità Datastore.

Rimozione automatica delle variabili

Se la tua applicazione e l'emulatore vengono eseguiti sullo stesso computer, puoi rimuovere automaticamente le variabili di ambiente:

Linux/macOS

Esegui env-unset utilizzando la sostituzione dei comandi:

$(gcloud beta emulators datastore env-unset)

Windows

Crea ed esegui un file batch utilizzando l'output da env-unset:

gcloud beta emulators datastore env-unset > remove_vars.cmd && remove_vars.cmd

L'applicazione si connetterà alla modalità Datastore di produzione per configurare un database.

Rimuovere manualmente le variabili

Se la tua applicazione e l'emulatore sono eseguiti su macchine diverse, rimuovi le variabili di ambiente manualmente:

  1. Esegui il comando env-unset:

    gcloud beta emulators datastore env-unset
  2. Rimuovi l'ambiente sulla macchina che esegue la tua applicazione come indicato dall'output del comando env-unset. Ad esempio:

    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=

L'applicazione si connetterà alla modalità Datastore di produzione per configurare un database.