Paso 5: Creación de un modelo de datos de DynamoDB
Defina las claves de partición para la tabla base y los índices secundarios globales (GSI):
-
Siguiendo las prácticas recomendadas de diseño clave, utilice
ComponentIdcomo clave de partición para la tabla base de este ejemplo. Debido a que es único,ComponentIdpuede 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 deComponentId. -
Para encontrar los secundarios inmediatos de un componente, cree un GSI donde
ParentIdsea la clave de partición yComponentIdsea la clave de clasificación. Puede consultar este GSI medianteParentIdcomo la clave de partición. -
Para encontrar todos los secundarios recursivos de un componente, cree un GSI donde
GraphIdsea la clave de partición yPathsea la clave de clasificación. Puede consultar este GSI medianteGraphIdcomo la clave de partición y el operadorBEGINS_WITH(Path, "$path")en la clave de clasificación.
Clave de partición |
Clave de ordenación |
Mapeo de atributos |
|
Tabla base |
|
|
|
GSI1 |
|
|
|
GSI2 |
|
|
|
Almacenamiento de componentes en la tabla
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#1 |
CM1 |
|
CM2 |
CM1 |
CM1#1 |
CM1|CM2 |
CM3 |
CM1 |
CM1#1 |
CM1|CM3 |
CM4 |
CM2 |
CM1#1 |
CM1|CM2|CM4 |
CM5 |
CM2 |
CM1#1 |
CM1|CM2|CM5 |
CM6 |
CM3 |
CM1#1 |
CM1|CM3|CM6 |
CM7 |
CM3 |
CM1#1 |
CM1|CM3|CM7 |
CM8 |
CM4 |
CM1#1 |
CM1|CM2|CM4|CM8 |
CM9 |
CM4 |
CM1#1 |
CM1|CM2|CM4|CM9 |
CM10 |
CM5 |
CM1#1 |
CM1|CM2|CM5|CM10 |
El índice GSI1
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. En la siguiente tabla dinámica, se representa el índice GSI1. 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 se encuentran disponibles en un módulo (CM4).
ParentId |
ComponentId |
CM1 |
CM2 CM3 |
CM2 |
CM4 CM5 |
CM3 |
CM6 CM7 |
CM4 |
CM8 CM9 |
CM5 |
CM10 |
El índice GSI2
En la siguiente tabla dinámica, se representa el índice GSI2. 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#1 |
CM1 CM1|CM2 CM1|CM3 CM1|CM2|CM4 CM1|CM2|CM5 CM1|CM2|CM4|CM8 CM1|CM2|CM4|CM9 CM1|CM2|CM5|CM10 CM1|CM3|CM6 CM1|CM3|CM7 |
CM1 CM2 CM3 CM4 CM5 CM8 CM9 CM10 CM6 CM7 |