Documentation de référence sur datastore-indexes.xml

App Engine prédéfinit un index simple sur chaque propriété d'une entité. Une application App Engine peut définir d'autres index personnalisés dans un fichier de configuration d'index appelé datastore-indexes.xml. Le serveur de développement peut générer la configuration d'index requise par votre application lorsqu'il exécute ces requêtes pendant que vous testez votre application. Vous pouvez ajuster les index manuellement en modifiant le fichier datastore-indexes.xml avant d'importer l'application. Consultez la section Configurer des index Datastore pour en savoir plus sur le déploiement et la gestion des configurations d'index.

Exemple

Voici un exemple de fichier 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>

Syntaxe

L'élément <datastore-index> peut contenir les éléments suivants :

Élément Description
<kind> Obligatoire. Genre de l'entité pour la requête.
<properties>

Liste des propriétés à inclure sous forme de colonnes de l'index, classée par ordre de tri : les propriétés utilisées dans les filtres d'égalité en premier, puis la propriété utilisée dans les filtres d'inégalité, et enfin les ordres de tri et leurs sens.

Chaque élément de la liste comporte les éléments suivants :

<name>
Nom de datastore de la propriété.
<direction>
L'ordre du tri, soit asc pour l'ordre croissant, soit desc pour l'ordre décroissant. Cet élément n'est obligatoire que pour les propriétés utilisées dans l'ordre de tri de la requête. Il doit correspondre à l'ordre utilisé par la requête. La valeur par défaut est asc.
<ancestor> yes si la requête a une clause ancêtre (). La valeur par défaut est no (non).

Index automatiques et index manuels

La procédure manuelle de définition des index requis par les requêtes de votre application peut se révéler difficile et être source d'erreurs. Toutefois, le serveur de développement peut déterminer la configuration des index à votre place. Pour utiliser la configuration d'index automatique, ajoutez l'attribut autoGenerate="true" dans votre fichier WEB-INF/datastore-indexes.xml pour l'élément <datastore-indexes>. La configuration d'index automatique est également utilisée si l'application ne comporte aucun fichier datastore-indexes.xml.

Lorsque la configuration d'index automatique est activée, le serveur de développement tient à jour un fichier nommé WEB-INF/appengine-generated/datastore-indexes-auto.xml dans le répertoire war/ de votre application. Lorsque l'application, qui s'exécute sur le serveur de développement, tente une requête Datastore pour laquelle il n'existe aucun index correspondant dans datastore-indexes.xml ou datastore-indexes-auto.xml, le serveur ajoute la configuration appropriée à datastore-indexes-auto.xml.

Si la configuration d'index automatique est activée lors du transfert de votre application, appcfg utilise à la fois datastore-indexes.xml et datastore-indexes-auto.xml pour déterminer les index à créer pour l'application en production.

Si autoGenerate="false" figure dans votre fichier datastore-indexes.xml, le serveur de développement et AppCfg ignorent le contenu de datastore-indexes-auto.xml. Si l'application, qui s'exécute localement, envoie une requête dont l'index n'est pas spécifié dans datastore-indexes.xml, le serveur de développement génère une exception, comme le ferait Datastore en production.

Il est recommandé de déplacer temporairement la configuration d'index de datastore-indexes-auto.xml vers datastore-indexes.xml, puis de désactiver la configuration d'index automatique et de tester l'application sur le serveur de développement. Cette procédure permet d'assurer plus facilement la maintenance des index sans avoir à gérer deux fichiers distincts, et de garantir que les tests reproduisent les erreurs causées par une configuration d'index manquante.

Déployer le fichier de configuration d'index

Le fichier datastore-indexes.xml doit se trouver dans le répertoire /WEB-INF/ de votre application du service par défaut.

Pour déployer le fichier de configuration d'index Datastore sans modifier la version actuellement diffusée, utilisez la commande suivante :

appcfg.sh update_indexes <application root path>

Supprimer des index inutilisés

Lorsque vous modifiez ou supprimez un index dans la configuration d'index, l'index d'origine n'est pas automatiquement supprimé d'App Engine. Cela vous donne la possibilité d'utiliser une ancienne version de l'application pendant la création des index ou de revenir immédiatement à l'ancienne version si un problème est détecté dans une version plus récente.

Lorsque vous êtes certain de ne plus avoir besoin des anciens index, vous pouvez les supprimer d'App Engine comme suit :

./appengine-java-sdk/bin/appcfg.sh vacuum_indexes myapp/war
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement standard App Engine pour Java 8