Cohérence des données dans les requêtes Cloud Datastore

Niveaux de cohérence des données

Les requêtes Cloud 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 afficher 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. Pour en savoir plus sur la mise à jour des entités et des index, consultez l'article Isolation des transactions dans App Engine.

Cohérence des données de requête Cloud 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 elles peuvent être rendues cohérentes à terme par la définition des règles de lecture de Cloud 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 de Cloud Datastore

Pour améliorer les performances, vous pouvez définir les règles de lecture de Cloud Datastore de manière à ce 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 au Cloud Datastore, qui correspond au délai maximal, en secondes, pendant lequel l'application attend que Cloud 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 de Cloud Datastore et la durée maximale de l'appel dans Python, vous devez les transmettre sous forme d'arguments aux méthodes run(), 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

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement standard App Engine pour Python 2