

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 5 : Création d'un modèle de données DynamoDB
<a name="step5-hierarchical-model"></a>

Définissez les clés de partition pour votre table de base et vos index secondaires globaux (GSIs) :
+ Conformément aux meilleures pratiques de conception des clés, `ComponentId` utilisez-la comme clé de partition pour la table de base dans cet exemple. Parce qu'il est unique, il `ComponentId` peut offrir une granularité. DynamoDB utilise la valeur de hachage de votre clé de partition pour déterminer la partition dans laquelle les données sont stockées physiquement. L'ID de composant unique génère une valeur de hachage différente, ce qui peut faciliter la distribution des données dans la table. Vous pouvez interroger la table de base à l'aide d'une clé de `ComponentId` partition.
+ Pour trouver les enfants immédiats d'un composant, créez un GSI où se `ParentId` trouve la clé de partition et `ComponentId` la clé de tri. Vous pouvez interroger ce GSI en l'utilisant `ParentId` comme clé de partition.
+ Pour trouver tous les enfants récursifs d'un composant, créez un GSI où `GraphId` est la clé de partition et `Path` est la clé de tri. Vous pouvez interroger ce GSI en utilisant `GraphId` comme clé de partition et l'opérateur `BEGINS_WITH(Path, "$path")` sur la clé de tri.


|  |  |  |  | 
| --- |--- |--- |--- |
|  | **Clé de partition** | **Clé de tri** | **Attributs de mappage** | 
| **Table de base** | `ComponentId` |  | `ParentId`, `GraphId`, `Path` | 
| **GSI1** | `ParentId` | `ComponentId` |  | 
| **GSI2** | `GraphId` | `Path` | `ComponentId` | 

## Stockage des composants dans la table
<a name="store"></a>

L'étape suivante consiste à créer chaque composant sur la table de base DynamoDB. Après avoir inséré tous les composants de l'arbre d'exemple, vous obtenez le tableau de base suivant.


|  |  |  |  | 
| --- |--- |--- |--- |
| **ComponentId** | **ParentId** | **GraphId** | **Chemin** | 
|  CM1 |  |  CM1\$11 |  CM1 | 
|  CM2 |  CM1 |  CM1\$11 |  CM1\$1CM2 | 
|  CM3 |  CM1 |  CM1\$11 |  CM1\$1CM3 | 
|  CM4 |  CM2 |  CM1\$11 |  CM1\$1CM2\$1CM4 | 
|  CM5 |  CM2 |  CM1\$11 |  CM1\$1CM2\$1CM5 | 
|  CM6 |  CM3 |  CM1\$11 |  CM1\$1CM3\$1CM6 | 
|  CM7 |  CM3 |  CM1\$11 |  CM1\$1CM3\$1CM7 | 
|  CM8 |  CM4 |  CM1\$11 |  CM1\$1CM2\$1CM4\$1CM8 | 
|  CM9 |  CM4 |  CM1\$11 |  CM1\$1CM2\$1CM4\$1CM9 | 
|  CM10 |  CM5 |  CM1\$11 |  CM1\$1CM2\$1CM5\$1CM10 | 

## L' GSI1 indice
<a name="gsi1-index"></a>

Pour vérifier tous les enfants immédiats d'un composant, vous créez un index utilisé `ParentId` comme clé de partition et `ComponentId` comme clé de tri. Le tableau croisé dynamique suivant représente l' GSI1 indice. Vous pouvez utiliser cet index pour récupérer tous les composants enfants immédiats à l'aide d'un ID de composant parent. Par exemple, vous pouvez savoir combien de batteries sont disponibles dans une voiture (CM1) ou quelles cellules sont disponibles dans un module (CM4).


|  |  | 
| --- |--- |
| **ParentId** | **ComponentId** | 
| CM1 | CM2CM3 | 
| CM2 | CM4CM5 | 
| CM3 | CM6CM7 | 
| CM4 | CM8CM9 | 
| CM5 | CM10 | 

## L' GSI2 indice
<a name="gsi2-index"></a>

Le tableau croisé dynamique suivant représente l' GSI2 indice. Il est configuré à l'aide de `GraphId` en tant que clé de partition et `Path` comme clé de tri. À l'aide de `GraphI` d et de l'`begins_with`opération sur la touche de tri (`Path`), vous pouvez trouver la lignée complète d'un composant dans une arborescence.


|  |  |  | 
| --- |--- |--- |
| **GraphId** | **Chemin** | **ComponentId** | 
| CM1\$11 | CM1CM1\$1CM2CM1\$1CM3CM1\$1CM2\$1CM4CM1\$1CM2\$1CM5CM1\$1CM2\$1CM4\$1CM8CM1\$1CM2\$1CM4\$1CM9CM1\$1CM2\$1CM5\$1CM10CM1\$1CM3\$1CM6CM1\$1CM3\$1CM7 | CM1CM2CM3CM4CM5CM8CM9CM10CM6CM7 | 