Chaque entité dans Datastore possède une clé qui l'identifie de manière unique. Cette clé comprend les composants suivants :
- L'espace de noms de l'entité, qui permet de définir l'architecture mutualisée.
- Le genre de l'entité, qui permet de classer celle-ci pour les besoins des requêtes Datastore.
- Un chemin d'ancêtre facultatif localisant l'entité dans la hiérarchie Datastore.
Un identifiant associé à l'entité de manière individuelle, qui peut être :
- une chaîne de nom de clé ;
- un ID numérique sous forme d'entier.
Comme il fait partie de la clé de l'entité, l'identifiant est associé de manière permanente à celle-ci et ne peut pas être modifié. Il peut être attribué de deux manières :
- Spécifiez votre propre chaîne de nom de clé pour l'entité.
- Laissez Datastore attribuer automatiquement à l'entité un ID numérique entier.
Spécifier un nom de clé pour une entité
Pour attribuer un nom de clé à une entité, fournissez un argument stringID
non vide à datastore.NewKey
:
Pour que Cloud Datastore attribue un ID numérique automatiquement, employez un argument stringID
vide :
Attribuer des identifiants
Vous pouvez configurer Datastore pour générer des ID automatiques à l'aide de deux règles d'ID automatique différentes :
- La règle
default
génère une séquence aléatoire d'ID inutilisés distribués d'une manière approximativement uniforme. Chaque ID peut comporter jusqu'à 16 chiffres décimaux. - La règle
legacy
crée une séquence d'ID entiers plus petits non consécutifs.
Si vous souhaitez que les ID d'entité soient visibles par l'utilisateur et/ou si vous souhaitez les afficher en fonction de leur ordre, l'allocation manuelle est la meilleure solution.
Utiliser les chemins d'ancêtres
Dans Cloud Datastore, les entités forment un espace structuré de manière hiérarchique, semblable à la structure de répertoires d'un système de fichiers. Lorsque vous créez une entité, vous pouvez éventuellement en désigner une autre comme son parent. La nouvelle entité est alors un enfant de l'entité parente. Contrairement à ce qui se produit dans un système de fichiers, l'entité parente n'a pas besoin d'exister réellement. Une entité sans parent est une entité racine. L'association entre une entité et son parent est permanente, et elle ne peut plus être modifiée une fois l'entité créée. Cloud Datastore n'attribue jamais le même ID numérique à deux entités ayant le même parent ou à deux entités racines (celles sans parent).
Les ancêtres d'une entité correspondent à son parent, au parent de son parent et ainsi de suite, de manière récursive. Ses descendants sont ses enfants, les enfants de ses enfants, etc. Une entité racine et tous ses descendants appartiennent au même groupe d'entités. La séquence d'entités commençant par une entité racine, puis allant du parent à l'enfant et menant à une entité donnée, constitue le chemin d'ancêtre de cette entité. La clé complète identifiant l'entité consiste en une séquence de paires genre/identifiant, qui spécifie son chemin d'ancêtre et se termine par les valeurs de l'entité elle-même :
[Person:GreatGrandpa, Person:Grandpa, Person:Dad, Person:Me]
Pour une entité racine, le chemin d'ancêtre est vide, et la clé est constituée uniquement du genre et de l'identifiant de l'entité :
[Person:GreatGrandpa]
Le schéma suivant illustre ce concept :
Pour désigner le parent d'une entité, utilisez l'argument parent
pour datastore.NewKey
. La valeur de cet argument doit être la clé de l'entité parente. L'exemple suivant crée une entité du genre Address
et désigne comme parent une entité Employee
: