DynamoDB Single-Table Design Tool
Masukkan entitas Anda dan bagaimana Anda perlu membacanya — perencana menyarankan template key PK/SK berprefiks-entitas, mempratinjau item collection, dan menambahkan GSI hanya di tempat tabel dasar tidak dapat melayani sebuah pola.
Dari pola akses ke skema key
Single-table design dimulai dari pembacaan, bukan dari entitas: alih-alih menormalisasi tabel dan melakukan join saat query, Anda mendaftar setiap cara aplikasi perlu mengambil data — mengambil satu user berdasarkan ID, mendaftar order milik user dari yang terbaru, menemukan satu akun berdasarkan email — dan membentuk key sehingga masing-masing menjadi satu GetItem atau Query. Setiap pola yang tidak dapat dijawab tabel dasar menghabiskan satu index bagi Anda, dan trade-off itu seharusnya terlihat sebelum Anda membuat tabel.
Perencana ini membuat trade-off itu eksplisit. Ia menerapkan aturan single-table standar secara deterministik — composite key berprefiks-entitas, item collection untuk pola one-to-many, GSI terbalik atau bercakupan-atribut untuk sisanya — dan di tempat sebuah pola tidak dapat dilayani dengan bersih, ia mengatakannya alih-alih berpura-pura. Tabel item-contoh menunjukkan bagaimana baris yang dihasilkan benar-benar berada bersebelahan di dalam sebuah partisi.
Outputnya adalah dokumen JSON CreateTable biasa dengan atribut key bertipe-string generik — tidak ada yang spesifik-tool untuk diurai belakangan — plus petunjuk biaya yang menggunakan kembali pembulatan 4 KB read / 1 KB write persis yang dipakai kalkulator harga dan ukuran Item kami.
Baru mengenal konsepnya, atau tidak yakin pendekatan ini cocok dengan workload Anda? Panduan single-table design kami menjelaskan idenya dari prinsip pertama, dan kapan TIDAK menggunakannya membahas kontra-kasus yang jujur. Setelah skema ditetapkan, susun request sebenarnya di DynamoDB Query Builder atau perkirakan seluruh tagihan bulanan dengan Kalkulator Harga DynamoDB.
Pertanyaan yang sering diajukan
Apa itu single-table design di DynamoDB?
Sebuah pendekatan pemodelan di mana semua tipe entitas sebuah aplikasi berbagi satu tabel dengan atribut partition key dan sort key generik (PK/SK). Item yang berkaitan berbagi partition key sehingga satu Query mengambil semuanya sekaligus — desainnya didorong oleh pola akses Anda alih-alih oleh bentuk entitas yang dinormalisasi.
Bagaimana perencana ini menentukan desain key?
Dengan aturan yang tetap dan terpublikasi — deterministik, bukan generatif. Setiap entitas dimulai sebagai akar dari item collection-nya sendiri dengan key berprefiks-entitas; pola list-children pertama memindahkan anak ke partisi induknya pada sort key komposit; pencarian berdasarkan atribut lain, induk kedua, dan pola list-everything menjadi saran GSI; dan pola yang tidak dapat dilayani aturan dengan bersih ditandai sebagai tidak didukung alih-alih menerima desain karangan.
Kapan sebuah pola akses membutuhkan global secondary index?
Saat tata letak key tabel dasar tidak dapat menjawabnya: mengambil anak yang telah dipindahkan berdasarkan ID-nya sendiri, mendaftar item yang sama di bawah induk kedua, menemukan sebuah item berdasarkan atribut non-key seperti email, atau mendaftar setiap item dari satu tipe. Masing-masing me-rekey data yang sama, yang hanya dapat dilakukan oleh sebuah index — perencana menyarankan satu per bentuk key dan menggunakannya kembali di seluruh pola yang berbagi bentuk itu.
Bagaimana GSI memengaruhi biaya DynamoDB?
Setiap GSI memelihara salinan terproyeksinya sendiri dari item yang dicakupnya, sehingga setiap penulisan tabel juga menghabiskan write capacity pada setiap GSI yang memproyeksikan item itu, dan penyimpanan ditagih per salinan. Kartu biaya menampilkan estimasi tabel dasar dan satu dengan replikasi penulisan GSI disertakan, menggunakan pembulatan 4 KB read / 1 KB write yang sama seperti kalkulator harga dan ukuran Item kami.
Apakah perencana mengunggah model data saya ke mana pun?
Tidak. Halamannya statis dan desainnya dihitung sepenuhnya di browser Anda — nama entitas, atribut ID, dan pola akses tidak pernah sampai ke server. Satu-satunya cara sebuah desain keluar dari halaman adalah URL “Salin tautan”, yang mengemasnya ke dalam tautan sehingga berbagi tetap menjadi tindakan yang disengaja.