Apakah DynamoDB itu database relasional?
Bukan. DynamoDB bukan database relasional — ia adalah penyimpanan key-value dan dokumen NoSQL. Tidak ada tabel dengan schema tetap, tidak ada foreign key, dan tidak ada join. Anda memodelkan data di sekitar pola akses aplikasi Anda dan mendenormalisasi, alih-alih menormalisasi ke banyak tabel terkait seperti yang Anda lakukan di database relasional (SQL). Kalau Anda merindukan alur kerja relasional, DynoTable mengembalikan sebagiannya di sisi klien: SQL Workbench yang menjalankan JOIN dan GROUP BY sungguhan, serta Smart Table yang menggabungkan tabel secara visual.
Mengapa ia bukan relasional
Database relasional menegakkan schema, menormalisasi data ke banyak tabel, lalu menggabungkannya saat pembacaan. DynamoDB melakukan sebaliknya: ia menyimpan item tanpa schema dan mengharapkan Anda melakukan pra-join dengan menduplikasi atau menyematkan data terkait.
Apa yang menggantikan fitur relasional
- Join → denormalisasi dan single-table design.
- Tabel ternormalisasi → koleksi item yang dikelompokkan di bawah satu partition key.
- SQL ad-hoc → Query dan Scan berbasis key, atau PartiQL (subset yang kompatibel dengan SQL, tetap tanpa join).
Omong-omong, PartiQL tidak menutup celah itu. Parser-nya menolak SELECT dua tabel dan menolak GROUP BY, keduanya sebelum membaca apa pun; penolakan persisnya dikutip di apakah DynamoDB mendukung join dan apakah DynamoDB mendukung SQL.
Berapa harga sebenarnya dari denormalisasi
Pertukarannya biasanya digambarkan sebagai "duplikasi data alih-alih melakukan join", yang terdengar seperti keputusan penyimpanan. Sebenarnya itu keputusan tentang penulisan dan atomisitas, dan justru bagian itulah yang disembunyikan mesin relasional dari Anda.
Ambil satu pelanggan dengan 5.000 pesanan, lalu pelanggan itu mengubah nama tampilannya. Dalam schema relasional itu satu UPDATE terhadap satu baris, dan setiap join langsung mengambil nilai barunya. Setelah didenormalisasi ke DynamoDB, namanya hidup di seluruh 5.000 item pesanan, jadi penggantian nama itu berarti 5.000 penulisan item: 5.000 write unit, sekitar $0.003 pada on-demand us-east-1 dengan 1 KB per item.
Uangnya bukan apa-apa. Masalahnya, itu tidak mungkin menjadi satu operasi. TransactWriteItems dibatasi 100 aksi, jadi 5.000 item berarti setidaknya 50 transaksi terpisah, dan tidak ada isolasi di antara mereka. Selama fan-out itu berjalan, data Anda sendiri tidak sepakat dengan dirinya sendiri, dan pembacaan mana pun yang mendarat di tengah jalan melihat campuran nama lama dan baru.
Database relasional membelikan Anda persis itu: satu perubahan atomik pada satu salinan otoritatif. Melepaskannya adalah harga tiket masuk yang sesungguhnya, dan itulah sebabnya "atribut mana yang diduplikasi" layak mendapat perhatian desain lebih besar daripada atribut mana yang diindeks.
Pelajari lebih lanjut
Baca cara memodelkan data di DynamoDB dan single-table design. Unduh DynoTable untuk menjelajahi model data Anda secara visual — dan menjalankan query JOIN/GROUP BY bergaya relasional atasnya dengan SQL Workbench.
Referensi
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
- Core components of Amazon DynamoDB — Amazon DynamoDB Developer Guide
- PartiQL — a SQL-compatible query language for Amazon DynamoDB — Amazon DynamoDB Developer Guide
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas; batas 100 aksi per transaksi diambil ulang dari referensi API pada 2026-07-28.