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 6: criar consultas de dados
Depois de definir seus padrões de acesso e projetar seu modelo de dados, você pode consultar dados hierárquicos no banco de dados do DynamoDB. Como prática recomendada para economizar custos e ajudar a garantir o desempenho, os exemplos a seguir usam somente a operação de consulta semScan
.
-
Encontre ancestrais de um componente.
Para encontrar os ancestrais (pai, avô, bisavô etc.) do componente CM8, consulte a tabela base usando
ComponentId = "CM8"
. A consulta retornará o registro a seguir.Para reduzir o tamanho dos dados resultantes, é possível usar uma expressão de projeção para retornar somente o atributo
Path
.ComponentId
ParentId
GraphId
Path
CM8
CM4
CM1#1
CM1|CM2|CM4|CM8
Path
CM1|CM2|CM4|CM8
Agora, divida o caminho usando o tubo (“|”) e pegue os primeiros componentes N-1 para obter ancestrais.
Resultado da consulta: os ancestrais de CM8 são CM1, CM2, CM4.
-
Encontre filhos imediatos de um componente.
Para obter todos os componentes secundários imediatos ou de um nível a jusante do componente CM2, consulte GSI1 usando.
ParentId = "CM2"
A consulta retornará o registro a seguir.ParentId
ComponentId
CM2
CM4
CM5
-
Encontre todos os componentes secundários posteriores usando um componente de nível superior.
Para obter todos os componentes secundários ou posteriores do componente CM1 de nível superior, consulte GSI2 usando
GraphId = "CM1#1"
e e use uma expressão debegins_with("Path", "CM1|")
projeção com.ComponentId
Isso retornará todos os componentes relacionados a essa árvore.Este exemplo tem uma única árvore, e CM1 é o componente superior. Na realidade, é possível ter milhões de componentes de nível superior na mesma tabela.
GraphId
ComponentId
CM1#1
CM2
CM3
CM4
CM5
CM8
CM9
CM10
CM6
CM7
-
Encontre todos os componentes secundários posteriores usando um componente de nível médio.
Para obter todos os componentes secundários ou posteriores recursivamente para o componente CM2, você tem duas opções. É possível consultar recursivamente nível por nível ou consultar o índice GSI2.
-
Consulte GSI1, nível por nível, recursivamente, até atingir o último nível dos componentes filhos.
-
Consulte GSI1 usando
ParentId = "CM2"
. Isso retornará o registro a seguir.ParentId
ComponentId
CM2
CM4
CM5
-
Novamente, consulte GSI1 usando
ParentId = "CM4"
. Isso retornará o registro a seguir.ParentId
ComponentId
CM4
CM8
CM9
-
Novamente, consulte GSI1 usando
ParentId = "CM5"
. Isso retornará o registro a seguir.Continue o loop: consulte para cada
ComponentId
até chegar ao último nível. Quando uma consulta usandoParentId = "<ComponentId>"
não retorna nenhum resultado, o resultado anterior pertencia ao último nível da árvore.ParentId
ComponentId
CM5
CM10
-
Mescle todos os resultados.
resultado = [CM4, CM5] + [CM8, CM9] + [CM10]
= [CM4, CM5, CM8, CM9, CM10]
-
-
Consulte GSI2, que armazena uma árvore hierárquica para um componente de nível superior (um carro, ou CM1).
-
Primeiro, encontre o componente de nível superior ou o ancestral superior e o
Path
de CM2. Para isso, consulte a tabela base usandoComponentId = "CM2"
para encontrar o caminho desse componente na árvore hierárquica. Selecione os atributosGraphId
ePat
h. A consulta retornará o registro a seguir.GraphId
Path
CM1#1
CM1|CM2
-
Consulte GSI2 usando o.
GraphId = "CM1#1" AND BEGINS_WITH("Path", "CM1|CM2|")
A consulta retornará os resultados a seguir.GraphId
Path
ComponentId
CM1#1
CM1|CM2|CM4
CM1|CM2|CM5
CM1|CM2|CM4|CM8
CM1|CM2|CM4|CM9
CM1|CM2|CM5|CM10
CM4
CM5
CM8
CM9
CM10
-
Selecione o atributo
ComponentId
para retornar todos os componentes filhos para CM2.
-
-