Referencia datastore-indexes.xml

App Engine predefine un índice simple en cada propiedad de una entidad. Una aplicación de App Engine puede definir otros índices personalizados en un archivo de configuración de índices llamado datastore-indexes.xml. El servidor de desarrollo puede generar la configuración de índices que necesita tu aplicación cuando realiza estas consultas mientras pruebas tu aplicación. Para ajustar los índices de manera manual, edita el archivo datastore-indexes.xml antes de subir la aplicación. Consulta Configura índices de Datastore para obtener información sobre cómo implementar y administrar la configuración del índice.

Ejemplo

El siguiente es un ejemplo de un archivo datastore-indexes.xml:

<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes
  autoGenerate="true">
    <datastore-index kind="Employee" ancestor="false">
        <property name="lastName" direction="asc" />
        <property name="hireDate" direction="desc" />
    </datastore-index>
    <datastore-index kind="Project" ancestor="false">
        <property name="dueDate" direction="asc" />
        <property name="cost" direction="desc" />
    </datastore-index>
</datastore-indexes>

Sintaxis

El elemento <datastore-index> puede contener los siguientes elementos:

Elemento Descripción
<kind> Obligatorio. El tipo de entidad para la consulta.
<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 del almacén de datos de la propiedad.
<direction>
La dirección de la clasificación, que puede ser asc (orden ascendente) o desc (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 la dirección de la consulta. La opción predeterminada es asc.
<ancestor> yes si la consulta tiene una cláusula principal (). El valor predeterminado es no.

Índices automáticos y manuales

Determinar los índices que requieren las consultas de tu aplicación de manera manual puede ser una tarea tediosa y propensa a errores. Afortunadamente, el servidor de desarrollo puede determinar la configuración de índices por ti. Para usar la configuración automática de índices, agrega el atributo autoGenerate="true" al elemento <datastore-indexes> de tu archivo WEB-INF/datastore-indexes.xml. La configuración automática de índices también se usa si tu app no cuenta con un archivo datastore-indexes.xml.

Con la configuración automática de índices habilitada, el servidor de desarrollo mantiene un archivo llamado WEB-INF/appengine-generated/datastore-indexes-auto.xml en el directorio war/ de tu app. Si, mientras se ejecuta en el servidor de desarrollo, tu aplicación intenta realizar una solicitud al almacén de datos para la cual no hay un índice correspondiente ni en datastore-indexes.xml ni en datastore-indexes-auto.xml, el servidor agrega la configuración adecuada a datastore-indexes-auto.xml.

Si está habilitada la configuración automática de índices cuando subes tu aplicación, el comando appcfg usará tanto datastore-indexes.xml como datastore-indexes-auto.xml para determinar los índices que deben compilarse para la app en producción.

Si autoGenerate="false" está en tu datastore-indexes.xml, el servidor de desarrollo y AppCfg ignorarán el contenido de datastore-indexes-auto.xml. Si la aplicación que se ejecuta de manera local realiza una consulta cuyo índice no está especificado en datastore-indexes.xml, el servidor de desarrollo creará una excepción, tal como lo haría Cloud Datastore en producción.

Es una buena idea mover ocasionalmente la configuración de índice desde datastore-indexes-auto.xml a datastore-indexes.xml, y luego inhabilitar la configuración automática de índices y probar la app en el servidor de desarrollo. Esta estrategia facilita el mantenimiento de los índices sin la necesidad de administrar dos archivos, y garantiza que la prueba reproducirá errores causados por la ausencia de la configuración de índices.

Implementar el archivo de configuración de índices

El archivo datastore-indexes.xml debe encontrarse en el directorio /WEB-INF/ del servicio predeterminado de tu aplicación.

Para implementar el archivo de configuración de índices en el almacén de datos sin alterar la versión actual del servidor, usa el siguiente comando:

appcfg.sh update_indexes <application root path>

Borrar índices en desuso

Cuando cambias o quitas un índice de la configuración de índices, el índice original no se borra de App Engine de manera automática. Esto te permite conservar una versión anterior de la aplicación para que se ejecute mientras los índices nuevos se compilan, o volver inmediatamente a la versión anterior si se descubre un problema en la versión nueva.

Cuando estés seguro de que no volverás a necesitar los índices anteriores, puedes borrarlos de App Engine de la siguiente manera:

./appengine-java-sdk/bin/appcfg.sh vacuum_indexes myapp/war
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Java 8