

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Langkah 5: Buat model data DynamoDB
<a name="step5-hierarchical-model"></a>

Tentukan kunci partisi untuk tabel dasar Anda dan indeks sekunder global (GSIs):
+ Mengikuti praktik terbaik desain kunci, gunakan `ComponentId` sebagai kunci partisi untuk tabel dasar dalam contoh ini. Karena unik, `ComponentId` bisa menawarkan granularitas. DynamoDB menggunakan nilai hash dari kunci partisi Anda untuk menentukan partisi tempat data disimpan secara fisik. ID komponen unik menghasilkan nilai hash yang berbeda, yang dapat memfasilitasi distribusi data di dalam tabel. Anda dapat menanyakan tabel dasar dengan menggunakan kunci `ComponentId` partisi.
+ Untuk menemukan turunan langsung dari komponen, buat GSI di mana `ParentId` kunci partisi, dan `ComponentId` merupakan kunci pengurutan. Anda dapat menanyakan GSI ini dengan menggunakan `ParentId` sebagai kunci partisi.
+ Untuk menemukan semua turunan rekursif dari sebuah komponen, buat GSI di mana `GraphId` kunci partisi, dan `Path` merupakan kunci pengurutan. Anda dapat menanyakan GSI ini dengan menggunakan `GraphId` sebagai kunci partisi dan `BEGINS_WITH(Path, "$path")` operator pada tombol sortir.


|  |  |  |  | 
| --- |--- |--- |--- |
|  | **Kunci partisi** | **Sortir Kunci** | **Atribut pemetaan** | 
| **Tabel dasar** | `ComponentId` |  | `ParentId`, `GraphId`, `Path` | 
| **GSI1** | `ParentId` | `ComponentId` |  | 
| **GSI2** | `GraphId` | `Path` | `ComponentId` | 

## Menyimpan komponen dalam tabel
<a name="store"></a>

Langkah selanjutnya adalah menyimpan setiap komponen dalam tabel dasar DynamoDB. Setelah Anda memasukkan semua komponen dari pohon contoh, Anda mendapatkan tabel dasar berikut.


|  |  |  |  | 
| --- |--- |--- |--- |
| **ComponentId** | **ParentId** | **GraphId** | **Jalan** | 
|  CM1 |  |  CM1\$11 |  CM1 | 
|  CM2 |  CM1 |  CM1\$11 |  CM1\$1CM2 | 
|  CM3 |  CM1 |  CM1\$11 |  CM1\$1CM3 | 
|  CM4 |  CM2 |  CM1\$11 |  CM1\$1CM2\$1CM4 | 
|  CM5 |  CM2 |  CM1\$11 |  CM1\$1CM2\$1CM5 | 
|  CM6 |  CM3 |  CM1\$11 |  CM1\$1CM3\$1CM6 | 
|  CM7 |  CM3 |  CM1\$11 |  CM1\$1CM3\$1CM7 | 
|  CM8 |  CM4 |  CM1\$11 |  CM1\$1CM2\$1CM4\$1CM8 | 
|  CM9 |  CM4 |  CM1\$11 |  CM1\$1CM2\$1CM4\$1CM9 | 
|  CM10 |  CM5 |  CM1\$11 |  CM1\$1CM2\$1CM5\$1CM10 | 

## GSI1 Indeks
<a name="gsi1-index"></a>

Untuk memeriksa semua turunan langsung dari komponen, Anda membuat indeks yang digunakan `ParentId` sebagai kunci partisi dan `ComponentId` sebagai kunci pengurutan. Tabel pivot berikut mewakili indeks. GSI1 Anda dapat menggunakan indeks ini untuk mengambil semua komponen turunan langsung dengan menggunakan ID komponen induk. Misalnya, Anda dapat mengetahui berapa banyak baterai yang tersedia di mobil (CM1) atau sel mana yang tersedia dalam modul (CM4).


|  |  | 
| --- |--- |
| **ParentId** | **ComponentId** | 
| CM1 | CM2CM3 | 
| CM2 | CM4CM5 | 
| CM3 | CM6CM7 | 
| CM4 | CM8CM9 | 
| CM5 | CM10 | 

## GSI2 Indeks
<a name="gsi2-index"></a>

Tabel pivot berikut mewakili indeks. GSI2 Ini dikonfigurasi menggunakan `GraphId` sebagai kunci partisi dan `Path` sebagai kunci pengurutan. Menggunakan `GraphI` d dan `begins_with` operasi pada kunci sortir (`Path`), Anda dapat menemukan garis keturunan lengkap komponen dalam pohon.


|  |  |  | 
| --- |--- |--- |
| **GraphId** | **Jalan** | **ComponentId** | 
| CM1\$11 | CM1CM1\$1CM2CM1\$1CM3CM1\$1CM2\$1CM4CM1\$1CM2\$1CM5CM1\$1CM2\$1CM4\$1CM8CM1\$1CM2\$1CM4\$1CM9CM1\$1CM2\$1CM5\$1CM10CM1\$1CM3\$1CM6CM1\$1CM3\$1CM7 | CM1CM2CM3CM4CM5CM8CM9CM10CM6CM7 | 