Veritabanlarında veri bütünlüğünü ve güvenilirliği sağlamak için ACID prensipleri büyük önem taşır. Bu yazıda, ACID prensiplerini detaylıca inceleyerek her birinin veritabanı işlemlerine nasıl katkı sağladığını anlatacağım. Eğer güçlü ve hatasız bir sistem geliştirmek istiyorsan, ACID prensiplerini bilmen şart!
Daha önce de SOLID Prensiplerini anlatmıştım. O konu hakkında da SOLID Prensipleri ile Daha İyi Yazılım Tasarımı adlı yazımdan bilgi alabilirsin.
İçerik
ACID Nedir?

ACID, veritabanı işlemlerinin güvenilir olmasını sağlayan dört temel özelliği ifade eder:
- Atomicity (Atomiklik) – İşlemler ya tamamen gerçekleşir ya da hiç gerçekleşmez.
- Consistency (Tutarlılık) – Veriler her zaman geçerli ve doğru kalır.
- Isolation (İzolasyon) – Aynı anda çalışan işlemler birbirini etkilemez.
- Durability (Kalıcılık) – Tamamlanan işlemler, sistem çökse bile kaybolmaz.
Şimdi her bir prensibi tek tek inceleyelim.
1. Atomiklik (Atomicity)
Atomiklik, bir işlemin ya tamamen gerçekleşmesini ya da hiç gerçekleşmemesini garanti eder. Eğer bir işlem tamamlanmadan hata oluşursa, tüm değişiklikler geri alınır.
Örnek: Banka Transferi
Bir hesaptan diğerine para transfer ettiğinde, para gönderici hesaptan düşer ve alıcı hesaba eklenir. Eğer sistem, parayı gönderen hesaptan düşüp alıcıya ekleyemezse, hesaplar arasında dengesizlik oluşur. İşte bu yüzden atomiklik ilkesi gereklidir.
Örnek Uygulama
Connection conn = DriverManager.getConnection(url, user, password);
try {
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
stmt.executeUpdate("UPDATE hesaplar SET bakiye = bakiye - 100 WHERE id = 1");
stmt.executeUpdate("UPDATE hesaplar SET bakiye = bakiye + 100 WHERE id = 2");
conn.commit();
} catch (Exception e) {
conn.rollback();
e.printStackTrace();
} finally {
conn.close();
}
Bu kod, işlemi atomik hale getirir. Eğer bir hata oluşursa rollback()
fonksiyonu tüm değişiklikleri geri alır.
2. Tutarlılık (Consistency)
Tutarlılık, verilerin her zaman doğru ve kurallara uygun olmasını sağlar. Eğer bir işlem veritabanının bütünlüğünü bozuyorsa, işlem başarısız olur.
Örnek: Stok Yönetimi
Bir müşteri sipariş verdiğinde, sistem stoğu otomatik olarak günceller. Eğer sipariş edilen ürün stokta yoksa, işlem gerçekleştirilmez. Böylece tutarsız bir durum oluşmaz.
3. İzolasyon (Isolation)
İzolasyon, aynı anda çalışan işlemlerin birbirini etkilemesini engeller. Bu sayede her işlem, diğer işlemler tamamlanana kadar kendi başına çalışır.
Örnek: Banka Bakiye Güncelleme
Bir müşteri hesabını kontrol ederken, başka bir müşteri aynı hesaba para yatırıyorsa, bakiye bilgisi doğru görünmelidir. Eğer izolasyon sağlanmazsa, müşteri yanlış bakiye bilgisi görebilir.
İzolasyon Seviyesi Ayarlama
conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
Bu kod, işlemlerin birbirinden tamamen bağımsız çalışmasını sağlar.
4. Kalıcılık (Durability)
Kalıcılık, başarılı bir işlemin sistem çökse bile kaybolmamasını garanti eder. İşlem tamamlandıktan sonra veriler güvenli bir şekilde saklanır.
Örnek: E-Ticaret Siparişleri
Bir müşteri sipariş verdiğinde, elektrik kesintisi olsa bile sipariş bilgileri kaybolmaz. Sipariş tamamlandıktan sonra veritabanına yazılır ve güvence altına alınır.
Kalıcılığı Sağlama
conn.commit();
Bu işlem, verinin veritabanında kalıcı hale gelmesini sağlar.
Sonuç
ACID prensipleri, veritabanı işlemlerinin güvenli, tutarlı ve hatasız olmasını sağlar. Eğer sağlam bir sistem geliştirmek istiyorsan, bu prensipleri mutlaka uygulamalısın.
Bu konu hakkında düşüncelerin neler? Aşağıya yorum bırakabilir veya sorularını paylaşabilirsin! 😊
Database Security hususu için de çok faydalı bir yazı olmuş. Teşekkür ederiz Ali Bey.
Çok teşekkürler Alperen. Bunu aslında DB security’den ziyade data integrity ve data security kapsamında değerlendirmek daha doğru.
Umarım yararlı olmuştur.
Sağlıcakla