Configurer les index Datastore avec index.yaml

Vous pouvez tirer parti de Cloud Datastore pour stocker les données d'applications exécutées dans l'environnement flexible. Cloud Datastore utilise des index pour chaque requête effectuée par votre application. Ces index sont mis à jour chaque fois qu'une entité est modifiée pour 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 adressées par l'application. Vous devez spécifier les index dont votre application a besoin dans un fichier de configuration index.yaml. Vous pouvez utiliser l'émulateur Cloud Datastore pour générer le fichier automatiquement lorsque vous testez votre application. Vous avez également la possibilité d'écrire le fichier vous-même. Le fichier index.yaml doit être importé lorsque vous déployez votre application.

À propos du fichier index.yaml

Chaque requête Cloud Datastore effectuée par une application requiert un index correspondant. Les index liés à des requêtes simples, telles que celles qui portent 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 importé 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

La syntaxe utilisée dans index.yaml est au format YAML. Pour en savoir plus sur cette syntaxe, consultez le site Web de YAML.

Définitions des index

index.yaml possède un seul élément de liste nommé indexes. Chaque élément de la liste représente un index lié à l'application.

Un élément d'index peut se composer des éléments suivants :

kind
Genre de l'entité pour la requête. Il s'agit d'un élément obligatoire.
properties

Liste de 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 du datastore de la propriété.
direction
Ordre du tri (asc pour l'ordre croissant ou desc pour l'ordre décroissant). Cet élément est requis uniquement pour les propriétés utilisées dans l'ordre de tri de la requête et il doit correspondre au sens utilisé par la requête. La valeur par défaut est asc.
ancestor

yes si la requête a une clause ascendante (). La valeur par défaut est no.

Créer des fichiers d'index

Vous pouvez créer un fichier d'index manuellement, à l'aide d'un éditeur de texte et en respectant le format de fichier décrit ci-dessus. Une approche plus efficace consiste à générer automatiquement le fichier lorsque vous testez votre application localement. Vous pouvez combiner les deux méthodes.

Lorsque vous testez votre application dans l'environnement local, vous pouvez utiliser la commande d'émulateur gcloud afin de démarrer un service qui émule Cloud Datastore avant d'exécuter votre application.

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

Utilisez l'indicateur --data-dir pour spécifier le répertoire dans lequel le fichier index.yaml généré automatiquement va être placé.

Lorsque vous testez votre application, l'émulateur ajoute une définition d'index généré au fichier index.yaml chaque fois que vous émettez une requête Cloud Datastore. Tous les index générés automatiquement s'affichent dans le fichier sous la ligne suivante :

# AUTOGENERATED

Toutes les définitions d'index situées au-dessus de cette ligne sont considérées comme étant gérées manuellement et ne sont pas mises à jour par le serveur Web de développement. Le serveur Web n'apportera des modifications qu'aux éléments situés sous la ligne. Il ne procédera à cette opération que si le fichier index.yaml complet ne comporte aucune description d'un index représentant 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.

L'émulateur peut mettre à jour les définitions qui figurent sous cette ligne lorsque l'application effectue des requêtes. Si toutes les requêtes que l'application va effectuer sont émises pendant que vous la testez, les entrées générées dans index.yaml sont complètes. Vous devrez peut-être modifier le fichier manuellement pour supprimer les index dont vous n'avez pas besoin en production ou pour définir des index non créés lors des tests.

Déployer le fichier d'index

Avant de déployer votre application, vous devez exécuter la commande gcloud suivante pour déployer le fichier index.yaml :

gcloud app deploy index.yaml
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement flexible App Engine pour les documents Ruby