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 5: Creare un modello di dati DynamoDB
Definite le chiavi di partizione per la tabella di base e gli indici secondari globali (GSI):
-
Seguendo le migliori pratiche di progettazione chiave, utilizzate
ComponentId
come chiave di partizione per la tabella di base in questo esempio. Poiché è unica,ComponentId
può offrire granularità. DynamoDB utilizza il valore hash della chiave di partizione per determinare la partizione in cui i dati vengono archiviati fisicamente. L'ID univoco del componente genera un valore hash diverso, che può facilitare la distribuzione dei dati all'interno della tabella. È possibile interrogare la tabella di base utilizzando una chiave diComponentId
partizione. -
Per trovare i figli immediati di un componente, crea un GSI in cui si
ParentId
trova la chiave di partizione eComponentId
la chiave di ordinamento. È possibile interrogare questo GSI utilizzandoloParentId
come chiave di partizione. -
Per trovare tutti i figli ricorrenti di un componente, crea un GSI dove
GraphId
è la chiave di partizione, ePath
è la chiave di ordinamento. Puoi eseguire query su questo GSI utilizzandoGraphId
come chiave di partizione e l'operatoreBEGINS_WITH(Path, "$path")
sulla chiave di ordinamento.
Chiave di partizione |
Chiave di ordinamento |
Attributi di mappatura |
|
Tabella di base |
|
|
|
GSI1 |
|
|
|
GSI2 |
|
|
|
Archiviazione dei componenti nella tabella
Il passaggio successivo consiste nell'archiviare ogni componente nella tabella di base di DynamoDB. Dopo aver inserito tutti i componenti dall'albero di esempio, si ottiene la seguente tabella di base.
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 |
L'indice GSI1
Per controllare tutti i figli immediati di un componente, create un indice da utilizzare ParentId
come chiave di partizione e ComponentId
come chiave di ordinamento. La seguente tabella pivot rappresenta l'indice GSI1. Puoi utilizzare questo indice per recuperare tutti i componenti figlio immediati utilizzando un ID del componente principale. Ad esempio, puoi scoprire quante batterie sono disponibili in un'automobile (CM1) o quali celle sono disponibili in un modulo (CM4).
ParentId |
ComponentId |
CM1 |
CM2 CM3 |
CM2 |
CM4 CM5 |
CM3 |
CM6 CM7 |
CM4 |
CM8 CM9 |
CM5 |
CM10 |
L'indice GSI2
La seguente tabella pivot rappresenta l'indice GSI2. È configurato utilizzando GraphId
come chiave di partizione e Path
come chiave di ordinamento. Usando GraphI
d e l'begins_with
operazione sulla chiave di ordinamento (Path
), puoi trovare la discendenza completa di un componente in un albero.
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 |