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
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. Você pode consultar a tabela base usando uma chave deComponentId
partição. -
Para encontrar filhos imediatos de um componente, crie um GSI em que
ParentId
esteja a chave de partição eComponentId
seja a chave de classificação. Você pode consultar esse GSI usandoParentId
como chave de partição. -
Para todos os filhos recursivos de um componente, crie um GSI em que
GraphId
é a chave de partição, ePath
é a chave de classificação. É possível consultar esse GSI usandoGraphId
como a chave de partição e o operadorBEGINS_WITH(Path, "$path")
na chave de classificação.
Chave de partição |
Chave de classificação |
Atributos de mapeamento |
|
Tabela base |
|
|
|
GSI1 |
|
|
|
GSI2 |
|
|
|
Armazenar componentes na tabela
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 tabela base a seguir.
ComponentId |
ParentId |
GraphId |
Path |
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 |
O índice GSI1
Para verificar todos os filhos imediatos de um componente, você cria um índice que é usado ParentId
como chave de partição e ComponentId
como chave de classificação. A tabela dinâmica a seguir representa o índice GSI1. Esse índice pode ser usado para recuperar todos os componentes filhos imediatos por meio de um ID de componente pai. Por exemplo, é possível 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 |
CM2 CM3 |
CM2 |
CM4 CM5 |
CM3 |
CM6 CM7 |
CM4 |
CM8 CM9 |
CM5 |
CM10 |
O índice GSI2
A tabela dinâmica a seguir representa o índice GSI2. Ela é configurada usando-se GraphId
como uma chave de partição ePath
como uma chave de classificação. Usando GraphI
d e a begins_with
operação na chave de classificação (Path
), você pode encontrar a linhagem completa de um componente em uma árvore.
GraphId |
Path |
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 |