Puoi utilizzare
Firestore in modalità Datastore (Datastore)
per archiviare i dati delle applicazioni in esecuzione nell'ambiente flessibile
ambiente. 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'app esegue una query. Per farlo, Datastore deve sapere in anticipo quali query eseguirà l'applicazione. Specifichi 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 scriverlo tu. Il file index.yaml deve essere caricato quando esegui il deployment dell'app.
Esempio di index.yaml
Ogni query Datastore eseguita da un'applicazione richiede un indice corrispondente. Gli indici per le query semplici, ad esempio le query 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 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 su questa
sintassi, consulta il sito web YAML.
Definizioni degli indici
index.yaml ha un singolo elemento di elenco chiamato indexes. Ogni elemento dell'elenco rappresenta un indice per l'applicazione.
Un elemento indice può avere i seguenti elementi:
kind- Obbligatorio. Il tipo di entità per la query.
propertiesUn elenco di proprietà da includere come colonne dell'indice, nell'ordine in cui devono essere ordinate: prima le proprietà utilizzate nei filtri di uguaglianza, seguite dalla proprietà utilizzata nei filtri di disuguaglianza, quindi gli ordinamenti e le relative direzioni.
Ogni elemento di questo elenco ha i seguenti elementi:
name- Il nome della proprietà in Datastore.
direction- La direzione di ordinamento,
ascper l'ordinamento crescente odescper l'ordinamento decrescente. Questo è obbligatorio solo per le proprietà utilizzate negli ordinamenti della query e deve corrispondere alla direzione utilizzata dalla query. Il valore predefinito èasc.
ancestor-
yes`yes` se la query ha una clausola di predecessore (Query.ancestor() o una clausola GQL ANCESTOR IS). Il valore predefinito èno.
Creare file di indice
Puoi creare un file di indice manualmente, utilizzando un editor di testo e seguendo il layout del file descritto sopra. Un approccio più efficiente consiste nel generare automaticamente il file durante il test dell'app in locale. Puoi combinare i due metodi.
Quando esegui i test nell'ambiente locale, puoi utilizzare il comando gcloud emulator 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 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 sotto controllo manuale e non vengono aggiornate dal server web di sviluppo. Il server web apporterà modifiche solo sotto la riga e 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 automatico, spostala sopra questa riga.
L'emulatore potrebbe aggiornare le definizioni esistenti sotto questa riga man mano che l'applicazione esegue le query. Se l'app genera ogni query che eseguirà durante il test, le voci generate in index.yaml saranno complete. Potresti dover modificare manualmente il file per eliminare gli indici non utilizzati in produzione o per definire gli indici non creati durante il test.
Eseguire il deployment del file di configurazione dell'indice
Per eseguire il deployment del file di configurazione index.yaml, esegui il comando seguente:
gcloud app deploy index.yaml
Eliminare gli indici inutilizzati
Quando modifichi o rimuovi un indice dalla configurazione dell'indice, l'indice originale non viene eliminato automaticamente da App Engine. In questo modo, puoi lasciare in esecuzione una versione precedente dell'app mentre vengono creati nuovi indici oppure puoi ripristinare immediatamente la versione precedente se viene rilevato un problema con una versione più recente.
Quando sei sicuro che i vecchi indici non siano più necessari, puoi eliminarli da App Engine nel seguente modo:
gcloud datastore indexes cleanup index.yaml