

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

# Menggunakan DynamoDB sebagai penyimpanan data untuk toko online
<a name="data-modeling-online-shop"></a>

Kasus penggunaan ini membahas penggunaan DynamoDB sebagai penyimpanan data untuk toko online (atau e-store).

## Kasus penggunaan
<a name="data-modeling-schema-online-shop"></a>

Toko online memungkinkan pengguna menelusuri berbagai produk dan pada akhirnya membelinya. Berdasarkan faktur yang dihasilkan, pelanggan dapat membayar menggunakan kode diskon atau kartu hadiah lalu membayar jumlah yang tersisa dengan kartu kredit. Produk yang dibeli akan diambil dari salah satu gudang dan akan dikirim ke alamat yang diberikan. Pola akses umum untuk toko online meliputi:
+ Mendapatkan pelanggan untuk customerId tertentu
+ Mendapatkan produk untuk productId tertentu
+ Mendapatkan gudang untuk warehouseId tertentu
+ Mendapatkan inventaris produk untuk semua gudang berdasarkan productId
+ Mendapatkan pesanan untuk orderId tertentu
+ Mendapatkan semua produk untuk orderId tertentu
+ Mendapatkan faktur untuk orderId tertentu
+ Mendapatkan semua pengiriman untuk orderId tertentu
+ Mendapatkan semua pesanan untuk productId tertentu dan rentang tanggal tertentu
+ Mendapatkan faktur untuk invoiceId tertentu
+ Mendapatkan semua pembayaran untuk invoiceId tertentu
+ Mendapatkan detail pengiriman untuk shipmentId tertentu
+ Mendapatkan semua pengiriman untuk warehouseId tertentu
+ Mendapatkan inventaris semua produk untuk warehouseId tertentu
+ Mendapatkan semua faktur untuk customerId tertentu dan rentang tanggal tertentu
+ Mendapatkan semua produk yang dipesan untuk customerId tertentu dan rentang tanggal tertentu

## Diagram hubungan entitas
<a name="data-modeling-schema-online-shop-erd"></a>

Ini adalah diagram hubungan entitas (ERD) yang akan kita gunakan untuk memodelkan DynamoDB sebagai penyimpanan data untuk toko online.

