Puoi utilizzare Datastore per archiviare i dati delle tue applicazioni in esecuzione nell'ambiente standard. Datastore utilizza gli indici per ogni query eseguita dall'applicazione. Questi indici vengono aggiornati ogni volta che un'entità cambia, in modo che i risultati possano essere restituiti rapidamente quando l'applicazione effettua una query. A tale scopo, Datastore deve sapere in anticipo quali
query verranno eseguite dall'applicazione. Sei tu a specificare gli indici di cui la tua app ha bisogno in un
file di configurazione index.yaml
. Puoi utilizzare l'emulatore Datastore per generare automaticamente il file durante il test dell'app o scrivere personalmente il file. Il file index.yaml
deve essere caricato quando esegui il deployment dell'app.
Informazioni su index.yaml
Ogni query di Datastore effettuata da un'applicazione richiede un indice corrispondente. Gli indici per le query semplici, come quelle su una singola proprietà, vengono creati automaticamente. Gli indici per le query complesse devono essere definiti in un file di configurazione denominato index.yaml
. Questo file viene caricato con l'applicazione per creare gli indici in Datastore.
Di seguito è riportato un esempio di file index.yaml
:
indexes:
- kind: Cat
ancestor: no
properties:
- name: name
- name: age
direction: desc
- kind: Cat
properties:
- name: name
direction: asc
- name: whiskers
direction: desc
- kind: Store
ancestor: yes
properties:
- name: business
direction: asc
- name: owner
direction: asc
La sintassi di index.yaml
è il formato YAML. Per ulteriori informazioni sulla sintassi, consulta il sito web YAML.
Definizioni degli indici
index.yaml
ha un singolo elemento di elenco chiamato indexes
. Ogni elemento nell'elenco rappresenta un indice per l'applicazione.
Un elemento di indice può avere i seguenti elementi:
kind
- Il tipo di entità per la query. Questo elemento è obbligatorio.
properties
Un elenco di proprietà da includere come colonne dell'indice, nell'ordine da ordinare: proprietà utilizzate prima nei filtri di uguaglianza, seguite dalla proprietà utilizzata nei filtri di disuguaglianza, quindi gli ordini e le relative indicazioni.
Ogni elemento di questo elenco include i seguenti elementi:
name
- Il nome del datastore della proprietà.
direction
- La direzione da ordinare, ovvero
asc
per crescente odesc
per decrescente. Ciò è obbligatorio solo per le proprietà utilizzate negli ordini della query e deve corrispondere alla direzione utilizzata dalla query. Il valore predefinito èasc
.
ancestor
yes
se la query ha una clausola predecessore (). Il valore predefinito èno
.
Creazione di file di indice
Puoi creare un file di indice manualmente utilizzando un editor di testo e seguendo il layout del file descritto in precedenza. Un approccio più efficiente consiste nel generare automaticamente il file quando verifichi l'app in locale. Puoi combinare i due metodi.
Quando esegui dei test nel tuo ambiente locale, puoi utilizzare il comando emulatore gcloud per avviare un servizio che emula Datastore prima di eseguire l'app:
gcloud beta emulators datastore start --data-dir DATA-DIR
Utilizza il flag --data-dir
per specificare la directory in cui verrà visualizzato il file
index.yaml
generato automaticamente.
Durante il test dell'app, ogni volta che generi una query di Datastore, l'emulatore aggiunge una definizione di indice generata a index.yaml
. Tutte le definizioni di indice generate automaticamente verranno visualizzate nel file sotto la riga seguente:
# AUTOGENERATED
Tutte le definizioni di indice sopra questa riga sono considerate sottoposte a controllo manuale e non vengono aggiornate dal server web di sviluppo. Il server web apporta modifiche solo al di sotto della riga e lo fa solo se il file index.yaml
completo non descrive un indice che tiene conto di una query eseguita dall'applicazione. Per assumere il controllo di una definizione di indice automatica, spostala
al di sopra di questa riga.
L'emulatore può aggiornare le definizioni esistenti sotto questa riga mentre l'applicazione
effettua query. Se l'app genera ogni query che effettuerà durante il test,
le voci generate in index.yaml
saranno completate. Potrebbe essere necessario modificare manualmente il file per eliminare gli indici non utilizzati in produzione o per definire gli indici che non sono stati creati durante i test.
Deployment del file di configurazione dell'indice
Per eseguire il deployment del file di configurazione diindex.yaml
, esegui il comando seguente:
gcloud app deploy index.yaml
Eliminazione degli indici inutilizzati
Quando modifichi o rimuovi un indice dalla configurazione dell'indice, quest'ultimo non viene eliminato automaticamente da App Engine. Questo ti offre la possibilità di lasciare in esecuzione una versione precedente dell'app durante la creazione di nuovi indici o di ripristinare immediatamente la versione precedente se viene rilevato un problema con una versione più recente.
Quando hai la certezza che gli indici precedenti non siano più necessari, puoi eliminarli da App Engine nel seguente modo:
gcloud datastore indexes cleanup index.yaml