Níveis de consistência dos dados
As consultas da Datastore podem fornecer os respetivos resultados em qualquer um dos dois níveis de consistência:
- As consultas Fortemente consistentes garantem os resultados mais recentes, mas podem demorar mais tempo a serem concluídas.
- As consultas eventualmente consistentes são geralmente executadas mais rapidamente, mas podem, ocasionalmente, devolver resultados desatualizados.
Numa consulta eventualmente consistente, os índices usados para recolher os resultados também são acedidos com consistência eventual. Consequentemente, essas consultas podem, por vezes, devolver entidades que já não correspondem aos critérios de consulta originais, enquanto as consultas fortemente consistentes são sempre consistentes do ponto de vista transacional.
Consistência de dados de consulta do armazenamento de dados
As consultas devolvem os respetivos resultados com diferentes níveis de garantia de consistência, consoante a natureza da consulta:
- As consultas de antepassados (as que estão num grupo de entidades) são fortemente consistentes por predefinição, mas podem ser tornadas eventualmente consistentes definindo a política de leitura do Datastore (veja abaixo).
- As consultas não descendentes são sempre eventualmente consistentes.
A obtenção de uma entidade por chave, também denominada "pesquisa por chave", é fortemente consistente.
Definir a política de leitura do Datastore
Para melhorar o desempenho, pode definir a política de leitura do Datastore para que todas as leituras e consultas sejam eventualmente consistentes. (A API também permite definir explicitamente uma política de consistência forte, mas esta definição não tem efeito prático, uma vez que as consultas não descendentes são sempre eventualmente consistentes, independentemente da política.)
Também pode definir o prazo de chamada do Datastore, que é o tempo máximo, em segundos, que a aplicação aguarda que o Datastore devolva um resultado antes de terminar com um erro. O prazo predefinido é de 60 segundos. Atualmente, não é possível defini-lo como superior, mas pode ajustá-lo para baixo para garantir que uma determinada operação falha rapidamente (por exemplo, para devolver uma resposta mais rápida ao utilizador). Para definir a política de leitura do Datastore em Java, cria uma configuração do serviço Datastore (DatastoreServiceConfig
) através da classe auxiliar aninhada DatastoreServiceConfig.Builder
e transmite-lhe uma instância da classe ReadPolicy
. O exemplo seguinte mostra como definir a política de leitura, o prazo de chamada ou ambos:
O que se segue?
- Saiba como especificar o que uma consulta devolve e controlar ainda mais os resultados da consulta.
- Conheça as restrições comuns para consultas no Datastore.
- Saiba mais sobre os cursores de consulta, que permitem a uma aplicação obter os resultados de uma consulta em lotes convenientes.
- Saiba mais sobre a sintaxe e a estrutura básicas das consultas para o Datastore.