O Python 2 não é mais compatível com a comunidade. Recomendamos que você migre aplicativos do Python 2 para o Python 3.

Configurar índices do Datastore

No Datastore, o App Engine usa índices para cada consulta realizada pelo aplicativo. Esses índices são atualizados sempre que uma entidade sofre alterações, para maior rapidez no retorno dos resultados durante uma consulta pelo aplicativo. Para isso, o Datastore precisa saber, com antecedência, quais consultas o aplicativo realizará. Especifique os índices necessários para o aplicativo em um arquivo de configuração. Esse arquivo de índice é gerado automaticamente pelo servidor de desenvolvimento local à medida que o aplicativo é testado.

Neste guia, você recebe instruções sobre como criar e gerenciar os índices. Para mais informações de referência, consulte Índices do armazenamento de dados.

Como criar índices do armazenamento de dados

Todas as consultas ao Datastore realizadas por um aplicativo precisam de um índice correspondente. Os índices de consultas simples, como os de propriedade única, são criados automaticamente. Já os índices para consultas complexas precisam ser definidos em um arquivo de configuração chamado index.yaml. Esse arquivo é implantado com o aplicativo para criar os índices no Datastore.

Veja abaixo 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

Como criar índices usando o servidor de desenvolvimento

O servidor da Web de desenvolvimento dev_appserver.py adiciona itens automaticamente a este arquivo quando o aplicativo tenta executar uma consulta que precisa de um índice que não tem uma entrada apropriada no arquivo de configuração.

No servidor de desenvolvimento, se você executar todas as consultas que seu aplicativo fará, o servidor de desenvolvimento gerará uma lista completa de entradas no arquivo index.yaml.

Ao adicionar uma definição de índice gerada ao arquivo index.yaml, o servidor da web para desenvolvimento a insere, se necessário, abaixo da linha mostrada a seguir:

# AUTOGENERATED

O servidor da Web de desenvolvimento considera automáticas todas as definições de índice abaixo desta linha e atualiza as definições existentes abaixo dela, já que o aplicativo realiza consultas.

Como criar índices manualmente

Você pode adicionar índices manualmente ao arquivo index.yaml ou editar as entradas existentes. Para consultas controladas manualmente, é preciso adicioná-las acima da linha que é comentada com AUTOGENERATED.

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

Consulte a referência de index.yaml para informações de sintaxe.

Como atualizar índices

Você faz o upload do arquivo de configuração index.yaml para o Datastore com o comando gcloud. Se o arquivo index.yaml definir qualquer índice que não exista no Datastore, esses novos índices serão criados.

Levará algum tempo até que o Datastore crie todos os índices. Portanto, eles não estarão imediatamente disponíveis no App Engine. No aplicativo já configurado para receber tráfego, ocorrem exceções para consultas que exigem um índice ainda em processo de criação.

Para evitar essas exceções, é preciso dar um tempo para que todos os índices sejam criados. Para mais informações e exemplos sobre como criar índices, consulte Como implantar um aplicativo do Python.

Para fazer upload da configuração do índice para o Datastore, execute o seguinte comando no diretório em que o index.yaml está localizado:

gcloud

gcloud datastore indexes create index.yaml

Para mais informações, consulte a referência de gcloud datastore.

appcfg

appcfg.py update_indexes [YOUR_APP_DIRECTORY]

Você pode usar o Console do Cloud para verificar o status de seus índices.

Excluir índices inutilizados

Quando você altera ou remove um índice de index.yaml, o índice original não é excluído automaticamente do Datastore. Assim, você pode deixar uma versão antiga do aplicativo em execução enquanto novos índices são criados ou pode reverter para a versão antiga imediatamente se for descoberto um problema com a nova versão.

Quando você tiver certeza de que os índices antigos restantes no Datastore não são mais necessários, execute o seguinte comando para excluir qualquer índice que não esteja definido no arquivo index.yaml:

gcloud

gcloud datastore cleanup-indexes index.yaml

Para mais informações, consulte a referência de gcloud datastore.

appcfg

appcfg.py vacuum_indexes [YOUR_APP_DIRECTORY]