

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
<a name="step5-hierarchical-model"></a>

Definite le chiavi di partizione per la tabella di base e gli indici secondari globali (): GSIs
+ Seguendo le migliori pratiche di progettazione, usatela `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 di `ComponentId` partizione.
+ Per trovare i figli immediati di un componente, crea un GSI in cui si `ParentId` trova la chiave di partizione e `ComponentId` la chiave di ordinamento. È possibile interrogare questo GSI utilizzandolo `ParentId` come chiave di partizione.
+ Per trovare tutti i figli ricorrenti di un componente, crea un GSI dove `GraphId` è la chiave di partizione, e `Path` è la chiave di ordinamento. Puoi eseguire query su questo GSI utilizzando `GraphId` come chiave di partizione e l'operatore `BEGINS_WITH(Path, "$path")` sulla chiave di ordinamento.


|  |  |  |  | 
| --- |--- |--- |--- |
|  | **Chiave di partizione** | **Chiave di ordinamento** | **Attributi di mappatura** | 
| **Tabella di base** | `ComponentId` |  | `ParentId`, `GraphId`, `Path` | 
| **GSI1** | `ParentId` | `ComponentId` |  | 
| **GSI2** | `GraphId` | `Path` | `ComponentId` | 

## Archiviazione dei componenti nella tabella
<a name="store"></a>

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** | 
|  <br />CM1 |  |  <br />CM1\#1 |  <br />CM1 | 
|  <br />CM2 |  <br />CM1 |  <br />CM1\#1 |  <br />CM1\|CM2 | 
|  <br />CM3 |  <br />CM1 |  <br />CM1\#1 |  <br />CM1\|CM3 | 
|  <br />CM4 |  <br />CM2 |  <br />CM1\#1 |  <br />CM1\|CM2\|CM4 | 
|  <br />CM5 |  <br />CM2 |  <br />CM1\#1 |  <br />CM1\|CM2\|CM5 | 
|  <br />CM6 |  <br />CM3 |  <br />CM1\#1 |  <br />CM1\|CM3\|CM6 | 
|  <br />CM7 |  <br />CM3 |  <br />CM1\#1 |  <br />CM1\|CM3\|CM7 | 
|  <br />CM8 |  <br />CM4 |  <br />CM1\#1 |  <br />CM1\|CM2\|CM4\|CM8 | 
|  <br />CM9 |  <br />CM4 |  <br />CM1\#1 |  <br />CM1\|CM2\|CM4\|CM9 | 
|  <br />CM10 |  <br />CM5 |  <br />CM1\#1 |  <br />CM1\|CM2\|CM5\|CM10 | 

## L' GSI1 indice
<a name="gsi1-index"></a>

Per controllare tutti i figli immediati di un componente, create un indice che utilizza `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'auto (CM1) o quali celle sono disponibili in un modulo (CM4).


|  |  | 
| --- |--- |
| **ParentId** | **ComponentId** | 
| CM1 | CM2<br />CM3 | 
| CM2 | CM4<br />CM5 | 
| CM3 | CM6<br />CM7 | 
| CM4 | CM8<br />CM9 | 
| CM5 | CM10 | 

## L' GSI2 indice
<a name="gsi2-index"></a>

La seguente tabella pivot rappresenta l' GSI2 indice. È configurato utilizzando `GraphId` come chiave di partizione e `Path` come chiave di ordinamento. Usando `GraphI` d e l'`begins_with`operazione sulla chiave sort (`Path`), puoi trovare la discendenza completa di un componente in un albero.


|  |  |  | 
| --- |--- |--- |
| **GraphId** | **Path** | **ComponentId** | 
| CM1\#1 | CM1<br />CM1\|CM2<br />CM1\|CM3<br />CM1\|CM2\|CM4<br />CM1\|CM2\|CM5<br />CM1\|CM2\|CM4\|CM8<br />CM1\|CM2\|CM4\|CM9<br />CM1\|CM2\|CM5\|CM10<br />CM1\|CM3\|CM6<br />CM1\|CM3\|CM7 | CM1<br />CM2<br />CM3<br />CM4<br />CM5<br />CM8<br />CM9<br />CM10<br />CM6<br />CM7 | 