Configurazione degli indici datastore con index.yaml

Puoi utilizzare Firestore in modalità Datastore (Datastore) per archiviare i dati delle applicazioni in esecuzione completamente gestito di Google Cloud. Utilizzi di Datastore indici per ogni query effettuata dalla tua applicazione. Questi indici vengono aggiornati ogni volta che cambia l'entità, in modo che i risultati possano essere restituiti rapidamente quando l'app query. Per farlo, Datastore deve sapere in anticipo quali le query eseguite dall'applicazione. Puoi specificare gli indici richiesti dalla tua app in un di configurazione di index.yaml. Puoi utilizzare Datastore per generare il file automaticamente mentre testi l'app, oppure scrivi eseguire il file manualmente. Il file index.yaml deve essere caricato quando esegui il deployment dell'app.

Informazioni su index.yaml

Ogni query Datastore effettuata da un'applicazione richiede un indice corrispondente. Indici per query semplici, ad esempio query su un singolo vengono create automaticamente. È necessario definire gli indici per le query complesse in un file di configurazione denominato index.yaml. Questo file viene caricato con 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 al riguardo, consulta il sito web di YAML per maggiori informazioni.

Definizioni degli indici

index.yaml ha un singolo elemento dell'elenco chiamato indexes. Ogni elemento in rappresenta un indice dell'applicazione.

Un elemento indice può avere i seguenti elementi:

kind
Il tipo di entità per la query. In genere, è il nome del modello che definisce il modello delle entità. Questo elemento è obbligatorio.
properties

Un elenco di proprietà da includere come colonne dell'indice, nell'ordine da includere ordinati: prima le proprietà utilizzate nei filtri di uguaglianza, poi la proprietà utilizzata nei filtri di disuguaglianza, poi all'ordinamento e alle relative direzioni.

Ogni elemento dell'elenco contiene i seguenti elementi:

name
Il nome datastore della proprietà.
direction
La direzione di ordinamento: asc per l'ordine crescente o desc per l'opzione decrescente. Questa operazione è obbligatoria solo per le proprietà utilizzate negli ordinamenti della query e deve corrispondere alla direzione utilizzata dalla query. Il valore predefinito è asc.
ancestor

yes se la query ha una clausola predecessore (Query.ancestor() o una clausola GQL ANCESTOR IS). Il valore predefinito è no.

Creazione dei file di indice

Puoi creare un file di indice manualmente utilizzando un editor di testo e seguendo le layout di file descritto sopra. Un approccio più efficiente è quello di e generare il file mentre testi l'app localmente. Puoi combinare i due metodi.

Quando esegui i test nel tuo ambiente locale, puoi utilizzare comando gcloud emulator avviare un servizio che emula Datastore prima di eseguire dell'app:

gcloud beta emulators datastore start --data-dir DATA-DIR

Utilizza il flag --data-dir per specificare la directory in cui viene generato automaticamente Verrà visualizzato index.yaml file.

Quando testi l'app, ogni volta che generi una query Datastore, l'emulatore aggiunge una definizione di indice generata a index.yaml. Tutti i le definizioni di indice generate automaticamente verranno visualizzate nel file sotto riga seguente:

# AUTOGENERATED

Tutte le definizioni di indice sopra questa riga sono considerate manuali e non vengono aggiornati dal server web di sviluppo. Il server web apporta modifiche solo sotto la riga e lo farà solo se l'intero Il file index.yaml non descrive un indice che spiega una query eseguita dall'applicazione. Per assumere il controllo di una definizione di indice automatica, spostala al di sopra di questa riga.

L'emulatore potrebbe aggiornare le definizioni esistenti sotto questa riga quando esegue query. Se l'app genera ogni query che effettuerà 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, oppure per gli indici che non sono stati creati durante il test.

Deployment del file di configurazione dell'indice

Per eseguire il deployment del file di configurazione index.yaml, esegui questo comando:

gcloud app deploy index.yaml

Eliminazione degli indici inutilizzati

Quando modifichi o rimuovi un indice dalla configurazione dell'indice, non venga eliminato automaticamente da App Engine. Questo ti offre l'opportunità di lasciare in esecuzione una versione precedente dell'app mentre i nuovi indici vengono o di ripristinare immediatamente la versione precedente se si verifica un problema rilevato con una versione più recente.

Quando hai la certezza che i vecchi indici non siano più necessari, puoi eliminarli da App Engine nel seguente modo:

gcloud datastore indexes cleanup index.yaml