Google Code disponible en: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
El almacén de datos de App Engine utiliza índices para cada consulta que realiza tu aplicación. Estos índices se actualizan cada vez que una entidad cambia, de modo que los resultados se pueden devolver rápidamente cuando la aplicación realiza una consulta. Para ello, el almacén de datos necesita conocer por adelantado las consultas que va a realizar la aplicación. Puedes especificar cuáles son los índices que tu aplicación necesita en un archivo de configuración. El servidor de desarrollo puede generar la configuración de índices del almacén de datos automáticamente mientras pruebas tu aplicación.
Tendrás que especificar la configuración de los índices del almacén de datos en un archivo llamado datastore-indexes.xml, situado en el directorio WEB-INF/ del WAR de tu aplicación. Se trata de un archivo XML cuyo elemento raíz es <datastore-indexes>. Contiene cero o varios elementos <datastore-index>, uno para cada índice que App Engine debe mantener.
Tal como se describe en la sección Consultas e índices, un índice es una tabla de valores para un conjunto de propiedades concretas para entidades de un tipo concreto. Cada columna de valores de propiedad se ordenaf tanto en orden ascendente como descendente. La configuración de un índice especifica el tipo de entidad, los nombres de las propiedades y su orden de clasificación.
A continuación, se muestra un ejemplo en el que se especifican dos índices:
<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes
xmlns="http://appengine.google.com/ns/datastore-indexes/1.0"
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" />
</datastore-index>
</datastore-indexes>
El elemento <datastore-indexes> tiene un atributo autoGenerate que controla si el archivo se debe considerar junto con la configuración de índice generada automáticamente. Consulta la sección Uso de la configuración de índice automática, a continuación.
Cada elemento <datastore-index> representa un índice. El atributo kind especifica el tipo de entidades que se van a indexar. El atributo ancestor es true si el índice admite una consulta que filtre entidades por elemento principal del grupo de entidades y es false en caso contrario.
Los elementos <property> de <datastore-index> representan las propiedades de entidad que se van a indexar. El atributo name es el nombre de propiedad y, el atributo direction es el orden de clasificación, asc para ascendente y desc para descendente. El orden de los elementos de propiedad especifica el orden en el índice: las filas se clasifican por la primera propiedad, a continuación, por la segunda propiedad, y así sucesivamente.
La determinación manual de los índices que requieren las consultas de tu aplicación puede resultar pesado y propenso a errores. Por suerte, el servidor de desarrollo puede determinar la configuración de índice por ti. Para utilizar la configuración de índice automática, añade el atributo autoGenerate="true" al elemento <datastore-indexes> de tu archivo datastore-indexes.xml. La configuración de índice automática también se utiliza si tu aplicación no dispone de un archivo datastore-indexes.xml.
Con la configuración de índice automática habilitada, el servidor de desarrollo mantiene un archivo llamado datastore-indexes-auto.xml en el directorio WEB-INF/appengine-generated/ del WAR de tu aplicación. Cuando tu aplicación que se está ejecutando en el servidor de desarrollo realiza una consulta del almacén de datos para la que no existe un índice correspondiente en datastore-indexes.xml ni en datastore-indexes-auto.xml, el servidor añade la configuración adecuada a datastore-indexes-auto.xml.
Si la configuración de índice automática está habilitada cuando subas tu aplicación, AppCfg utilizará tanto datastore-indexes.xml como datastore-indexes-auto.xml para determinar los índices que se tienen que crear en tu aplicación en App Engine.
Si autoGenerate="false" se encuentra en tu archivo datastore-indexes.xml, el servidor de desarrollo y AppCfg ignorarán el contenido de datastore-indexes-auto.xml. Si la aplicación que se está ejecutando en el servidor de desarrollo realiza una consulta cuyo índice no se ha especificado en datastore-indexes.xml, el servidor de desarrollo mostrará una excepción, al igual que App Engine.
Es una buena idea mover ocasionalmente la configuración de índice de datastore-indexes-auto.xml a datastore-indexes.xmly, a continuación, inhabilitar la configuración de índice automática y probar tu aplicación en el servidor de desarrollo. Esto facilita el mantenimiento de índices sin necesidad de administrar dos archivos y garantiza que tu realización de pruebas reproducirá errores causados por la ausencia de configuración de índice.