Apakah DynamoDB patuh ACID?
Ya. DynamoDB mendukung transaksi ACID lewat API TransactWriteItems dan TransactGetItems. Keduanya mengelompokkan hingga 100 aksi menjadi satu operasi semua-atau-tidak-sama-sekali dengan jaminan atomicity, consistency, isolation, dan durability di dalam satu Region AWS. Penulisan satu item juga atomik dan durabel, tetapi ACID lintas banyak item butuh API transaksi.
Apa arti ACID di sini
Sebuah transaksi DynamoDB menerapkan semua aksinya atau tidak satu pun (atomicity), meninggalkan data dalam keadaan valid (consistency), terisolasi dari transaksi yang bersamaan, dan ter-commit secara durabel begitu ia mengembalikan sukses. Jaminan ini berlaku di dalam Region AWS tempat API transaksi itu dipanggil.
API transaksinya
TransactWriteItems— penulisan sinkron dan idempoten yang mem-batch aksiPut,Update,Delete, danConditionCheck.TransactGetItems— pembacaan atomik dan konsisten atas beberapa item.
Anda tidak bisa menyasar item yang sama dua kali dalam satu transaksi.
Batasnya 100, bukan 25
Referensi API menyebut TransactWriteItems "groups up to 100 action requests" dan bahwa "the aggregate size of the items in the transaction cannot exceed 4 MB" (diambil 2026-07-28). Angkanya adalah 25 sebelum 2022, dan angka usang itu masih cukup luas diulang sehingga layak diperiksa terhadap API alih-alih terhadap sebuah blog post.
Transaksi berisi 100 aksi diterima. Yang berisi 101 ditolak:
ValidationException: Member must have length less than or equal to 100Perhatikan apa yang tidak ada dalam pesan itu: kata "transaction". Ia keluhan generik soal panjang array, jadi ia tidak akan muncul dalam pencarian log untuk error transaksi. API batch tidak semalu itu. BatchGetItem dengan 101 key mengembalikan Too many items requested for the BatchGetItem call, dan BatchWriteItem dengan 26 mengembalikan kalimat yang sama dengan namanya sendiri di dalamnya.
Menyasar satu item dua kali juga gagal, bahkan ketika masing-masing aksinya akan berhasil sendirian:
ValidationException: Transaction request cannot include multiple operations on one itemItulah yang menjerat kode yang membangun daftar aksi dari loop atas event masuk tanpa lebih dulu melakukan deduplikasi berdasarkan key.
Transaksi juga menagih dua kali lipat. Menulis 100 item berukuran 1 KB secara transaksional mengonsumsi 200 unit tulis dibanding 100 untuk item yang sama yang ditulis satu per satu, jadi atomisitas punya harga bahkan ketika tak ada yang gagal.
Bagaimana dengan global table?
Sebuah transaksi bersifat ACID hanya di Region tempat ia dipanggil. Pada global table yang memakai mode default multi-Region eventual consistency (MREC), penulisan transaksional tidak direplikasi sebagai satu kesatuan — Region lain bisa sesaat mengamati transaksi yang baru sebagian tereplikasi selagi perubahannya merambat. Global table yang dikonfigurasi untuk multi-Region strong consistency (MRSC) sama sekali tidak mendukung API transaksi.
Pelajari lebih lanjut
Pelajari cara memodelkan ini dengan aman di transaksi DynamoDB, dan bangun condition expression yang dibutuhkannya dengan Expression Builder. Cobalah terhadap tabel Anda sendiri — unduh DynoTable.
Referensi
- Amazon DynamoDB Transactions: How it works — Amazon DynamoDB Developer Guide
- TransactWriteItems — Amazon DynamoDB API Reference
- How DynamoDB global tables work — Amazon DynamoDB Developer Guide
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas; batas 100 aksi dan 4 MB diambil ulang dari referensi API pada 2026-07-28.
Penolakan di atas direproduksi 2026-07-28 terhadap DynamoDB Local 3.3.0 (amazon/dynamodb-local:latest) via @aws-sdk/client-dynamodb 3.1095.0. Setiap string yang dikutip adalah keluaran engine apa adanya.