Configuración de índices

Google Cloud Datastore utiliza índices 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. Cloud Datastore proporciona índices integrados de manera automática, pero necesita saber con antelación qué índices compuestos requerirá la aplicación. Por eso, debes especificarlos en un archivo de configuración. El emulador de Cloud Datastore es capaz de generar la configuración de índices automáticamente mientras pruebas tu aplicación. La herramienta de línea de comandos de gcloud proporciona los comandos necesarios para actualizar los índices disponibles en tu instancia de producción de Cloud Datastore.

Requisitos del sistema

Para utilizar la herramienta de gcloud, debes tener instalo el SDK de Google Cloud.

Acerca de index.yaml

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

El emulador de Cloud Datastore agrega elementos a este archivo automáticamente cuando la aplicación intenta ejecutar una consulta que requiere de un índice para el que no existe una entrada apropiada en el archivo de configuración. Puedes editar el archivo para ajustar los índices o crear nuevos de forma manual. El archivo index.yaml está ubicado en la carpeta <project-directory>/WEB-INF/. De manera predeterminada, el directorio de datos que contiene la ruta WEB-INF/appengine-generated/index.yaml es ~/.config/gcloud/emulators/datastore/. Visita el directorio de proyectos del emulador de Cloud Datastore para obtener más información.

El siguiente es un ejemplo de un archivo index.yaml:

indexes:

- kind: Task
  ancestor: no
  properties:
  - name: done
  - name: priority
    direction: desc

- kind: Task
  properties:
  - name: collaborators
    direction: asc
  - name: created
    direction: desc

- kind: TaskList
  ancestor: yes
  properties:
  - name: percent_complete
    direction: asc
  - name: type
    direction: asc

La sintaxis de index.yaml es el formato YAML. Para obtener más información sobre este formato, visita el sitio web de YAML.

Definiciones de índices

El archivo index.yaml contiene un solo elemento de lista llamado indexes. Cada elemento de la lista representa un índice de la aplicación.

Un índice puede tener los siguientes elementos:

kind
El tipo de entidad de la consulta. Este elemento es obligatorio.
properties

Una lista de las propiedades que deben incluirse como columnas del índice, en el orden de clasificación deseado: primero, las propiedades de los filtros de igualdad; luego, las propiedades de los filtros de desigualdad; por último, los órdenes de clasificación y sus sentidos.

Cada elemento de la lista se compone de los siguientes elementos:

name
El nombre de la propiedad en Cloud Datastore.
direction
El sentido en que se ordena: puede ser asc para el orden ascendente o desc para el orden descendente. Esto solo es necesario para las propiedades que se usan en los órdenes de clasificación de la solicitud y debe coincidir con el sentido que esta use. La opción predeterminada es asc.
ancestor

Tiene el valor yes si la consulta tiene una cláusula principal. La opción predeterminada es no.

Índices automáticos y manuales

Cuando el emulador de Cloud Datastore agrega las definiciones de índices generadas a index.yaml, lo hace debajo de la siguiente línea, que inserta si es necesario:

# AUTOGENERATED

El emulador considera a 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.

Se considera que todas las definiciones de índices ubicadas por encima de esta línea son de control manual, por lo que el emulador no las actualiza. El emulador 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 tomar control sobre una definición de índice automática, colócala por encima de esta línea.

Actualización de índices

El comando datastore indexes create busca tu configuración de índices de Datastore local (el archivo index.yaml) y crea un índice nuevo si encuentra alguno que aún no existe en tu instancia de producción de Cloud Datastore. Para ver un ejemplo de cómo usar indexes create, visita el flujo de trabajo de desarrollo con la herramienta de gcloud.

La creación del índice nuevo puede tardar un tiempo que depende de la cantidad de datos existentes en Cloud Datastore que deba incluirse en él. Si la aplicación realiza una consulta que requiere de un índice que aún no se terminó de crear, la consulta arrojará una excepción. Para evitar que esto ocurra, debes tener cuidado cuando implementes una versión de tu aplicación que requiera de un índice nuevo antes de que este termine de crearse.

Puedes verificar el estado de los índices de la instancia de Cloud Datastore en la página Índices de GCP Console.

Cómo borrar índices sin utilizar

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

Cuando estés seguro de que ya no necesitas los índices anteriores, puedes borrarlos de Cloud Datastore mediante el comando datastore indexes cleanup. Este comando borra todos los índices de la instancia de producción de Cloud Datastore que no figuren en la versión local de index.yaml. Para ver un ejemplo de cómo utilizar indexes cleanup, visita el flujo de trabajo de desarrollo con la herramienta gcloud.

Argumentos de la línea de comandos

Si deseas obtener más información sobre los argumentos de la línea de comandos que se usan para crear o limpiar índices, visita datastore indexes create y datastore indexes cleanup, respectivamente. Para obtener más información sobre los argumentos de la línea de comandos de la herramienta gcloud, visita la referencia de la herramienta gcloud.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud Datastore