Veritabanı dünyasında sıkça duyduğumuz ACID kısaltması, aslında veri bütünlüğünü ve güvenilirliğini garanti altına alan dört temel prensibi temsil ediyor. 1983 yılında Andreas Reuter ve Theo Härder tarafından ortaya atılan bu kavram, özellikle finansal sistemler gibi veri tutarlılığının kritik olduğu alanlarda hayati öneme sahip. Peki ACID tam olarak nedir ve neden bu kadar önemlidir? Gelin bu dört prensibi derinlemesine inceleyelim.
Atomiklik (Atomicity): Bir işlemin ya tamamen başarılı olması ya da hiç olmaması gerektiğini ifade eder. Yani bir veritabanı işlemi sırasında oluşabilecek herhangi bir hata durumunda, o ana kadar yapılan tüm değişiklikler geri alınır. Örneğin bir banka havalesi işleminde, paranın bir hesaptan çekilip diğerine yatırılması tek bir atomik işlem olarak ele alınır. Eğer bu işlemin herhangi bir adımı başarısız olursa, tüm işlem iptal edilir ve hesaplar eski hallerine döner. Bu sayede veri bütünlüğü korunur.
Tutarlılık (Consistency): Veritabanında tanımlanan kuralların (kısıtlamalar, tetikleyiciler vb.) her işlemden sonra geçerli olmasını sağlar. Yani bir işlem tamamlandığında, veritabanı her zaman tutarlı bir durumda olmalıdır. Örneğin bir hesabın bakiyesinin negatif olamayacağı kuralı varsa, bir işlem bu kuralı ihlal ediyorsa gerçekleştirilmez. Bu prensip, veri bütünlüğünü korumak için kritik öneme sahiptir.
Nasıl Önlem Alınmalı?
İzolasyon (Isolation): Aynı anda gerçekleşen birden fazla işlemin birbirini etkilememesini sağlar. Her işlem, diğer işlemlerden bağımsız olarak çalışıyormuş gibi davranır. Örneğin iki kullanıcı aynı anda aynı hesabı güncellemeye çalışsa bile, her biri diğerinden etkilenmeden işlemini tamamlar. Bu, veritabanının performansını ve güvenilirliğini artırır.
Detaylar ve Etkileri
Dayanıklılık (Durability): Bir işlem başarıyla tamamlandığında (COMMIT yapıldığında), yapılan değişikliklerin kalıcı olduğunu garanti eder. Sistem çökse, elektrik gitse bile bu değişiklikler kaybolmaz. Veritabanı, bu değişiklikleri kalıcı olarak saklar ve herhangi bir hata durumunda kurtarabilir.
Pratik bir örnekle ACID prensiplerini daha iyi anlayalım. PostgreSQL kullanarak basit bir banka hesabı tablosu oluşturalım. İlk olarak 'contas' adında bir tablo oluşturup iki kullanıcı ekleyelim. Ardından bir transfer işlemi başlatalım: Fulano'dan 50 birim çekip Ciclano'ya 30 birim ekleyelim. Bu işlemi BEGIN ile başlatıp COMMIT ile bitirdiğimizde, atomiklik sayesinde tüm adımlar başarılı olursa değişiklikler kalıcı olur. Eğer bir hata oluşursa ROLLBACK ile tüm değişiklikler geri alınır. Ayrıca tutarlılık için bir kısıtlama ekleyelim: bakiye asla negatif olamaz. Bu kuralı ihlal eden bir işlem yapılmaya çalışıldığında PostgreSQL hata verir ve işlemi reddeder. İzolasyonu test etmek için iki terminal açıp birinde işlemi COMMIT yapmadan bırakalım, diğer terminalde sorgu yaptığımızda henüz güncellenmemiş veriyi göreceğiz. COMMIT yapıldıktan sonra ise güncel veri görünecektir. Dayanıklılık ise COMMIT sonrası verinin kalıcı olduğunu garanti eder. Bu prensipler sayesinde veritabanı işlemleri güvenilir ve tutarlı bir şekilde gerçekleştirilir.
Kaynak: dev.to