Consistência de dados em consultas do Cloud Datastore

Níveis de consistência de dados

As consultas do Cloud Datastore podem entregar resultados em dois níveis de consistência:

  • Consultas com consistência forte garantem os resultados mais recentes, mas podem levar mais tempo para serem concluídas.
  • Consultas com consistência eventual normalmente são mais rápidas, mas podem retornar resultados desatualizados.

Em uma consulta com consistência eventual, os índices usados para coletar os resultados também são acessados com esse tipo de consistência. Consequentemente, essas consultas podem, algumas vezes, retornar entidades que não correspondem mais aos critérios de consulta originais, e as consultas fortemente consistentes são sempre consistentes de maneira transacional. Consulte o artigo Isolamento de transações no App Engine para mais informações sobre como as entidades e os índices são atualizados.

Consistência de dados da consulta do Cloud Datastore

As consultas retornam resultados com diferentes níveis de garantia de consistência, dependendo da natureza da consulta:

  • As consultas de ancestral ficam dentro de um grupo de entidades e têm consistência forte por padrão, mas é possível atribuir uma consistência eventual a elas. Para isso, basta definir a política de leitura do Cloud Datastore conforme descrito abaixo.
  • As consultas de não ancestral sempre têm consistência eventual.

A busca de uma entidade por chave, também chamada de "pesquisa por chave", tem consistência forte.

Como definir a política de leitura do Cloud Datastore

Para melhorar o desempenho, é possível definir a política de leitura do Cloud Datastore para que todas as leituras e as consultas tenham consistência eventual. A API também permite definir explicitamente uma política de consistência forte, mas essa configuração não terá efeito prático, porque as consultas de não ancestral sempre têm consistência eventual, independentemente da política.

Também é possível definir o prazo de chamada do Cloud Datastore, que é o tempo máximo, em segundos, que o aplicativo aguardará o Cloud Datastore retornar um resultado antes de ser cancelado com um erro. O prazo padrão é de 60 segundos. No momento, não é possível aumentá-lo, apenas diminuí-lo para garantir que uma determinada operação falhe rapidamente, por exemplo, para retornar uma resposta mais rápida ao usuário.

Para definir a política de leitura do Cloud Datastore e a duração máxima da chamada no Python, transmita-os como argumentos para os métodos run(), get(), fetch() e count() da classe Query ou GqlQuery. Por exemplo:

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

Próximas etapas

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente padrão do App Engine para Python 2