Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Étape 6 : Création de requêtes de données
Après avoir défini vos modèles d'accès et conçu votre modèle de données, vous pouvez interroger des données hiérarchiques dans la base de données DynamoDB. Afin de réduire les coûts et de garantir les performances, les exemples suivants utilisent uniquement l'opération de requête sansScan
.
-
Trouvez les ancêtres d'un composant.
Pour trouver les ancêtres (parent, grand-parent, arrière-grand-parent, etc.) du composant CM8, interrogez la table de base à l'aide de
ComponentId = "CM8"
. La requête va renvoyer l'enregistrement suivant.Pour réduire la taille des données de résultat, vous pouvez utiliser une expression de projection pour renvoyer uniquement l'attribut
Path
.ComponentId
ParentId
GraphId
Chemin
CM8
CM4
CM1#1
CM1|CM2|CM4|CM8
Chemin
CM1|CM2|CM4|CM8
Maintenant, divisez le chemin à l'aide du tube (« | ») et prenez les premiers composants N-1 pour obtenir les ancêtres.
Résultat de la requête : les ancêtres de CM8 sont CM1, CM2, CM4.
-
Trouvez les enfants immédiats d'un composant.
Pour obtenir tous les composants secondaires immédiats ou d'un niveau en aval du composant CM2, interrogez GSI1 à l'aide de.
ParentId = "CM2"
La requête va renvoyer l'enregistrement suivant.ParentId
ComponentId
CM2
CM4
CM5
-
Trouvez tous les composants enfants en aval à l'aide d'un composant de niveau supérieur.
Pour obtenir tous les composants enfants ou descendants du composant de niveau supérieur CM1, interrogez GSI2 à l'aide de
GraphId = "CM1#1"
etbegins_with("Path", "CM1|")
, puis utilisez une expression de projection avec.ComponentId
Elle renverra tous les composants liés à cette arborescence.Cet exemple comporte une arborescence unique, avec CM1 comme composant supérieur. En réalité, vous pourriez avoir des millions de composants de niveau supérieur dans la même table.
GraphId
ComponentId
CM1#1
CM2
CM3
CM4
CM5
CM8
CM9
CM10
CM6
CM7
-
Trouvez tous les composants enfants en aval à l'aide d'un composant de niveau intermédiaire.
Pour obtenir tous les composants enfants ou descendants de manière récursive pour le composant CM2, vous avez deux options. Vous pouvez interroger de manière récursive niveau par niveau ou vous pouvez interroger l'index GSI2.
-
Interrogez GSI1, niveau par niveau, de manière récursive, jusqu'à atteindre le dernier niveau des composants enfants.
-
Interrogez GSI1 en utilisant
ParentId = "CM2"
. Cela va renvoyer l'enregistrement suivant.ParentId
ComponentId
CM2
CM4
CM5
-
Encore une fois, interrogez GSI1 en utilisant
ParentId = "CM4"
. Cela va renvoyer l'enregistrement suivant.ParentId
ComponentId
CM4
CM8
CM9
-
Encore une fois, interrogez GSI1 en utilisant
ParentId = "CM5"
. Cela va renvoyer l'enregistrement suivant.Continuez la boucle : interrogez pour chaque
ComponentId
jusqu'à ce que vous atteigniez le dernier niveau. Lorsqu'une requête utilisantParentId = "<ComponentId>"
ne renvoie aucun résultat, le résultat précédent provenait du dernier niveau de l'arborescence.ParentId
ComponentId
CM5
CM10
-
Fusionnez tous les résultats.
résultat= [CM4, CM5] + [CM8, CM9] + [CM10]
= [CM4, CM5, CM8, CM9, CM10]
-
-
Interrogez GSI2, qui stocke une arborescence hiérarchique pour un composant de niveau supérieur (une voiture ou CM1).
-
Tout d'abord, recherchez le composant de niveau supérieur ou l'ancêtre supérieur et
Path
de CM2. Pour cela, interrogez la table de base en utilisantComponentId = "CM2"
pour trouver le chemin de ce composant dans l'arborescence hiérarchique. Sélectionnez les attributsGraphId
etPat
h. La requête va renvoyer l'enregistrement suivant.GraphId
Chemin
CM1#1
CM1|CM2
-
Interrogez GSI2 en utilisant.
GraphId = "CM1#1" AND BEGINS_WITH("Path", "CM1|CM2|")
La requête va renvoyer les résultats suivants.GraphId
Chemin
ComponentId
CM1#1
CM1|CM2|CM4
CM1|CM2|CM5
CM1|CM2|CM4|CM8
CM1|CM2|CM4|CM9
CM1|CM2|CM5|CM10
CM4
CM5
CM8
CM9
CM10
-
Sélectionnez l'attribut
ComponentId
afin de renvoyer tous les composants enfants pour CM2.
-
-