Coerenza dei dati nelle query Datastore

Livelli di coerenza dei dati

Le query Datastore possono fornire i propri risultati a due livelli di coerenza livelli:

  • Le query a elevata coerenza garantiscono i risultati più recenti, ma potrebbero richiedere più tempo.
  • Le query a coerenza finale generalmente vengono eseguite più velocemente, ma a volte potrebbero restituire risultati non aggiornati.

In una query a coerenza finale, si accede anche agli indici utilizzati per raccogliere i risultati con coerenza finale. Di conseguenza, queste query a volte possono restituire entità che non corrispondono più ai criteri originali, mentre le query a elevata coerenza sono sempre coerenti dal punto di vista 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, 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 per la lettura di Datastore

Per migliorare le prestazioni, puoi impostare i criteri di lettura di Datastore in modo che tutte le letture e le query siano coerenti alla fine. L'API consente inoltre di impostare in modo esplicito un criterio di elevata coerenza, ma questa impostazione non avrà alcun effetto pratico, poiché le query non predecessori sono sempre coerenti a prescindere dal criterio.

Puoi anche impostare la scadenza delle chiamate di Datastore, ovvero il tempo massimo, in secondi, durante il quale l'applicazione attenderà che Datastore restituisca un risultato prima di interromperla 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 metodi run(), 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