Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Fase 6: Creare interrogazioni di dati
Dopo aver definito i modelli di accesso e progettato il modello di dati, è possibile interrogare i dati gerarchici nel database DynamoDB. Come best practice per risparmiare sui costi e contribuire a garantire le prestazioni, negli esempi seguenti viene utilizzata solo l'operazione di interrogazione che non è prevista. Scan
-
Trova gli antenati di un componente.
Per trovare gli antenati (padre, nonno, bisnonno e così via) del componente CM8, esegui una query sulla tabella di base usando
ComponentId = "CM8"
. La query restituirà il seguente record.Per ridurre la dimensione dei dati dei risultati, puoi utilizzare un'espressione di proiezione per restituire solo l'attributo
Path
.ComponentId
ParentId
GraphId
Path
CM8
CM4
CM1#1
CM1|CM2|CM4|CM8
Path
CM1|CM2|CM4|CM8
Ora, dividi il percorso usando la pipe («|») e prendi i primi componenti N-1 per ottenere gli antenati.
Risultato della query: gli antenati di CM8 sono CM1, CM2, CM4.
-
Trova i figli immediati di un componente.
Per ottenere tutti i componenti secondari immediati, o quelli a valle di un livello, per il componente CM2, interrogate GSI1 utilizzando.
ParentId = "CM2"
La query restituirà il seguente record.ParentId
ComponentId
CM2
CM4
CM5
-
Trova tutti i componenti secondari a valle utilizzando un componente di primo livello.
Per ottenere tutti i componenti secondari o a valle del componente di primo livello CM1, interrogate GSI2 utilizzando
GraphId = "CM1#1"
and e ebegins_with("Path", "CM1|")
utilizzate un'espressione di proiezione con.ComponentId
Restituirà tutti i componenti relativi a quell'albero.Questo esempio ha un solo albero in cui il componente di primo livello è CM1. In realtà, potresti avere milioni di componenti di livello superiore nella stessa tabella.
GraphId
ComponentId
CM1#1
CM2
CM3
CM4
CM5
CM8
CM9
CM10
CM6
CM7
-
Trova tutti i componenti secondari a valle utilizzando un componente di livello intermedio.
Per ottenere tutti i componenti secondari, o a valle, in modo ricorsivo per il componente CM2, hai due opzioni. Puoi eseguire query ricorrenti livello per livello oppure eseguire query sull'indice GSI2.
-
Esegui una query su GSI1, livello per livello, in modo ricorrente, fino a raggiungere l'ultimo livello di componenti figlio.
-
Esegui una query su GSI1 tramite
ParentId = "CM2"
. Restituirà il seguente record.ParentId
ComponentId
CM2
CM4
CM5
-
Esegui di nuovo una query su GSI1 tramite
ParentId = "CM4"
. Restituirà il seguente record.ParentId
ComponentId
CM4
CM8
CM9
-
Esegui di nuovo una query su GSI1 tramite
ParentId = "CM5"
. Restituirà il seguente record.Continua il ciclo: esegui una query per ciascun
ComponentId
fino a raggiungere l'ultimo livello. Quando una query che utilizzaParentId = "<ComponentId>"
non restituisce alcun risultato, il risultato precedente proveniva dall'ultimo livello dell'albero.ParentId
ComponentId
CM5
CM10
-
Unisci tutti i risultati.
risultato= [CM4, CM5] + [CM8, CM9] + [CM10]
= [CM4, CM5, CM8, CM9, CM10]
-
-
Esegui una query su GSI2, che archivia un albero gerarchico per un componente di livello superiore (un'automobile o CM1).
-
Innanzitutto, trova il componente di livello superiore o l'antenato principale e
Path
di CM2. Per farlo, esegui una query sulla tabella di base usandoComponentId = "CM2"
per trovare il percorso di quel componente nell'albero gerarchico. Seleziona gli attributi e h.GraphId
Pat
La query restituirà il seguente record.GraphId
Path
CM1#1
CM1|CM2
-
Interroga GSI2 utilizzando.
GraphId = "CM1#1" AND BEGINS_WITH("Path", "CM1|CM2|")
La query restituirà i seguenti risultati.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
-
Seleziona l'attributo
ComponentId
per restituire tutti i componenti figlio per CM2.
-
-