Merhabalar Biraz uzunca bir zaman sonra tekrar sizlere ufaktan bilgiler vermeye devam ediyor olacağım :(.
ACID kavramı;
ACID kavramı temel olarak veri tabanı sistemleri için kullanılan bir standart diyebiliriz ki bence fazlası var eksiği yok 🙂
ACID aslında kavramların baş harflerinin oluşturduğu bir kelime topluluğudur.
A(Atomicity) Bütünlük
C(consistency)Tutarlılık
I(Isolation)Bağımsızlık
D(Durability)Dayanıklılık
Bu konunun tam olarak anlaşılması için banka örneği vermek istiyorum. Bildiğiniz üzere herhangi bir kişiye para göndermek istediğinizde temelde para sizin hesaptan çıkar göndereceğiniz kişinin hesabına geçer. Aslında bu kadar basit bir olay olan bu süreç tam da bu kadar basit değildir.
A(Atomicity) Bütünlük; Banka kanadında işler şu şekilde çalışmaya başlar; sizin hesabınızda havale/eft yapmadan önce 100tl olduğunu var sayarsak siz 50tl sini kardeşinize göndereceksiniz; bu durumda sizin bakiyeniz 100-50’den 50 olarak database üzerine yazılmakta ve karşı bankaya paranın gönderildiği ve o bankadan onay dönüşü olduktan sonra sizin hesap son bakiyesi 50 tl olarak kalmalıdır. bu durumda diğer bankadan bilgi gelmeden yazılmayacaktır. işte bu adımların hepsi BÜTÜNÜ tamamlanmadan para transfer işlemi yapılmamış olacaktır ki bu şekilde yapılmaktadır.
C(consistency)Tutarlılık; yukarıda yapılan işlemin sonrasında her işlem adımları tam ve eksiksiz yerine gelmelidir. Yani paranın bakiyenin azalması yeni bir kayıt olarak bir alana bu bilginin yazılması işlemi yani veri tanbanı kısmında foreignkey,primarykey vs… hepsinin işlemlerinin yapılmış ve sonuçlanmış olması gereklidir.
I(Isolation)Bağımsızlık; siz para transferi yaparken pek tabi aynı anda bir çok işlem yapılıyor olabilir. db üzerinde insert update işlemleri farklı kullanıcılar tarafından yapılıyor olabilir. bu işlemlerin bir birinden bağımsız ve tutarlı şekilde yapılması olayıdır bağımsızlık.yeni hiçbir işlem başka bir işlemi bekletmeyecek ve bozmayacak şekilde ayrı çalışmaktadır.
D(Durability)Dayanıklılık; bu işlemlerin yapılması aşamasında olası bir hata durumunda sistem tamamlanmamış kayıtların tutulmasını ve/veya tutulmamasının kararını verecek durumdadır. Şöyle ki bu durumda tamamlanmamış verilerin sisteme yansıtılmaması gereklidir.
Bu durumlar ne gibi sıkıntılar getiriyor bir sonraki kısımda bunlar hakkında dirtydata vs. konularını inceliyor olacağız.
Not: Yazılarımda biraz da bilinçli olarak soru işaretleri bırakıyorum. Bu sizin konu hakkında araştırmanız içindir.