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. Actualmente 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 en Java, crea una configuración del servicio de Datastore (DatastoreServiceConfig) mediante la clase auxiliar anidada DatastoreServiceConfig.Builder y pásale una instancia de la clase ReadPolicy. En el ejemplo siguiente, se muestra cómo configurar la política de lectura, el plazo de llamada o ambos:

double deadline = 5.0;

// Construct a read policy for eventual consistency
ReadPolicy policy = new ReadPolicy(ReadPolicy.Consistency.EVENTUAL);

// Set the read policy
DatastoreServiceConfig eventuallyConsistentConfig =
    DatastoreServiceConfig.Builder.withReadPolicy(policy);

// Set the call deadline
DatastoreServiceConfig deadlineConfig = DatastoreServiceConfig.Builder.withDeadline(deadline);

// Set both the read policy and the call deadline
DatastoreServiceConfig datastoreConfig =
    DatastoreServiceConfig.Builder.withReadPolicy(policy).deadline(deadline);

// Get Datastore service with the given configuration
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(datastoreConfig);

Próximos pasos