Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Menggunakan sharding tulis untuk mendistribusikan beban kerja secara merata di tabel DynamoDB Anda

Mode fokus
Menggunakan sharding tulis untuk mendistribusikan beban kerja secara merata di tabel DynamoDB Anda - Amazon DynamoDB

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

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

Salah satu cara untuk mendistribusikan penulisan dengan lebih baik di seluruh ruang kunci partisi di Amazon DynamoDB adalah dengan memperluas ruang tersebut. Hal ini dapat dilakukan dengan berbagai cara. Anda dapat menambahkan angka acak pada nilai kunci partisi untuk mendistribusikan item di antara partisi. Atau, Anda dapat menggunakan angka yang dihitung berdasarkan sesuatu yang Anda kueri.

Pembagian menggunakan akhiran acak

Salah satu strategi untuk mendistribusikan beban lebih merata di seluruh ruang kunci partisi adalah dengan menambahkan angka acak ke akhir nilai kunci partisi. Kemudian Anda mengacak penulisan di ruang yang lebih besar.

Misalnya, untuk kunci partisi yang menunjukkan tanggal hari ini, Anda dapat memilih nomor acak antara 1 dan 200 dan menggabungkannya sebagai akhiran untuk tanggal. Ini menghasilkan nilai kunci partisi seperti 2014-07-09.1, 2014-07-09.2, dan sebagainya, melalui 2014-07-09.200. Karena Anda mengacak kunci partisi, penulisan ke tabel pada setiap hari tersebar merata di sejumlah partisi. Hal ini menghasilkan paralelisme yang lebih baik dan throughput keseluruhan yang lebih tinggi.

Namun, untuk membaca semua item pada hari tertentu, Anda harus mengkueri item untuk semua akhiran lalu menggabungkan hasilnya. Misalnya, Anda akan terlebih dahulu mengeluarkan permintaan Query untuk nilai kunci partisi 2014-07-09.1. Kemudian mengeluarkan Query lainnya untuk 2014-07-09.2, dan seterusnya, melalui 2014-07-09.200. Terakhir, aplikasi Anda harus menggabungkan hasil dari semua permintaan Query tersebut.

Pembagian menggunakan akhiran terhitung

Strategi pengacakan dapat meningkatkan throughput tulis secara signifikan. Namun, sulit untuk membaca item tertentu karena Anda tidak mengetahui nilai akhiran mana yang digunakan saat menulis item tersebut. Untuk mempermudah membaca item satu per satu, Anda dapat menggunakan strategi yang berbeda. Alih-alih menggunakan angka acak untuk mendistribusikan item di antara partisi, gunakan angka yang dapat Anda hitung berdasarkan sesuatu yang ingin Anda kueri.

Pertimbangkan contoh sebelumnya, yaitu tabel menggunakan tanggal hari ini dalam kunci partisi. Sekarang anggaplah setiap item memiliki atribut OrderId yang dapat diakses, dan Anda sering kali perlu mencari item berdasarkan ID urutan selain tanggal. Sebelum aplikasi Anda menulis item ke tabel, aplikasi Anda dapat menghitung akhiran hash berdasarkan ID urutan dan menambahkannya ke tanggal kunci partisi. Penghitungannya dapat menghasilkan angka antara 1 dan 200 yang terdistribusi cukup merata, mirip dengan yang dihasilkan strategi acak.

Perhitungan sederhana mungkin sudah cukup, seperti produk nilai titik kode UTF-8 untuk karakter dalam ID urutan, modulo 200, + 1. Nilai kunci partisi kemudian akan menjadi tanggal yang digabungkan dengan hasil penghitungan.

Dengan strategi ini, penulisan tersebar merata di seluruh nilai kunci partisi, serta di partisi fisik. Anda dapat dengan mudah melakukan operasi GetItem untuk item dan tanggal tertentu karena Anda dapat menghitung nilai kunci partisi untuk nilai OrderId tertentu.

Untuk membaca semua item pada hari tertentu, Anda masih harus Querysetiap kunci 2014-07-09.N (dengan N adalah 1–200), dan aplikasi Anda kemudian harus menggabungkan semua hasilnya. Manfaatnya adalah Anda menghindari satu nilai kunci partisi "panas" yang mengambil semua beban kerja.

catatan

Untuk strategi yang lebih efisien yang dirancang khusus untuk menangani data deret waktu volume tinggi, lihat Data deret waktu.

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.