DynamoDB ACID uyumlu mu?

Evet. DynamoDB, TransactWriteItems ve TransactGetItems API'leri üzerinden ACID işlemlerini destekler. Bunlar, 100'e kadar eylemi tek bir AWS Bölgesi içinde atomiklik, tutarlılık, yalıtım ve dayanıklılık garantileriyle tek bir ya-hep-ya-hiç işlemde gruplar. Tek öğelik yazmalar da atomik ve dayanıklıdır, ama çok öğeli ACID işlem API'lerini gerektirir.

Burada ACID ne anlama gelir

Bir DynamoDB işlemi ya her eylemi uygular ya da hiçbirini (atomiklik), veriyi geçerli bir durumda bırakır (tutarlılık), eşzamanlı işlemlerden yalıtılmıştır ve başarı döndürdüğünde dayanıklı biçimde işlenmiştir. Bu garantiler, işlem API'sinin çağrıldığı AWS Bölgesi içinde geçerlidir.

İşlem API'leri

  • TransactWriteItemsPut, Update, Delete ve ConditionCheck eylemlerini yığınlayan eşzamanlı, idempotent bir yazma.
  • TransactGetItems — birden çok öğenin atomik, tutarlı bir okuması.

Tek bir işlemde aynı öğeyi iki kez hedefleyemezsiniz.

Sınır 100, 25 değil

API referansı, TransactWriteItems'ın "groups up to 100 action requests" olduğunu ve "the aggregate size of the items in the transaction cannot exceed 4 MB" dediğini belirtiyor (2026-07-28 tarihinde alındı). Bu değer 2022'den önce 25'ti ve o eski sayı hâlâ yeterince yaygın biçimde tekrarlanıyor; dolayısıyla bir blog yazısı yerine API'ye karşı kontrol etmeye değer.

100 eylemli bir işlem kabul edilir. 101 eylemli bir tanesi reddedilir:

ValidationException: Member must have length less than or equal to 100

O mesajın neyi içermediğine dikkat edin: "transaction" sözcüğünü. Bu, genel bir dizi uzunluğu şikâyetidir; dolayısıyla işlem hataları için yapılan bir günlük aramasında çıkmaz. Toplu API'ler bu konuda daha az çekingendir. 101 anahtarlı BatchGetItem, Too many items requested for the BatchGetItem call döndürür ve 26 istekli BatchWriteItem aynı cümleyi kendi adıyla döndürür.

Tek bir öğeyi iki kez hedeflemek de başarısız olur, her eylem tek başına başarılı olacak olsa bile:

ValidationException: Transaction request cannot include multiple operations on one item

Bu, eylem listesini gelen olaylar üzerindeki bir döngüden önce anahtara göre yinelenenleri ayıklamadan kuran kodu yakalayan hatadır.

İşlemler ayrıca iki kat faturalandırır. 1 KB'lık 100 öğeyi işlemsel olarak yazmak 200 yazma birimi tüketir; aynı öğeleri tek tek yazmak ise 100. Yani hiçbir şey başarısız olmasa bile atomikliğin bir bedeli vardır.

Peki ya global tablolar?

Bir işlem yalnızca çağrıldığı bölgede ACID'dir. Varsayılan çoklu bölge nihai tutarlılık (MREC) modunu kullanan global tablolarda işlemsel yazmalar bir bütün olarak çoğaltılmaz — değişiklikler yayılırken başka bir bölge kısa süreliğine kısmen çoğaltılmış bir işlem gözlemleyebilir. Çoklu bölge güçlü tutarlılık (MRSC) için yapılandırılmış global tablolar ise işlem API'lerini hiç desteklemez.

Daha derine inin

Bunları güvenle nasıl modelleyeceğinizi DynamoDB işlemleri sayfasında öğrenin ve ihtiyaç duydukları koşul ifadelerini Expression Builder ile kurun. Kendi tablolarınıza karşı deneyin — DynoTable'ı indirin.

Kaynaklar

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı; 100 eylem ve 4 MB sınırları 2026-07-28 tarihinde API referansından yeniden alındı.

Yukarıdaki reddetmeler 2026-07-28 tarihinde @aws-sdk/client-dynamodb 3.1095.0 üzerinden DynamoDB Local 3.3.0'a (amazon/dynamodb-local:latest) karşı yeniden üretildi. Alıntılanan her dize birebir motor çıktısıdır.

Console olmadan DynamoDB ile çalış

DynamoDB’nin çalıştıramadığı gerçek SQL’i çalıştıran hızlı bir DynamoDB masaüstü istemcisi — JOINs, GROUP BY, toplamalar — görsel düzenleme ve kendi Bedrock anahtarların üzerinde bir yapay zekâ aracısıyla.

30 günlük ücretsiz deneme, kredi kartı yok — ardından süre sınırı olmayan Ücretsiz plan.