Configura índices de Datastore

App Engine usa índices en Cloud Datastore para cada consulta que realiza tu aplicación. Estos índices se actualizan siempre que se modifica una entidad, de modo que se puedan mostrar resultados rápidamente cuando la aplicación realiza una consulta. Para esto, Cloud Datastore debe saber con antelación qué consultas hará la aplicación. Debes especificar los índices que tu aplicación necesita en un archivo de configuración. El servidor de desarrollo local puede generar automáticamente el archivo de configuración de índices mientras pruebas tu aplicación.

Esta guía proporciona instrucciones para crear tus índices y administrarlos. Si deseas obtener información de referencia, consulta Índices de Datastore.

Crea índices de Datastore

Cada consulta de Cloud Datastore realizada por una aplicación requiere de un índice correspondiente. Los índices para las consultas simples, como las de una sola propiedad, se crean de manera automática. Los índices para consultas complejas se deben definir en un archivo de configuración llamado index.yaml. Este archivo se implementa junto con la aplicación para crear índices en Cloud Datastore.

El siguiente es un ejemplo de un archivo 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

Crea índices mediante el servidor de desarrollador

El servidor web de desarrollador (dev_appserver.py) agrega automáticamente elementos a este archivo cuando la aplicación intenta ejecutar una consulta que necesita un índice que no tiene una entrada adecuada en el archivo de configuración.

Si pruebas todas las consultas que realizará tu aplicación, el servidor de desarrollador generará una lista completa de entradas en el archivo index.yaml.

Cuando el servidor web de desarrollador agrega una definición de índices generada a index.yaml, lo hace debajo de la siguiente línea, que inserta si es necesario:

# AUTOGENERATED

El servidor web de desarrollador considera todas las definiciones de índices debajo de esta línea como automáticas y puede que las actualice a medida que la aplicación realiza consultas.

Crea índices de forma manual

Puedes agregar índices al archivo index.yaml de forma manual o también puedes editar las entradas existentes. En el caso de las consultas controladas de forma manual, debes agregarlas por encima de la línea que tiene el comentario AUTOGENERATED.

Se considera que todas las definiciones de índices ubicadas por encima de esta línea son de control manual, por lo que el servidor web de desarrollador no las actualiza. El servidor de desarrollador solo modifica lo que está por debajo de la línea y solo si en el archivo index.yaml completo no existe un índice que corresponda a una consulta ejecutada por la aplicación. Para controlar una definición de índice automática, colócala por encima de esta línea.

Consulta la referencia de index.yaml para obtener información sobre la sintaxis.

Actualiza índices

Para subir el archivo de configuración index.yaml a Cloud Datastore, usa el comando de gcloud. Si el archivo index.yaml define algún índice que no existe en Cloud Datastore, este se crea.

Puede que Cloud Datastore tarde un tiempo en crear todos los índices y, por lo tanto, estos no estarán disponibles de inmediato para App Engine. Si tu aplicación ya está configurada para recibir tráfico, pueden ocurrir excepciones con las consultas que requieren un índice que aún se encuentra en proceso de creación.

A fin de evitar excepciones, debes dejar que pase suficiente tiempo para que se creen todos los índices. Para obtener más información y ejemplos sobre la creación de índices, consulta cómo implementar una aplicación de Go 1.9.

Para subir tu configuración de índice en Cloud Datastore, ejecuta el siguiente comando desde el directorio donde se encuentra tu index.yaml:

gcloud

gcloud datastore indexes create index.yaml

Para obtener más información, consulta la referencia de gcloud datastore.

appcfg

appcfg.py update_indexes [YOUR_APP_DIRECTORY]

Puedes usar GCP Console para verificar el estado de tus índices.

Borra índices en desuso

Cuando cambias o quitas un índice de index.yaml, el índice original no se borra de forma automática de Cloud Datastore. Esto te permite mantener en ejecución una versión anterior de la aplicación mientras se crean los índices nuevos o volver de inmediato a la versión anterior si surge un problema con una versión nueva.

Cuando estés seguro de que ya no necesitas los índices antiguos que quedan en Cloud Datastore, puedes ejecutar el siguiente comando para borrar cualquier índice que no esté definido en tu archivo index.yaml:

gcloud

gcloud datastore cleanup-indexes index.yaml

Para obtener más información, consulta la referencia de gcloud datastore.

appcfg

appcfg.py vacuum_indexes [YOUR_APP_DIRECTORY]
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Go