Skip to content
← Home

Transaction ve ACID, sade kelimelerle

June 14, 2026

Finansa yakın çalışınca "transaction" kelimesi sürekli geçiyor, hemen ardından da ACID.

Transaction, ya hep ya hiç olması gereken bir grup veritabanı işlemidir. Klasik örnek: A hesabından B hesabına para transferi. Bu iki adımdır — A'dan düş, B'ye ekle. İlki başarılı olup ikincisi başarısız olursa, para öylece buharlaşır. Transaction, ya ikisinin de olmasını ya da hiçbirinin olmamasını garanti eder.

ACID, veritabanının transaction'lar hakkında verdiği dört sözdür:

  • Atomicity (Atomiklik) — ya hep ya hiç. Yarım kalmış transfer olmaz.
  • Consistency (Tutarlılık) — veri geçerli kalır; kurallar (örn. "bakiye negatif olamaz") bozulmaz.
  • Isolation (İzolasyon) — aynı anda çalışan iki transaction birbirine karışmaz. Transfer, başkasının yarım işini değil, temiz bir resmi görür.
  • Durability (Kalıcılık) — bir kez onaylandıktan (commit) sonra, sunucu bir saniye sonra elektriği kesse bile kayıtlı kalır.

Spring'de bunu genelde elle yazmazsın. İşi tek bir anotasyona sararsın:

@Transactional
public void transfer(Long from, Long to, BigDecimal amount) {
    debit(from, amount);
    credit(to, amount);
}

İçeride bir şey hata fırlatırsa, Spring tüm işlemi geri alır (rollback) — A hesabı, başarıyla göndermediği parayı hiç kaybetmez.

Özetle: transaction aslında veritabanıyla değil, dünyayı bozuk bir ara durumda bırakmamakla ilgili. Para kaybolması üzerine bir kez düşünmek zorunda kalınca, ACID bir kısaltma olmaktan çıkıp sağduyuya dönüşüyor.