Paso 5: Creación de un modelo de datos de DynamoDB - Recomendaciones de AWS

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 ComponentId como clave de partición para la tabla base de 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 ordenación

Mapeo de atributos

Tabla base

ComponentId

ParentId, GraphId, Path

GSI1

ParentId

ComponentId

GSI2

GraphId

Path

ComponentId

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