Como configurar índices do Datastore com index.yaml

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

Sobre o arquivo index.yaml

Todas as consultas ao Datastore realizadas por um aplicativo precisam de um índice correspondente. Os índices de consultas simples, como as referentes a propriedades únicas, são criados automaticamente. Para os índices de consultas complexas, é preciso defini-los em um arquivo de configuração denominado index.yaml. Esse arquivo é enviado juntamente com o aplicativo para criar os índices no Datastore.

A seguir, há 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

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

Um elemento de índice pode ter os seguintes elementos:

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

Uma lista das propriedades que serão incluídas como colunas do índice, na ordem em que serão classificadas: primeiro as propriedades usadas em filtros de igualdade, seguidas de propriedades usadas em filtros de desigualdade e, depois, as ordens de classificação e 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 se a consulta tiver uma cláusula ancestral (Query.Ancestor). O padrão é no.

Como criar arquivos de índices

Você pode criar 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 seu 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á.

À medida que você testar seu app, cada vez que você gerar 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 existentes 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