

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

# Partisi dan distribusi data di DynamoDB
<a name="HowItWorks.Partitions"></a>

Amazon DynamoDB menyimpan data dalam partisi. *Partisi* adalah alokasi penyimpanan untuk tabel, didukung oleh solid state drive (SSDs) dan secara otomatis direplikasi di beberapa Availability Zone dalam suatu AWS Region. Manajemen partisi ditangani sepenuhnya oleh DynamoDB—Anda tidak perlu mengelola partisi sendiri.

Saat Anda membuat tabel, status awal tabel tersebut adalah `CREATING`. Selama fase ini, DynamoDB mengalokasikan partisi yang memadai ke tabel sehingga dapat menangani persyaratan throughput yang Anda sediakan. Anda dapat mulai menulis dan membaca data tabel setelah status tabel berubah menjadi `ACTIVE`.

DynamoDB mengalokasikan partisi tambahan ke tabel dalam situasi berikut:
+ Jika Anda meningkatkan pengaturan throughput tabel yang tersedia melebihi apa yang dapat didukung oleh partisi yang ada.
+ Jika partisi yang ada memenuhi kapasitas dan diperlukan lebih banyak ruang penyimpanan.

Manajemen partisi terjadi secara otomatis di latar belakang dan transparan bagi aplikasi Anda. Tabel Anda tetap tersedia dan sepenuhnya mendukung persyaratan throughput yang Anda sediakan.

Untuk rincian selengkapnya, lihat [Desain kunci partisi](bp-partition-key-design.md).

Indeks sekunder global di DynamoDB juga terdiri dari partisi. Data dalam indeks sekunder global disimpan secara terpisah dari data dalam tabel dasarnya, namun partisi indeks berperilaku sama seperti partisi tabel.

## Distribusi data: Kunci partisi
<a name="HowItWorks.Partitions.SimpleKey"></a>

Jika tabel Anda memiliki kunci primer sederhana (hanya kunci partisi), DynamoDB menyimpan dan mengambil setiap item berdasarkan nilai kunci partisinya.

Untuk menulis item ke tabel, DynamoDB menggunakan nilai kunci partisi sebagai input ke fungsi hash internal. Nilai keluaran dari fungsi hash menentukan partisi tempat item akan disimpan.

Untuk membaca item dari tabel, Anda harus menentukan nilai kunci partisi untuk item tersebut. DynamoDB menggunakan nilai ini sebagai masukan ke fungsi hashnya, menghasilkan partisi tempat item dapat ditemukan.

Diagram berikut menunjukkan tabel bernama *Pets*, yang mencakup beberapa partisi. Kunci utama tabel adalah *AnimalType*(hanya atribut kunci ini yang ditampilkan). DynamoDB menggunakan fungsi hashnya untuk menentukan tempat menyimpan item baru, dalam hal ini berdasarkan nilai hash string *Dog*. Perhatikan bahwa item tidak disimpan dalam urutan yang diurutkan. Lokasi setiap item ditentukan oleh nilai hash kunci partisinya.

![\[Distribusi item tabel DynamoDB di seluruh partisi berdasarkan nilai hash kunci partisi.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/HowItWorksPartitionKey.png)


**catatan**  
DynamoDB dioptimalkan untuk distribusi item yang seragam di seluruh partisi tabel, tidak peduli berapa banyak partisi yang ada. Kami menyarankan Anda memilih kunci partisi yang dapat memiliki sejumlah besar nilai berbeda yang berhubungan dengan jumlah item dalam tabel.

## Distribusi data: Kunci partisi dan kunci urutan
<a name="HowItWorks.Partitions.CompositeKey"></a>

Jika tabel memiliki kunci primer gabungan (kunci partisi dan kunci urutan), DynamoDB menghitung nilai hash kunci partisi dengan cara yang sama seperti yang dijelaskan dalam[Distribusi data: Kunci partisi](#HowItWorks.Partitions.SimpleKey). Namun, ia cenderung menjaga item yang memiliki nilai kunci partisi yang sama berdekatan dan diurutkan berdasarkan nilai atribut kunci sortir. Kumpulan item yang memiliki nilai kunci partisi yang sama disebut koleksi item. Koleksi item dioptimalkan untuk pengambilan rentang item yang efisien dalam koleksi. Jika tabel Anda tidak memiliki indeks sekunder lokal, DynamoDB akan secara otomatis membagi koleksi item Anda menjadi partisi sebanyak yang diperlukan untuk menyimpan data dan menyajikan throughput baca dan tulis.

Untuk menulis item ke tabel, DynamoDB menghitung nilai hash kunci partisi untuk menentukan partisi mana yang harus berisi item tersebut. Di partisi itu, beberapa item mungkin memiliki nilai kunci partisi yang sama. Jadi DynamoDB menyimpan item tersebut di antara item lainnya dengan kunci partisi yang sama, dalam urutan menaik berdasarkan kunci urutan.

Untuk membaca item dari tabel, Anda harus menentukan nilai kunci partisi dan nilai kunci urutan. DynamoDB menghitung nilai hash kunci partisi, menghasilkan partisi tempat item dapat ditemukan.

Anda dapat membaca beberapa item dari tabel dalam satu operasi (`Query`) jika item yang Anda inginkan memiliki nilai kunci partisi yang sama. DynamoDB mengembalikan semua item dengan nilai kunci partisi tersebut. Secara opsional, Anda dapat menerapkan ketentuan pada kunci urutan sehingga hanya mengembalikan item dalam rentang nilai tertentu.

Misalkan tabel *Pets* memiliki kunci primer komposit yang terdiri dari *AnimalType*(kunci partisi) dan *Nama* (kunci sortir). Diagram berikut menunjukkan DynamoDB menulis item dengan nilai kunci partisi *Dog* dan nilai kunci urutan *Fido*.

![\[DynamoDB menyimpan item dengan kunci partisi komposit dan mengurutkan item menggunakan nilai atribut kunci sortir.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/HowItWorksPartitionKeySortKey.png)


Untuk membaca item yang sama dari tabel *Pets*, DynamoDB menghitung nilai hash dari *Dog*, menghasilkan partisi tempat item tersebut disimpan. DynamoDB kemudian memindai nilai atribut kunci urutan hingga menemukan *Fido*.

Untuk membaca semua item dengan *Dog*, Anda dapat mengeluarkan `Query` operasi tanpa menentukan kondisi kunci pengurutan. *AnimalType* Secara default, item dikembalikan dalam urutan penyimpanannya (yaitu, dalam urutan naik oleh kunci urutan). Atau, Anda dapat meminta urutan menurun.

Untuk mengkueri hanya beberapa item *Dog*, Anda dapat menerapkan syarat untuk kunci urutan (misalnya, hanya item *Dog* di mana *Name* dimulai dengan huruf yang berada dalam rentang `A` hingga `K`).

**catatan**  
Dalam tabel DynamoDB, tidak ada batasan atas jumlah nilai kunci urutan yang berbeda per nilai kunci partisi. Jika Anda perlu untuk menyimpan jutaan item *Dog* di tabel *Pets*, DynamoDB akan mengalokasikan cukup penyimpanan untuk menangani persyaratan ini secara otomatis.