Como configurar índices do Datastore com index.yaml

Use o Cloud Datastore para armazenar os dados dos seus aplicativos executados no ambiente flexível. O Cloud Datastore usa índices para todas as consultas feitas pelo seu aplicativo. Esses índices são atualizados sempre que uma entidade sofre alterações para que os resultados sejam retornados com rapidez quando o aplicativo fizer uma consulta. Para isso, o Cloud Datastore precisa saber com antecedência quais consultas o aplicativo realizará. Especifique os índices que seu app precisa em um arquivo de configuração index.yaml. É possível usar o emulador do Cloud Datastore para gerar o arquivo automaticamente durante a fase de testes do aplicativo. Se preferir, você mesmo pode gravar o arquivo. É necessário fazer o upload do arquivo index.yaml no momento da implantação do app.

Sobre o arquivo index.yaml

Cada consulta ao Cloud Datastore realizada por um aplicativo precisa de um índice correspondente. Os índices de consultas simples, como os de propriedade única, são criados automaticamente. Os índices de consultas complexas precisam ser definidos em um arquivo de configuração denominado index.yaml. Esse arquivo é transferido com o aplicativo para criar índices no Cloud Datastore.

Este é um exemplo de arquivo index.yaml:

indexes:

- kind: Cat
  ancestor: no
  properties:
  - name: name
  - name: age
    direction: desc

- kind: Cat
  properties:
  - name: name
    direction: asc
  - name: whiskers
    direction: desc

- kind: Store
  ancestor: yes
  properties:
  - name: business
    direction: asc
  - name: owner
    direction: asc

A sintaxe de index.yaml é o formato YAML. Para saber mais sobre ela, consulte o site do YAML.

Definições de índice

index.yaml tem um único elemento de lista chamado indexes. Cada elemento de lista representa um índice do aplicativo.

Um elemento de índice pode ter os seguintes elementos:

kind
O tipo da entidade da consulta. Ele precisa ser o argumento kind fornecido ao datastore.NewKey durante a criação da entidade. Esse elemento é obrigatório.
properties

Uma lista das propriedades a serem incluídas como colunas do índice, na ordem em que serão classificadas: propriedades usadas em filtros de igualdade primeiro, seguidas de propriedades usadas em filtros de desigualdade, e por fim as ordens de classificação e suas direções.

Cada elemento dessa lista tem os seguintes elementos:

name
O nome da propriedade no Datastore.
direction
A direção da classificação, asc para crescente ou desc para decrescente. Isso só é necessário para propriedades usadas nas ordens de classificação da consulta e precisa corresponder à direção usada pela consulta. O padrão é asc.
ancestor

yes quando a consulta tem uma cláusula ancestral (Query.Ancestor). O padrão é no.

Como criar arquivos de índices

Crie um arquivo de índices manualmente. Para isso, basta usar um editor de texto e seguir o layout do arquivo descrito acima. No entanto, a abordagem mais eficiente é gerar o arquivo automaticamente enquanto você estiver testando localmente o app. Você também pode combinar os dois métodos.

Durante a fase de testes no seu ambiente local, use o comando emulador gcloud para iniciar um serviço que emula o Cloud Datastore antes de executar o app:

gcloud beta emulators datastore start --data-dir DATA-DIR

Use o sinalizador --data-dir para especificar o diretório em que o arquivo index.yaml gerado automaticamente aparecerá.

Durante o teste do seu app, cada vez que você criar uma consulta ao Datastore, o emulador adicionará uma definição de índice gerada em index.yaml. Todos os índices gerados automaticamente aparecerão nesse arquivo abaixo da linha:

# AUTOGENERATED

Todas as definições de índice acima dessa linha são consideradas sob controle manual e não são atualizadas servidor da Web de desenvolvimento. O servidor da Web efetuará alterações somente abaixo da linha, e apenas se o arquivo index.yaml completo não descrever um índice que se refira a uma consulta executada pelo aplicativo. Para assumir o controle de uma definição de índice automática, mova-a para acima dessa linha.

O emulador pode atualizar as definições abaixo dessa linha, à medida que o aplicativo faz consultas. Se o app gerar todas as consultas que fará durante a fase de testes, as entradas geradas no index.yaml serão completas. Talvez seja necessário editar o arquivo manualmente para excluir os índices que não são usados na produção ou para definir índices que não foram criados durante os testes.

Como implantar o arquivo de índices

Antes de implantar o aplicativo, use o comando gcloud para implantar o arquivo index.yaml:

gcloud app deploy index.yaml
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente flexível do App Engine para Go