Coleções de itens: como modelar relações de um para muitos no DynamoDB
No DynamoDB, uma coleção de itens é um grupo de itens que compartilham o mesmo valor de chave de partição, o que significa que os itens estão relacionados. As coleções de itens são o mecanismo primário para modelar relações de um para muitos no DynamoDB. As coleções de itens só podem existir em tabelas ou índices configurados para usar uma chave primária composta.
nota
Podem existir coleções de itens em uma tabela base ou em um índice secundário. Para obter mais informações especificamente sobre como as coleções de itens interagem com índices, consulte Conjuntos de itens em índices secundários locais.
Considere a seguinte tabela que mostra três usuários diferentes e seus inventários no jogo:
Para alguns itens em cada coleção, a chave de classificação é uma concatenação composta de informações usadas para agrupar dados, como inventory::armor
, inventory::weapon
ou info
. Cada coleção de itens pode ter uma combinação diferente desses atributos como a chave de classificação. O usuário account1234
tem o item inventory::weapons
, enquanto o usuário account1387
não tem (porque ainda não o encontrou). O usuário account1138
usa apenas dois itens para a chave de classificação (já que ainda não tem inventário) enquanto os outros usuários usam três.
O DynamoDB permite recuperar itens seletivamente dessas coleções para fazer o seguinte:
-
Recuperar todos os itens de um usuário específico
-
Recuperar apenas um item de um usuário específico
-
Recuperar todos os itens de um tipo específico pertencentes a determinado usuário
Acelerar as consultas organizando os dados com coleções de itens
Nesse exemplo, cada um dos itens nas três coleções representa um jogador e o modelo de dados que escolhemos, com base nos padrões de acesso do jogo e do jogador. De quais dados o jogo precisa? Quando ele precisa desses dados? Com que frequência ele precisa dos dados? Qual é o custo de fazer isso dessa maneira? Essas decisões de modelagem de dados foram tomadas com base nas respostas a essas perguntas.
Nesse jogo, há uma página diferente apresentada ao jogador para o inventário de armas e outra página para a armadura. Quando o jogador abre o inventário, as armas são mostradas primeiro porque queremos que a página seja carregada muito rapidamente, enquanto as páginas de inventário subsequentes podem ser carregadas depois disso. Como cada um desses tipos de item pode ser bastante grande à medida que o jogador adquire mais itens no jogo, decidimos que cada página de inventário seria seu próprio item na coleção do jogador no banco de dados.
A seção a seguir fala mais sobre como você pode interagir com as coleções de itens por meio da operação Query
.