Livelli di coerenza dei dati
Le query Datastore possono fornire i propri risultati a due livelli di coerenza livelli:
- Le query molto coerenti garantiscono i risultati più recenti, ma potrebbero richiedere più tempo per essere completate.
- Le query a coerenza finale generalmente vengono eseguite più velocemente, ma a volte potrebbero restituire risultati non aggiornati.
In una query con coerenza finale, anche gli indici utilizzati per raccogliere i risultati sono accessibili con coerenza finale. Di conseguenza, a volte queste query possono restituire entità che non corrispondono più ai criteri della query originale, mentre le query fortemente coerenti sono sempre coerenti a livello di transazioni.
Coerenza dei dati delle query di Datastore
Le query restituiscono i risultati con diversi livelli di garanzia di coerenza, a seconda della loro natura:
- Le query predecessore, ovvero all'interno di gruppo di entità) sono a elevata coerenza per impostazione predefinita, ma possono essere applicati alla fine coerente impostando il criterio per la lettura Datastore (vedi di seguito).
- Le query non predecessori sono sempre coerenti alla fine.
Il recupero di un'entità per chiave, detto anche "ricerca per chiave", coerente.
Impostazione del criterio di lettura di Datastore
Per migliorare le prestazioni, puoi impostare il criterio di lettura di Datastore in modo che tutte le letture e le query siano eventualmente coerenti. L'API consente anche di impostare esplicitamente un criterio di coerenza forte, ma questa impostazione non avrà alcun effetto pratico, poiché le query non antecedenti sono sempre eventualmente coerenti indipendentemente dal criterio.
Puoi anche impostare la scadenza della chiamata di Datastore, ovvero il tempo massimo, in secondi, che l'applicazione attenderà che Datastore restituisca un risultato prima di abortire con un errore. La scadenza predefinita è 60 secondi. al momento non è possibile impostarla su un valore superiore, ma puoi regolarla verso il basso per assicurarti che una determinata operazione non vada a buon fine rapidamente (ad esempio per restituire una risposta più rapida all'utente). Per impostare il criterio per la lettura di Datastore e la scadenza delle chiamate in Python, devi passarli come argomenti per i metodirun()
, get()
, fetch()
e count()
della classe Query
o GqlQuery
. Ad esempio:
for result in Employee.all().run(limit=5,
read_policy=db.EVENTUAL_CONSISTENCY,
deadline=5):
# Body of iterative loop
Passaggi successivi
- Scopri come specificare cosa restituisce una query e come controllare ulteriormente i risultati.
- Scopri le limitazioni comuni per le query su Datastore.
- Scopri di più sui cursori di query, che consentono a un'applicazione di recuperare i risultati di una query in comodi batch.
- Scopri la sintassi e la struttura di base delle query per Datastore.