![\[ERD untuk model data toko online dengan entitas, seperti Produk, Pesanan, Pembayaran, dan Pelanggan.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-1-ERD.png)


## Pola akses
<a name="data-modeling-schema-online-shop-access-patterns"></a>

Ini adalah pola akses yang akan dipertimbangkan saat menggunakan DynamoDB sebagai penyimpanan data untuk toko online.

1. `getCustomerByCustomerId`

1. `getProductByProductId`

1. `getWarehouseByWarehouseId`

1. `getProductInventoryByProductId`

1. `getOrderDetailsByOrderId`

1. `getProductByOrderId`

1. `getInvoiceByOrderId`

1. `getShipmentByOrderId`

1. `getOrderByProductIdForDateRange`

1. `getInvoiceByInvoiceId`

1. `getPaymentByInvoiceId`

1. `getShipmentDetailsByShipmentId`

1. `getShipmentByWarehouseId`

1. `getProductInventoryByWarehouseId`

1. `getInvoiceByCustomerIdForDateRange`

1. `getProductsByCustomerIdForDateRange`

## Evolusi desain skema
<a name="data-modeling-schema-online-shop-design-evolution"></a>

Menggunakan[NoSQL Workbench untuk DynamoDB](workbench.md), import [AnOnlineShop\$11.json](https://github.com/aws-samples/amazon-dynamodb-design-patterns/blob/master/examples/an-online-shop/json/AnOnlineShop_1.json) untuk membuat model data baru dipanggil `AnOnlineShop` dan tabel baru dipanggil. `OnlineShop` Perhatikan bahwa kita menggunakan nama generik `PK` dan `SK` untuk kunci partisi dan kunci urutan. Hal ini adalah praktik yang digunakan untuk menyimpan berbagai jenis entitas dalam tabel yang sama.

**Langkah 1: Tangani pola akses 1 (`getCustomerByCustomerId`)**

Impor [AnOnlineShop\$12.json](https://github.com/aws-samples/amazon-dynamodb-design-patterns/blob/master/examples/an-online-shop/json/AnOnlineShop_2.json) untuk menangani pola akses 1 (). `getCustomerByCustomerId` Beberapa entitas tidak memiliki hubungan dengan entitas lain, jadi kita akan menggunakan nilai yang sama dari `PK` dan `SK` untuk entitas tersebut. Dalam contoh data, perhatikan bahwa kunci menggunakan prefiks `c#` untuk membedakan `customerId` dari entitas lain yang akan ditambahkan nanti. Praktik ini diulang untuk entitas lain juga. 

Untuk menangani pola akses ini, operasi [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html) dapat digunakan dengan `PK=customerId` dan `SK=customerId`.

**Langkah 2: Tangani pola akses 2 (`getProductByProductId`)**

Impor [AnOnlineShop\$13.json](https://github.com/aws-samples/amazon-dynamodb-design-patterns/blob/master/examples/an-online-shop/json/AnOnlineShop_3.json) ke alamat pola akses 2 (`getProductByProductId`) untuk entitas. `product` Entitas produk diawali oleh `p#` dan atribut kunci urutan yang sama digunakan untuk menyimpan `customerID` serta `productID`. Penamaan generik dan [partisi vertikal](data-modeling-blocks.md#data-modeling-blocks-vertical-partitioning) memungkinkan kita membuat koleksi item untuk desain tabel tunggal yang efektif. 

Untuk menangani pola akses ini, operasi `GetItem` dapat digunakan dengan `PK=productId` dan `SK=productId`.

**Langkah 3: Tangani pola akses 3 (`getWarehouseByWarehouseId`)**

Impor [AnOnlineShop\$14.json](https://github.com/aws-samples/amazon-dynamodb-design-patterns/blob/master/examples/an-online-shop/json/AnOnlineShop_4.json) ke alamat pola akses 3 (`getWarehouseByWarehouseId`) untuk entitas. `warehouse` Saat ini entitas `customer`, `product`, dan `warehouse` ditambahkan ke tabel yang sama. Entitas tersebut dibedakan menggunakan prefiks dan atribut `EntityType`. Atribut jenis (atau penamaan prefiks) meningkatkan keterbacaan model. Keterbacaan akan terpengaruh jika kita hanya menyimpan alfanumerik IDs untuk entitas yang berbeda dalam atribut yang sama. Akan sulit untuk membedakan satu entitas dari yang lain tanpa adanya pengidentifikasi ini. 

Untuk menangani pola akses ini, operasi `GetItem` dapat digunakan dengan `PK=warehouseId` dan `SK=warehouseId`.

**Tabel dasar:**

![\[Desain tabel DynamoDB dengan awalan EntityType dan untuk mendapatkan data gudang dengan ID-nya.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-2-Step3.png)


**Langkah 4: Tangani pola akses 4 (`getProductInventoryByProductId`)**

Impor [AnOnlineShop\$15.json](https://github.com/aws-samples/amazon-dynamodb-design-patterns/blob/master/examples/an-online-shop/json/AnOnlineShop_5.json) ke pola akses alamat 4 (). `getProductInventoryByProductId` `warehouseItem`entitas digunakan untuk melacak jumlah produk di setiap gudang. Item ini biasanya akan diperbarui ketika produk ditambahkan atau dihapus dari gudang. Seperti yang terlihat di ERD, ada many-to-many hubungan antara `product` dan`warehouse`. Di sini, one-to-many hubungan dari `product` ke `warehouse` dimodelkan sebagai`warehouseItem`. Nantinya, one-to-many hubungan dari `warehouse` hingga `product` akan dimodelkan juga. 

Pola akses 4 dapat ditangani dengan kueri pada `PK=ProductId` dan `SK begins_with “w#“`. 

Untuk informasi selengkapnya tentang `begins_with()` dan ekspresi lain yang dapat diterapkan ke kunci urutan, lihat [Ekspresi Kondisi Kunci](Query.KeyConditionExpressions.md).

**Tabel dasar:**

![\[Desain tabel untuk menanyakan ProductID dan WarehouseID untuk melacak inventaris produk di gudang tertentu.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-3-Step4.png)


**Langkah 5: Tangani pola akses 5 (`getOrderDetailsByOrderId`) dan 6 (`getProductByOrderId`)**

Tambahkan beberapa lagi`customer`,`product`, dan `warehouse` item ke tabel dengan mengimpor [AnOnlineShop\$16.json](https://github.com/aws-samples/amazon-dynamodb-design-patterns/blob/master/examples/an-online-shop/json/AnOnlineShop_6.json). Kemudian, impor [AnOnlineShop\$17.json](https://github.com/aws-samples/amazon-dynamodb-design-patterns/blob/master/examples/an-online-shop/json/AnOnlineShop_7.json) untuk membuat koleksi item `order` yang dapat mengatasi pola akses 5 (`getOrderDetailsByOrderId`) dan 6 (). `getProductByOrderId` Anda dapat melihat one-to-many hubungan antara `order` dan `product` dimodelkan sebagai entitas OrderItem. 

Untuk menangani pola akses 5 (`getOrderDetailsByOrderId`), lakukan kueri tabel dengan `PK=orderId`. Tindakan ini akan memberikan semua informasi tentang pesanan termasuk `customerId` dan produk yang dipesan.

**Tabel dasar:**

![\[Desain tabel untuk kueri menggunakan orderId untuk mendapatkan informasi tentang semua produk yang dipesan.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-4-Step5.png)


Untuk menagani pola akses 6 (`getProductByOrderId`), kita hanya perlu membaca produk dalam `order`. Kueri tabel dengan `PK=orderId` dan `SK begins_with “p#”` untuk mencapai hal ini.

**Tabel dasar:**

![\[Desain tabel untuk kueri menggunakan OrderId dan productID untuk mendapatkan produk dalam urutan.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-5-Step5.png)


**Langkah 6: Tangani pola akses 7 (`getInvoiceByOrderId`)**

Impor [AnOnlineShop\$18.json](https://github.com/aws-samples/amazon-dynamodb-design-patterns/blob/master/examples/an-online-shop/json/AnOnlineShop_8.json) untuk menambahkan `invoice` entitas ke koleksi item *pesanan* untuk menangani pola akses 7 (). `getInvoiceByOrderId` Untuk menangani pola akses ini, operasi `PK=orderId` dan `SK begins_with “i#”` dapat digunakan.

**Tabel dasar:**

![\[Desain tabel dengan entitas faktur dalam koleksi item pesanan untuk mendapatkan faktur oleh OrderId.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-6-Step6.png)


**Langkah 7: Tangani pola akses 8 (`getShipmentByOrderId`)**

Impor [AnOnlineShop\$19.json](https://github.com/aws-samples/amazon-dynamodb-design-patterns/blob/master/examples/an-online-shop/json/AnOnlineShop_9.json) untuk menambahkan `shipment` entitas ke koleksi item *pesanan* untuk mengatasi pola akses 8 (). `getShipmentByOrderId` Model yang dipartisi secara vertikal yang sama diperluas dengan menambahkan lebih banyak jenis entitas dalam desain tabel tunggal. Perhatikan bagaimana koleksi item *pesanan* berisi hubungan yang berbeda dari hubungan entitas `order` dengan entitas`shipment`, `orderItem`, dan `invoice`. 

Untuk mendapatkan pengiriman berdasarkan `orderId`, Anda dapat melakukan operasi kueri dengan `PK=orderId` dan `SK begins_with “sh#”`.

**Tabel dasar:**

![\[Desain tabel dengan entitas pengiriman ditambahkan ke koleksi barang pesanan untuk mendapatkan pengiriman dengan ID pesanan.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-7-Step7.png)


**Langkah 8: Tangani pola akses 9 (`getOrderByProductIdForDateRange`)**

Kita membuat koleksi item *pesanan* pada langkah sebelumnya. Pola akses ini memiliki dimensi pencarian baru (`ProductID` dan `Date`) yang mengharuskan Anda memindai seluruh tabel dan memfilter catatan yang relevan untuk mengambil item yang ditargetkan. Untuk menangani pola akses ini, kita harus membuat [indeks sekunder global (GSI)](GSI.md). *Impor [AnOnlineShop\$110.json](https://github.com/aws-samples/amazon-dynamodb-design-patterns/blob/master/examples/an-online-shop/json/AnOnlineShop_10.json) untuk membuat koleksi item baru menggunakan GSI yang memungkinkan untuk mengambil `orderItem` data dari beberapa koleksi item pesanan.* Sekarang data memiliki `GSI1-PK` dan `GSI1-SK` yang masing-masing akan menjadi kunci partisi dan kunci urutan `GSI1`. 

DynamoDB otomatis mengisi item yang berisi atribut kunci GSI dari tabel ke GSI. Tidak perlu melakukan penyisipan tambahan secara manual ke GSI. 

Untuk menangani pola akses 9, lakukan kueri `GSI1` dengan `GSI1-PK=productId` dan `GSI1SK between (date1, date2)`.

**Tabel dasar:**

![\[Desain tabel dengan GSI untuk mendapatkan data pesanan dari beberapa koleksi item pesanan.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-8-Step8-Base.png)


**GSI1:**

![\[Desain GSI dengan ProductID dan Date sebagai partisi dan kunci pengurutan untuk mendapatkan pesanan berdasarkan ID dan tanggal produk.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-9-Step8-GSI.png)


**Langkah 9: Tangani pola akses 10 (`getInvoiceByInvoiceId`) dan 11 (`getPaymentByInvoiceId`)**

Impor [AnOnlineShop\$111.json](https://github.com/aws-samples/amazon-dynamodb-design-patterns/blob/master/examples/an-online-shop/json/AnOnlineShop_11.json) untuk mengatasi pola akses 10 (`getInvoiceByInvoiceId`) dan 11 (`getPaymentByInvoiceId`), keduanya terkait dengan. `invoice` Meskipun berbeda, dua pola akses ini direalisasikan menggunakan kondisi kunci yang sama. `Payments` didefinisikan sebagai atribut dengan jenis data peta pada entitas `invoice`.

**catatan**  
`GSI1-PK` dan `GSI1-SK` kelebihan beban untuk menyimpan informasi berbagai entitas sehingga beberapa pola akses dapat dilayani dari GSI yang sama. Untuk informasi selengkapnya tentang kelebihan beban GSI, lihat [Membebani Indeks Sekunder Global di DynamoDB](bp-gsi-overloading.md).

Untuk menangani pola akses 10 dan 11, lakukan kueri `GSI1` dengan `GSI1-PK=invoiceId` dan `GSI1-SK=invoiceId`.

**GSI1:**

![\[Desain GSI dengan invoiceID sebagai partisi dan kunci pengurutan untuk mendapatkan faktur dan pembayaran dengan ID faktur.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-10-Step9.png)


**Langkah 10: Tangani pola akses 12 (`getShipmentDetailsByShipmentId`) dan 13 (`getShipmentByWarehouseId`)**

Impor [AnOnlineShop\$112.json](https://github.com/aws-samples/amazon-dynamodb-design-patterns/blob/master/examples/an-online-shop/json/AnOnlineShop_12.json) untuk mengatasi pola akses 12 (`getShipmentDetailsByShipmentId`) dan 13 (). `getShipmentByWarehouseId` 

Perhatikan bahwa entitas `shipmentItem` ditambahkan ke koleksi item *pesanan* pada tabel dasar agar dapat mengambil semua detail tentang pesanan dalam satu operasi kueri.

**Tabel dasar:**

![\[Desain tabel dengan entitas ShipmentItem dalam koleksi item pesanan untuk mendapatkan semua detail pesanan.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-11-Step10.png)


Kunci `GSI1` partisi dan sortir telah digunakan untuk memodelkan one-to-many hubungan antara `shipment` dan`shipmentItem`. Untuk menangani pola akses 12 (`getShipmentDetailsByShipmentId`), lakukan kueri `GSI1` dengan `GSI1-PK=shipmentId` dan `GSI1-SK=shipmentId`.

**GSI1:**

![\[GSI1 desain dengan shipmentID sebagai partisi dan kunci sortir untuk mendapatkan detail pengiriman dengan ID pengiriman.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-12-Step10-GSI.png)


Kita perlu membuat GSI (`GSI2`) lain untuk memodelkan one-to-many hubungan baru antara `warehouse` dan `shipment` untuk pola akses 13 (`getShipmentByWarehouseId`). Untuk menangani pola akses ini, lakukan kueri `GSI2` dengan `GSI2-PK=warehouseId` dan `GSI2-SK begins_with “sh#”`.

**GSI2:**

![\[GSI2 desain dengan WarehouseID dan shipmentID sebagai partisi dan kunci sortir untuk mendapatkan pengiriman berdasarkan gudang.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-13-Step10-GSI2.png)


**Langkah 11: Tangani pola akses 14 (`getProductInventoryByWarehouseId`) 15 (`getInvoiceByCustomerIdForDateRange`), dan 16 (`getProductsByCustomerIdForDateRange`)**

Impor [AnOnlineShop\$113.json](https://github.com/aws-samples/amazon-dynamodb-design-patterns/blob/master/examples/an-online-shop/json/AnOnlineShop_13.json) untuk menambahkan data yang terkait dengan kumpulan pola akses berikutnya. Untuk menangani pola akses 14 (`getProductInventoryByWarehouseId`), lakukan kueri `GSI2` dengan `GSI2-PK=warehouseId` dan `GSI2-SK begins_with “p#”`.

**GSI2:**

![\[GSI2 desain dengan WarehouseID dan productID sebagai partisi dan kunci sortir untuk mengatasi pola akses 14.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-14-Step11-GSI2.png)


Untuk menangani pola akses 15 (`getInvoiceByCustomerIdForDateRange`), lakukan kueri `GSI2` dengan `GSI2-PK=customerId` dan `GSI2-SK between (i#date1, i#date2)`.

**GSI2:**

![\[GSI2 desain dengan CustomerID dan rentang tanggal faktur sebagai partisi dan kunci pengurutan untuk mengatasi pola akses 15.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-15-Step11-GSI2.png)


Untuk menangani pola akses 16 (`getProductsByCustomerIdForDateRange`), lakukan kueri `GSI2` dengan `GSI2-PK=customerId` dan `GSI2-SK between (p#date1, p#date2)`.

**GSI2:**

![\[GSI2 desain dengan CustomerID dan rentang tanggal produk sebagai partisi dan sortir kunci untuk mengatasi pola akses 16\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-16-Step11-GSI2.png)


**catatan**  
Di [NoSQL Workbench](workbench.md), *faset* mewakili pola akses data aplikasi yang berbeda untuk DynamoDB. Faset memberi Anda cara untuk melihat subset data dalam tabel tanpa harus melihat rekaman yang tidak memenuhi batasan faset. Faset dianggap sebagai alat pemodelan data visual, dan tidak ada sebagai konstruksi yang dapat digunakan di DynamoDB, karena aspek tersebut murni bantuan untuk memodelkan pola akses.   
Impor [AnOnlineShop\$1facets.json](https://github.com/aws-samples/amazon-dynamodb-design-patterns/blob/master/examples/an-online-shop/json/AnOnlineShop_facets.json) untuk melihat aspek untuk kasus penggunaan ini.

Semua pola akses dan bagaimana desain skema mengatasinya dirangkum dalam tabel di bawah ini:


| Pola akses | Basis table/GSI/LSI | Operasi | Nilai kunci partisi | Nilai kunci urutan | 
| --- | --- | --- | --- | --- | 
| getCustomerByCustomerId | Tabel dasar | GetItem |  PK=customerId | SK=customerId | 
| getProductByProductId | Tabel dasar | GetItem |  PK=productId | SK=productId | 
| getWarehouseByWarehouseId | Tabel dasar | GetItem |  PK=warehouseId | SK=warehouseId | 
| getProductInventoryByProductId | Tabel dasar | Kueri |  PK=productId | SK begins\$1with "w\$1" | 
| getOrderDetailsByOrderId | Tabel dasar | Kueri |  PK=orderId |  | 
| getProductByOrderId | Tabel dasar | Kueri |  PK=orderId | SK begins\$1with "p\$1" | 
| getInvoiceByOrderId |  Tabel dasar | Kueri |  PK=orderId | SK begins\$1with "i\$1" | 
| getShipmentByOrderId |  Tabel dasar | Kueri |  PK=orderId | SK begins\$1with "sh\$1" | 
| getOrderByProductIdForDateRange |  GSI1 | Kueri |  PK=productId | SK antara date1 dan date2 | 
| getInvoiceByInvoiceId |  GSI1 | Kueri |  PK=invoiceId | SK=invoiceId | 
| getPaymentByInvoiceId |  GSI1 | Kueri |  PK=invoiceId | SK=invoiceId | 
| getShipmentDetailsByShipmentId |  GSI1 | Kueri |  PK=shipmentId | SK=shipmentId | 
| getShipmentByWarehouseId |  GSI2 | Kueri |  PK=warehouseId | SK begins\$1with "sh\$1" | 
| getProductInventoryByWarehouseId |  GSI2 | Kueri |  PK=warehouseId | SK begins\$1with "p\$1" | 
| getInvoiceByCustomerIdForDateRange |  GSI2 | Kueri |  PK=customerId | SK antara i\$1date1 dan i\$1date2 | 
| getProductsByCustomerIdForDateRange |  GSI2 | Kueri |  PK=customerId | SK antara p\$1date1 dan p\$1date2 | 

### Skema akhir toko online
<a name="data-modeling-schema-online-store-final-schema"></a>

Berikut adalah desain skema akhir. [Untuk mengunduh desain skema ini sebagai file JSON, lihat DynamoDB Design Patterns on.](https://github.com/aws-samples/aws-dynamodb-examples/tree/master/schema_design/SchemaExamples) GitHub

**Tabel dasar**

![\[Skema akhir tabel dasar untuk toko online dengan atribut, seperti EntityName dan Nama.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-17-Final-BaseTable.png)


**GSI1**

![\[GSI1 Skema akhir untuk tabel dasar toko online dengan atribut, seperti EntityType.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-18-Final-GSI1.png)


**GSI2**

![\[GSI2 Skema akhir untuk tabel dasar toko online dengan atribut, seperti EntityType.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/DataModeling/OnlineShop-19-Final-GSI2.png)


## Menggunakan NoSQL Workbench dengan desain skema ini
<a name="data-modeling-schema-online-shop-nosql"></a>

Anda dapat mengimpor skema akhir ini ke [NoSQL Workbench](workbench.md), sebuah alat visual yang menyediakan fitur pemodelan data, visualisasi data, dan pengembangan kueri untuk DynamoDB, guna mengeksplorasi dan mengedit proyek baru Anda lebih lanjut. Ikuti langkah-langkah berikut untuk memulai:

1. Unduh NoSQL Workbench. Untuk informasi selengkapnya, lihat [Unduh NoSQL Workbench untuk DynamoDB](workbench.settingup.md).

1. Unduh file skema JSON yang tercantum di atas, yang sudah dalam format model NoSQL Workbench.

1. Impor file skema JSON ke NoSQL Workbench. Untuk informasi selengkapnya, lihat [Mengimpor model data yang ada](workbench.Modeler.ImportExisting.md). 

1. Setelah mengimpor model data ke NoSQL Workbench, Anda dapat mengeditnya. Lihat informasi yang lebih lengkap di [Mengedit model data yang ada](workbench.Modeler.Edit.md).