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 descrive la procedura per installare l'emulatore, avviarlo e impostare le variabili di ambiente per connettere l'applicazione all'emulatore.
Problemi noti
Per impostazione predefinita, l'emulatore Datastore non emula le funzionalità 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
,!=
eNOT-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 antecedenti fortemente coerenti.
- L'emulatore consente query non relative all'antenato all'interno delle transazioni.
- L'emulatore rimuove il limite di 25 gruppi di entità in una transazione.
Per emulare Firestore in modalità Datastore,
utilizza gcloud emulators firestore start --database-mode=datastore-mode
.
Prima di iniziare
Per utilizzare l'emulatore Datastore, devi avere:
- JRE Java (versione 11 o successive)
- Google Cloud CLI
- Un'applicazione creata utilizzando le librerie client di Google Cloud
Installazione dell'emulatore
L'emulatore Datastore è un componente dell'interfaccia a riga di comando gcloud.
Utilizza il comando gcloud components install
per installare l'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
viene mantenuto tra le sessioni dell'emulatore. Puoi impostare
più directory di dati e considerarle ciascuna come una rete locale
Istanza in modalità Datastore. Per cancellare i contenuti di un file local_db.bin
, interrompi 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]
modifica la directory dei 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 visualizzare un messaggio simile al seguente:
...
[datastore] Dev App Server is now running.
Per interrompere 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 l'applicazione si connetta all'emulatore anziché al database in 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 ogni volta che avvii l'emulatore. Le variabili di ambiente dipendono dai numeri di porta assegnati in modo dinamico che potrebbero cambiare quando riavvii l'emulatore.
Impostazione automatica delle variabili
Se l'applicazione e l'emulatore vengono eseguiti sullo stesso computer, 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 di env-init
:
gcloud beta emulators datastore env-init > set_vars.cmd && set_vars.cmd
L'applicazione si connetterà all'emulatore Datastore.
Impostazione manuale delle variabili
Se l'applicazione e l'emulatore sono eseguiti su macchine diverse, imposta il valore le variabili di ambiente manualmente:
Esegui il comando
env-init
:gcloud beta emulators datastore env-init
Imposta l'ambiente sulla macchina che esegue la tua applicazione e le variabili 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 ora si connette all'emulatore Datastore. Nota che l'ID progetto e la porta forniti dal comando siano diversi da quelli indicati sopra esempio.
Aggiornamento ed eliminazione di indici
Eseguendo l'applicazione con l'emulatore, puoi generare indici per il database in modalità Datastore di produzione, nonché l'eliminazione non necessaria indici di appartenenza. Scopri di più nella pagina Utilizzare l'interfaccia a riga di comando gcloud.
Rimozione delle variabili di ambiente
Al termine dell'utilizzo dell'emulatore, interrompilo (Control-C) e rimuovi le variabili di ambiente in modo che l'applicazione si connetta al database in modalità Datastore di produzione.
Rimozione automatica delle variabili
Se l'applicazione e l'emulatore vengono eseguiti sulla stessa macchina, 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
Ora l'applicazione si connetterà al database in modalità Datastore di produzione.
Rimuovere manualmente le variabili
Se l'applicazione e l'emulatore vengono eseguiti su macchine diverse,rimuovi le variabili di ambiente manualmente:
Esegui il comando
env-unset
:gcloud beta emulators datastore env-unset
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.