Coherencia de los datos de consulta de Datastore

Niveles de coherencia de datos

Las consultas en Datastore pueden arrojar resultados en uno de los dos niveles de coherencia:

  • Coherencia sólida: Estas consultas garantizan que los resultados incluyan la información más reciente, pero pueden tomar más tiempo en completarse.
  • Coherencia eventual: Estas consultas suelen ejecutarse más rápido, pero a veces pueden mostrar resultados obsoletos.

En una consulta de coherencia eventual, también se accede a los índices usados para reunir los resultados con coherencia eventual. Por lo tanto, esas consultas, a veces, pueden mostrar entidades que ya no coinciden con los criterios originales de la consulta, al tiempo que las consultas de coherencia sólida siempre son coherentes entre las transacciones.

Coherencia de los datos de consulta de Datastore

Las consultas muestran sus resultados con distintos niveles de garantía de coherencia, según la naturaleza de la consulta.

  • De forma predeterminada, las consultas principales (las que están dentro de un grupo de entidades) tienen coherencia sólida. Sin embargo, se puede modificar la política de lectura de Datastore (detallada a continuación) para hacer que tengan coherencia eventual.
  • Las consultas que no son principales siempre son de coherencia eventual.

La recuperación de una entidad por clave, también denominada “búsqueda por clave”, es de coherencia sólida.

Configura la política de lectura de Datastore

Para mejorar el rendimiento, puedes configurar la política de lectura de Datastore de modo que todas las lecturas y consultas tengan una coherencia eventual. (La API también te permite establecer de forma explícita una política de coherencia sólida, pero esta configuración no tendrá efectos prácticos, ya que las consultas que no son principales son siempre de coherencia eventual sin importar la política).

También puedes establecer el plazo de llamada de Datastore, que es el tiempo máximo, en segundos, que la aplicación esperará para que Datastore muestre un resultado antes de abortar con un error. El plazo predeterminado es de 60 segundos. En este momento, no se puede establecer un plazo más largo, pero sí puedes reducirlo a fin de asegurarte de que una operación determinada falle rápido (por ejemplo, para mostrarle una respuesta más rápida al usuario).

Para establecer la política de lectura de Datastore y la fecha límite de la llamada en Python, pásalas como argumentos a los métodos run(), get(), fetch() y count() de las clases Query o GqlQuery. Por ejemplo:

for result in Employee.all().run(limit=5,
                                 read_policy=db.EVENTUAL_CONSISTENCY,
                                 deadline=5):
  # Body of iterative loop

Pasos siguientes