Niveaux de cohérence des données
Les requêtes Datastore peuvent produire des résultats à l'un des deux niveaux de cohérence suivants :
- Les requêtes fortement cohérentes garantissent l'obtention des résultats les plus récents, mais leur exécution peut prendre plus de temps.
- Les requêtes cohérentes à terme s'exécutent en règle générale plus rapidement, mais elles peuvent parfois renvoyer des résultats obsolètes.
Dans les requêtes cohérentes à terme, les index servant à la collecte des résultats sont également accessibles avec une cohérence à terme. Par conséquent, ces requêtes peuvent parfois afficher des entités qui ne correspondent plus aux critères de requête d'origine, alors que les requêtes fortement cohérentes sont toujours cohérentes de manière transactionnelle.
Cohérence des données de requête Datastore
En fonction de leur nature, les requêtes renvoient leurs résultats avec différents niveaux de garantie de cohérence :
- Les requêtes ascendantes (celles exécutées dans un groupe d'entités) sont fortement cohérentes par défaut, mais vous pouvez les rendre cohérentes à terme en définissant les règles de lecture Datastore (voir ci-dessous).
- Les requêtes non ascendantes sont toujours cohérentes à terme.
La récupération d'une entité par clé, également appelée "recherche par clé", offre une cohérence forte.
Définir les règles de lecture Datastore
Pour améliorer les performances, vous pouvez définir les règles de lecture Datastore afin que toutes les lectures et requêtes soient cohérentes à terme. L'API vous permet également de définir explicitement des règles de cohérence forte, mais ce paramètre n'aura aucun effet pratique, car les requêtes non ascendantes sont toujours cohérentes, quelles que soient les règles.
Vous pouvez également définir la durée maximale de l'appel à Datastore, qui correspond au délai maximal, en secondes, pendant lequel l'application attend que Datastore affiche un résultat avant d'abandonner en générant une erreur. La durée par défaut est de 60 secondes. Pour le moment, il n'est pas possible d'augmenter cette valeur, mais vous pouvez définir une durée plus courte pour garantir qu'une opération particulière échoue rapidement (par exemple, pour afficher une réponse plus rapide à l'utilisateur). Pour définir les règles de lecture Datastore et la durée maximale de l'appel dans Python, vous devez les transmettre sous forme d'arguments aux méthodesrun()
, get()
, fetch()
et count()
de la classe Query
ou GqlQuery
. Exemple :
for result in Employee.all().run(limit=5,
read_policy=db.EVENTUAL_CONSISTENCY,
deadline=5):
# Body of iterative loop
Étapes suivantes
- Découvrez comment spécifier ce qu'une requête renvoie et contrôler davantage les résultats de la requête.
- Découvrez les restrictions courantes concernant les requêtes sur Datastore.
- Découvrez les curseurs de requête, qui permettent à une application de récupérer les résultats d'une requête sous forme de lots pratiques.
- Découvrez la syntaxe et la structure de base des requêtes pour Datastore.