

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Etapa 5: Criar um modelo de dados do DynamoDB
<a name="step5-hierarchical-model"></a>

Defina as chaves de partição para sua tabela base e índices secundários globais (GSIs):
+ Seguindo as melhores práticas de design de chaves, use `ComponentId` como chave de partição para a tabela base neste exemplo. Por ser único, `ComponentId` pode oferecer granularidade. O DynamoDB usa o valor de hash da sua chave de partição para determinar a partição em que os dados são armazenados fisicamente. O ID exclusivo do componente gera um valor de hash diferente, o que pode facilitar a distribuição dos dados dentro da tabela. É possível consultar a tabela base usando uma chave de partição `ComponentId`.
+ Para encontrar filhos imediatos de um componente, crie um GSI em que `ParentId` é a chave de partição e `ComponentId` é a chave de classificação. É possível consultar esse GSI usando `ParentId` como a chave de partição.
+ Para todos os filhos recursivos de um componente, crie um GSI em que `GraphId` é a chave de partição, e `Path` é a chave de classificação. É possível consultar esse GSI usando `GraphId` como a chave de partição e o operador `BEGINS_WITH(Path, "$path")` na chave de classificação.


|  |  |  |  | 
| --- |--- |--- |--- |
|  | **Chave de partição** | **Chave de classificação** | **Atributos de mapeamento** | 
| **Tabela base** | `ComponentId` |  | `ParentId`, `GraphId`, `Path` | 
| **GSI1** | `ParentId` | `ComponentId` |  | 
| **GSI2** | `GraphId` | `Path` | `ComponentId` | 

## Armazenar componentes na tabela
<a name="store"></a>

A próxima etapa é armazenar cada componente na tabela base do DynamoDB. Depois de inserir todos os componentes da árvore de exemplo, você obtém a seguinte tabela base.


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

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

Para verificar todos os filhos imediatos de um componente, crie um índice usando `ParentId` como chave de partição e `ComponentId` como chave de classificação. A tabela dinâmica a seguir representa o GSI1 índice. Esse índice pode ser usado para recuperar todos os componentes filhos imediatos por meio de um ID de componente pai. Por exemplo, você pode descobrir quantas baterias estão disponíveis em um carro (CM1) ou quais células estão disponíveis em um módulo (CM4).


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

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

A tabela dinâmica a seguir representa o GSI2 índice. Ela é configurada usando-se `GraphId` como uma chave de partição e`Path` como uma chave de classificação. Ao usar `GraphI`d e a operação `begins_with` na chave de classificação (`Path`), é possível encontrar a linhagem completa de um componente em uma árvore.


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