Apakah DynamoDB mendukung transaksi?
Ya. DynamoDB mendukung transaksi ACID lewat TransactWriteItems dan TransactGetItems. Setiap transaksi mengelompokkan hingga 100 aksi di satu atau beberapa tabel dalam akun dan Region yang sama menjadi satu operasi semua-atau-tidak-sama-sekali, dengan batas ukuran gabungan 4 MB. Kalau satu aksi gagal, tidak ada satu pun yang diterapkan.
Dua API transaksi
TransactWriteItems— mem-batch aksiPut,Update,Delete, danConditionChecksecara atomik. Sinkron dan idempoten.TransactGetItems— membaca beberapa item dalam satu snapshot atomik yang konsisten.
Aturan dan batasnya
- Hingga 100 item per transaksi, di satu atau beberapa tabel.
- Semua tabel harus berada di akun dan Region yang sama.
- Ukuran item gabungan tidak boleh melebihi 4 MB.
- Anda tidak bisa menyasar item yang sama dua kali dalam satu transaksi.
- Pada global table, jaminan ACID hanya berlaku di dalam Region tempat transaksi itu dijalankan — perubahan direplikasi ke Region lain setelah commit, dan global table dalam mode multi-Region strong consistency (MRSC) sama sekali tidak mendukung API transaksi.
Berapa harga atomisitas
Item yang sama, dua jalur, dengan ReturnConsumedCapacity diaktifkan:
PutItem, one 920-byte item ConsumedCapacity 1
TransactWriteItems, the same single Put ConsumedCapacity 2Penulisan transaksional setara dua kali kapasitas penulisan biasa, dan pembacaan transaksional setara dua kali pembacaan. Secara berkelanjutan, pelipatgandaan itulah seluruh kompromi-nya: 100 penulisan per detik atas item 1 KB berbiaya $164.25 sebulan di us-east-1 on-demand, atau $328.50 kalau setiap satunya melewati sebuah transaksi. Kalkulator harga punya setelan konsistensi transaksional persis untuk perbandingan ini.
Percobaan ulang yang tidak berlaku dua kali
Transaksi yang time out mungkin saja tetap ter-commit, jadi bagian berbahayanya adalah percobaan ulangnya, bukan transaksinya. ClientRequestToken adalah yang membuat percobaan ulang itu aman. Mengirim transaksi ADD counter :one yang sama dua kali di bawah satu token:
TransactWriteItems (token order-4711) 200
TransactWriteItems (token order-4711) 200
GetItem counter {"N": "1"}Kedua panggilan berhasil dan penghitungnya bergerak sekali. Token itu tetap berlaku selama 10 menit setelah permintaan pertama selesai; pakai ulang setelahnya dan panggilan kedua menjadi transaksi baru, jadi penghitungnya bergerak lagi. Pakai ulang di dalam jendela itu dengan parameter lain yang berubah dan DynamoDB mengembalikan IdempotentParameterMismatch.
Transaksi vs batch
Tidak seperti BatchWriteItem, yang menerapkan setiap item sendiri-sendiri (sebagian penulisan bisa mendarat sementara yang lain gagal), sebuah transaksi bersifat semua-atau-tidak-sama-sekali — pakai itu ketika penerapan parsial akan merusak data Anda.
Pelajari lebih lanjut
Pelajari polanya di transaksi DynamoDB, dan bangun condition expression yang mereka andalkan dengan Expression Builder. Unduh DynoTable untuk men-stage suntingan Item Anda sebagai diff yang bisa ditinjau dan meng-commit semuanya bersama sebagai satu batch transaksional.
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 jendela idempotensi 10 menit diperiksa ulang 2026-07-28.
Nilai ConsumedCapacity dan pemutaran ulang idempoten itu direproduksi 2026-07-28 terhadap DynamoDB Local 3.3.0 via @aws-sdk/client-dynamodb 3.1095.0; biaya bulanan dihitung dari harga write request unit on-demand us-east-1 dalam tabel harga AWS yang kami sinkronkan.