BASE ve ACID Kavramları
Merhaba arkadaşlar, daha önce sizlere cap teoreminden bahsetmiştim, bugün de yine veritabanı ve sistem tasarımı yaklaşımlarından ACID,BASE sistemlerden bahsetmeye çalışacağım.
Base
Base prensibi dağıtık sistemlerde anında tutarlılık (Consistency) beklenmeyen kullanılabilirliğin ve esnekliğin (availability — partition tolerance) ön planda olduğu durumlarda tercih edilir. Fakat burada tutarlılık sonradan sağlanır. (bkz Eventual Consistency)
Örnek: sosyal medya platformlarında ki timeline yapısı
Basically Available
Cap teoreminde yer alan availability şartını sağlar yani basitçe kullanıcılar tarafından her zaman eşzamanlı erişilebilirliği anlamına gelir.
Soft State
Bunu aslında geçiş durumu gibi ifade edebiliriz. Sistem dışarıdan bir tetikleyici olmasa da zaman içinde değişebilir, yalnızca tüm işlemler bittiğinde sonuçlanır. Örneğin youtube da ki beğeni sayısı kısmı zamanla güncellenebilir.
Eventally Consistent
Bu konu için detaylı açıklama olan yukarıda verdiğim linki burada tekrarlayayım fakat basitçe anlatmak gerekirse eşzamanlı düzenlemeler tamamlandığında kaydın tutarlı olacağı anlamına gelir, bu noktada sistem soft stateden çıkmış olur.
ACID
ACID yaklaşımı basitçe tutarlılık ve güvenilirlik sunar, özellikle veri tutarlılığın garanti edilmesi gereken yerlerde, transactional işlemlerde tercih edilir. Örnek : Finansal işlemler
Atomicity (Bölünmezlik)
Bir işlem ya tamamıyla gerçekleşir, ya tamamıyla gerçekleşmez. Bir transaction içinde ya bütün işlemler gerçekleşir ya hiç biri gerçekleşmez. Yani bir transaction daha ufak parçalara bölünerek bu parçaların gerçekleşmesi beklenemez, bu transaction işlemi bir bütündür ve bölünemez.
Consistency (Tutarlılık)
Kısaca veri tutarlılığını sağlar.
Isolation (izolasyon — Yalıtım)
Eş zamanlı işlemler birbirlerinden bağımsız olmalı ve bir işlem diğer işlemlerden etkilenmemelidir, bunun sağlanması için farklı lock mekanizmaları ve isolation yaklaşımları vardır.
Durability (Dayanıklılık)
Basitçe veri tabanının tüm kayıtları tutmasını ve ağ, işlem hataları olsa bile veri kaydedildikten sonra sistemde olacağını garanti etmesini sağlar. Yani bir işlem tamamlandıysa o veri artık sisteme kaydedilmiştir ve bu verinin sistemde olduğunu garanti etmektedir.
Toparlamak gerekirse veri güvenliği, tutarlılık gerekiyorsa ACID (Banka), esneklik, ölçeklenebilirlik, performans gerekiyorsa BASE(E-Ticaret, sosyal medya) yaklaşımları tercih edilebilir.
Umarım faydalı olmuştur, kalın sağlıcakla … 🙂
Kaynaklar
https://www.geeksforgeeks.org/eventual-consistency-in-distributive-systems-learn-system-design/
https://medium.com/@berktorun.dev/base-acid-ve-cap-veritaban%C4%B1-yakla%C5%9F%C4%B1mlar%C4%B1-ce5d329b8d7e
http://cagataykiziltan.net/cap-teoremi-acid-rdbms-ve-nosql-cozumleri-iliskisi/
https://aws.amazon.com/tr/compare/the-difference-between-acid-and-base-database/