Livelli di coerenza dei dati
Le query Datastore possono restituire risultati a uno dei due livelli di coerenza seguenti:
- Le query molto coerenti garantiscono i risultati più recenti, ma il completamento potrebbe richiedere più tempo.
- Le query a coerenza finale in genere vengono eseguite più velocemente, ma a volte possono restituire risultati obsoleti.
In una query a coerenza finale, si accede anche agli indici utilizzati per raccogliere i risultati con coerenza finale. Di conseguenza, a volte queste query potrebbero restituire entità che non corrispondono più ai criteri di query originali, mentre query a elevata coerenza sono sempre coerenti a livello transazionale.
Coerenza dei dati delle query Datastore
Le query restituiscono i risultati con diversi livelli di garanzia di coerenza, a seconda della natura della query:
- Le query predecessore (all'interno di un gruppo di entità) sono a elevata coerenza per impostazione predefinita, ma possono invece essere rese coerenti impostando il criterio per la lettura di Datastore (vedi di seguito).
- Le query dei non predecessori sono sempre coerenti alla fine.
Il recupero di un'entità per chiave, chiamato anche "ricerca per chiave", è fortemente coerente.
Impostazione del criterio per la 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 coerenti. L'API consente inoltre di impostare esplicitamente un criterio di elevata coerenza, ma questa impostazione non avrà alcun effetto pratico, poiché le query dei non predecessori sono sempre coerenti indipendentemente dal criterio.
Puoi anche impostare la scadenza della chiamata di Datastore, ovvero il tempo massimo, in secondi, durante il quale l'applicazione attende che Datastore restituisca un risultato prima di interrompere con un errore. La scadenza predefinita è di 60 secondi; al momento non è possibile impostarla su un valore superiore, ma puoi ridurla per assicurarti che una determinata operazione fallisca rapidamente, ad esempio per restituire una risposta più rapida all'utente. Per impostare il criterio per la lettura di Datastore e la scadenza della chiamata in Python, devi passarli come argomenti ai metodirun()
, get()
, fetch()
e count()
delle classi Query
o GqlQuery
. Ad esempio:
for result in Employee.all().run(limit=5,
read_policy=db.EVENTUAL_CONSISTENCY,
deadline=5):
# Body of iterative loop
Che cosa succede dopo?
- Scopri come specificare cosa restituisce una query e controllarne 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 pratici batch.
- Scopri la sintassi e la struttura di base delle query per Datastore.