

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Paso 5: creación de un modelo de datos de DynamoDB
<a name="step5-hierarchical-model"></a>

Defina las claves de partición para la tabla base y los índices secundarios globales (GSIs):
+ Siguiendo las prácticas recomendadas de diseño de claves, `ComponentId` utilícelas como clave de partición para la tabla base en este ejemplo. Debido a que es único, `ComponentId` puede ofrecer granularidad. DynamoDB utiliza el valor hash de la clave de partición para determinar la partición en la que se almacenan los datos de forma física. El ID de componente único genera un valor hash diferente, lo que puede facilitar la distribución de los datos dentro de la tabla. Puede consultar la tabla base mediante una clave de partición de `ComponentId`.
+ Para encontrar los secundarios inmediatos de un componente, cree un GSI donde `ParentId` sea la clave de partición y `ComponentId` sea la clave de clasificación. Puede consultar este GSI mediante `ParentId` como la clave de partición.
+ Para encontrar todos los secundarios recursivos de un componente, cree un GSI donde `GraphId` sea la clave de partición y `Path` sea la clave de clasificación. Puede consultar este GSI mediante `GraphId` como la clave de partición y el operador `BEGINS_WITH(Path, "$path")` en la clave de clasificación.


|  |  |  |  | 
| --- |--- |--- |--- |
|  | **Clave de partición** | **Clave de clasificación** | **Mapeo de atributos** | 
| **Tabla base** | `ComponentId` |  | `ParentId`, `GraphId`, `Path` | 
| **GSI1** | `ParentId` | `ComponentId` |  | 
| **GSI2** | `GraphId` | `Path` | `ComponentId` | 

## Almacenamiento de componentes en la tabla
<a name="store"></a>

El siguiente paso consiste en almacenar cada componente en la tabla base de DynamoDB. Tras insertar todos los componentes del árbol de ejemplo, se obtiene una tabla base como la siguiente tabla base.


|  |  |  |  | 
| --- |--- |--- |--- |
| **ComponentId** | **ParentId** | **GraphId** | **Ruta** | 
|  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 | 

## El GSI1 índice
<a name="gsi1-index"></a>

Para comprobar todos los secundarios inmediatos de un componente, debe crear un índice que utilice `ParentId` como clave de partición y `ComponentId` como clave de clasificación. La siguiente tabla dinámica representa el GSI1 índice. Puede utilizar este índice para recuperar todos los componentes secundarios inmediatos mediante un ID de componente principal. Por ejemplo, puede averiguar cuántas baterías hay disponibles en un automóvil (CM1) o qué celdas hay disponibles en un módulo (CM4).


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

## El GSI2 índice
<a name="gsi2-index"></a>

La siguiente tabla dinámica representa el GSI2 índice. Se configura mediante `GraphId` como clave de partición y `Path` como clave de clasificación. Mediante `GraphI` y la operación `begins_with` en la clave de clasificación (`Path`), puede encontrar el linaje completo de un componente en un árbol.


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