Configurer des index Datastore

App Engine emploie des index dans Cloud Datastore pour chaque requête envoyée par votre application. Ces index sont mis à jour chaque fois qu'une entité est modifiée, de sorte que les résultats soient renvoyés rapidement lorsque l'application génère une requête. Pour ce faire, Cloud Datastore doit connaître à l'avance les requêtes générées par l'application. Vous consignez dans un fichier de configuration les index dont l'application a besoin. Le serveur de développement local peut générer automatiquement le fichier de configuration d'index lorsque vous testez l'application.

Ce guide fournit des instructions relatives à la création et à la gestion des index. Pour en savoir plus, consultez la page Index Datastore.

Créer des index Datastore

Chaque requête Cloud Datastore envoyée par une application nécessite un index correspondant. Les index liés à des requêtes simples, telles que celles portant sur une seule propriété, sont créés automatiquement. Les index associés à des requêtes complexes doivent être définis dans un fichier de configuration nommé index.yaml. Ce fichier est déployé en même temps que l'application pour vous permettre de créer des index dans Cloud Datastore.

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

Créer des index à l'aide du serveur de développement

Le serveur Web de développement (dev_appserver.py) ajoute automatiquement des éléments à ce fichier lorsque l'application tente d'exécuter une requête nécessitant un index qui ne possède pas d'entrée appropriée dans le fichier de configuration.

Si vous exécutez chaque requête de votre application sur le serveur de développement, celui-ci génère la liste complète des entrées dans le fichier index.yaml.

Lorsque le serveur Web de développement ajoute une définition d'index générée au fichier index.yaml, il effectue cette opération sous la ligne suivante, en l'insérant si nécessaire :

# AUTOGENERATED

Le serveur Web de développement considère toutes les définitions d'index figurant sous cette ligne comme étant automatiques. Il peut mettre à jour les définitions existantes sous cette ligne lorsque l'application exécute des requêtes.

Créer des index manuellement

Vous pouvez ajouter manuellement des index au fichier index.yaml ou modifier des entrées existantes. Dans le cas de requêtes contrôlées manuellement, vous devez les ajouter au-dessus de la ligne contenant le commentaire AUTOGENERATED.

Toutes les définitions d'index situées au-dessus de cette ligne sont considérées comme étant contrôlées manuellement. Elles ne sont pas mises à jour par le serveur Web de développement. Le serveur de développement n'apportera des modifications qu'aux éléments situés sous la ligne et seulement si le fichier index.yaml complet ne décrit pas un index qui rend compte d'une requête exécutée par l'application. Pour contrôler une définition d'index automatique, placez-la au-dessus de cette ligne.

Pour en savoir plus sur la syntaxe, consultez la documentation de référence sur le fichier index.yaml.

Mettre à jour des index

Importez votre fichier de configuration index.yaml sur Cloud Datastore à l'aide de la commande gcloud. Si le fichier index.yaml définit des index qui n'existent pas dans Cloud Datastore, ces index sont créés.

Cloud Datastore peut mettre un certain temps à créer tous les index. Par conséquent, ces index ne seront pas immédiatement disponibles pour App Engine. Si l'application est déjà configurée pour recevoir du trafic, des exceptions peuvent se produire pour les requêtes nécessitant un index dont la création est toujours en cours.

Pour éviter les exceptions, vous devez prévoir du temps pour la création de tous les index. Pour en savoir plus et pour consulter des exemples de création d'index, consultez la page Déployer une application Python.

Pour importer votre configuration d'index sur Cloud Datastore, exécutez la commande suivante à partir du répertoire contenant le fichier index.yaml :

gcloud

gcloud datastore indexes create index.yaml

Pour en savoir plus, consultez la documentation de référence sur gcloud datastore.

appcfg

appcfg.py update_indexes [YOUR_APP_DIRECTORY]

Vous pouvez vérifier l'état des index à l'aide de la console GCP.

Supprimer des index inutilisés

Lorsque vous modifiez ou supprimez un index dans index.yaml, l'index d'origine n'est pas automatiquement supprimé de Cloud Datastore. 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 restant dans Cloud Datastore, vous pouvez exécuter la commande suivante pour supprimer tout index non défini dans le fichier index.yaml :

gcloud

gcloud datastore cleanup-indexes index.yaml

Pour en savoir plus, consultez la documentation de référence sur gcloud datastore.

appcfg

appcfg.py vacuum_indexes [YOUR_APP_DIRECTORY]
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement standard App Engine pour Python 2