Cómo configurar índices de Datastore con index.yaml

Puedes usar Cloud Datastore para almacenar los datos de las aplicaciones que se ejecutan en el entorno flexible. 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 con rapidez cuando la app realiza una consulta. Para esto, Cloud Datastore debe saber con antelación qué consultas hará la aplicación. Debes especificar qué índices necesita la app en un archivo de configuración index.yaml. Puedes utilizar el emulador de Cloud Datastore para crear el archivo de forma automática mientras pruebas la app o puedes escribir el archivo tú mismo. El archivo index.yaml debe subirse cuando implementes la app.

Acerca de index.yaml

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

A continuación, se muestra 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

La sintaxis de index.yaml es el formato YAML. Visita el sitio web de YAML para obtener más información sobre esta sintaxis.

Definiciones de índices

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

Un índice puede tener los elementos siguientes:

kind
La categoría de entidad de la consulta. Generalmente, este es el nombre de la clase de Modelo que define el modelo para las entidades. Se requiere este elemento.
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; y por último, los órdenes de clasificación y sus sentidos.

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

name
El nombre del almacén de datos de la propiedad.
direction
El sentido en que se realiza la clasificación, ya sea asc (ascendente) o desc (descendente). Esto solo es obligatorio en las propiedades que se utilizan en los órdenes de clasificación de la consulta y debe coincidir con el sentido que utiliza la consulta. La configuración predeterminada es asc.
ancestor

yes si la consulta tiene una cláusula principal (ya sea Query.ancestor() o una cláusula GQL ANCESTOR IS). La configuración predeterminada es no.

Crea archivos de índice

Puedes crear un archivo de índice de forma manual mediante un editor de texto con el diseño de archivo descrito con anterioridad. Un enfoque más eficiente es la generación automática del archivo mientras pruebas la app a nivel local. Puedes combinar los dos métodos.

Cuando realices las pruebas en tu entorno local, puedes utilizar el comando de emulador de gcloud para iniciar un servicio que emule Cloud Datastore antes de ejecutar la app:

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

Utiliza la marca --data-dir para especificar el directorio en el que aparecerá el archivo index.yaml generado automáticamente.

Cada vez que pruebas la app y generas una consulta de Cloud Datastore, el emulador agrega una definición de índice generada a index.yaml. Todos los índices generados de forma automática aparecerán en el archivo, debajo de la siguiente línea:

# 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 web solo hará cambios por debajo de la línea y lo hará siempre que el archivo index.yaml completo no describa un índice que corresponda a una consulta que haya ejecutado la aplicación. Para controlar una definición de índice automática, colócala por encima de esta línea.

El emulador puede actualizar las definiciones existentes que estén por debajo de esta línea mientras la aplicación realiza consultas. Si la app genera cada consulta que luego realizará mientras realizas pruebas con ella, se completarán las entradas generadas en index.yaml. Es posible que necesites editar el archivo de forma manual para borrar los índices que no se utilizan en la producción o definir los índices que no se crearon mientras se realizaban las pruebas.

Implementa el archivo de índice

Antes de implementar la aplicación, debes utilizar el siguiente comando de gcloud para implementar el archivo index.yaml:

gcloud app deploy index.yaml
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación del entorno de App Engine Flexible para Python