Veri tutarlılık yönetiminde ACID ve BASE modellerini kimyadaki asit ve baza benzetebiliriz. Ancak teknik açıdan birbirlerinin doğrudan zıttı değildir. İki yaklaşım, veri yönetiminde farklı tutarlılık ve kullanılabilirlik önceliklerini temsil eder.
ACID veri bütünlüğü ve güçlü tutarlılığı, BASE ise yanıt verilebilir olmayı önemsemektedir. Sistem tasarımında doğru seçim, hataların veya hızın nerede önemli olduğuna bağlıdır.
Bu makalede; CAP Teoremi'ndeki ilkeler etrafında, bu iki kavramı net bir şekilde konumlandırıyoruz.
CAP Teoremi, dağıtık sistemlerde ağ bölünmesi (partition) yaşandığında Consistency (Tutarlılık) ve Availability (Kullanılabilirlik) özelliklerinin aynı anda tam olarak garanti edilemeyeceğini ifade eder. Ağ bölünmesi (partition) yaşadığında, Consistency ve Availability arasında bir tercih yapmak zorunda kalınacaktır.
|
| CAP Teoremin Kriterlerinin Seçimi |
Consistency (Tutarlılık): Bütün kullanıcılar, aynı veriyi görür. Verilerin senkron olduğunu garanti eder.
Availability (Kullanılabilirlik): Sistem, gelen her isteğe bir yanıt döndürür ve hizmet vermeye devam eder. Dönen yanıtın her zaman en güncel veriyi içermesi gerekmez.
Partition Tolerance (Bölünme Toleransı): Sistemde yaşanan ağ bölünmesi, kesinti durumunda bile çalışmaya devam etmesidir. İki farklı veri merkezindeki sunucular birbirini görmüyor ama çalışmaya devam ediyor.
Bu üç özelliği tanıdıktan sonra, ağ bölünmesi gerçekleştiğinde sistemin tutarlılık ile kullanılabilirlik arasında nasıl bir tercih yapacağını anlamamız gerekir. Çünkü ağ kesintilerinin kaçınılmaz olduğu gerçek dünya senaryolarında üçüne de tam olarak sahip olmak imkansızdır.
Aşağıdaki senaryolarla hangi ikilileri tercih edip, birinden feragat etmemiz gerektiğine karar verebiliriz.
CP (Consistency + Partition Tolerance) Sistemi: Kullanılabilirlikten vazgeçilecek.
Bu sistemler veri tutarlılığını ön planda tutmaktadır. Verinin tüm node'lerde tutarlı olması hedeflenir. Ağda bir bölünme olduğunda tutarlılığı bozmamak için sistemin bir kısmı veya tamamı yanıt vermeyebilir. Böylece verinin doğruluğu garanti altında olacaktır.
Örnek senaryo: Banka hesabımızda yapılan işlem sonucunda, mobil uygulama ve ATM'de aynı bakiyede olması gerekir. Farklı bakiyede olacağına sistemlere erişilememesi daha iyidir.
Kullanım alanları: Finans, Rezervasyon, E-ticaret, Tıp
AP (Availability + Partition Tolerance) Sistemi: Tutarlılıktan vazgeçilecek.
Bu sistemler, yanıt verilebilirliğini ön planda tutmaktadır. Sistemin sürekli çalışması, isteklere yanıt vermesi beklenir. Veri, bazı yerlerde anlık olarak güncel olmayabilir. Veriler gecikmeli olsa bile eninde sonunda güncellenecektir. Geçici tutarsızlıklar tolere edilebilir. Daha iyi bir kullanıcı deneyimi sağlanır.
Örnek senaryo: Bir dijital platformda bir içeriğin izlenme sayısı güncel olmayabilir fakat içeriğin izlenmemesi kullanıcı deneyimi açısından problemli bir durumdur.
Kullanım alanları: Sosyal medya platformları, Film/dizi izleme platformları, Bildirim sistemleri
CA (Consistency + Availability) Sistemi: Bölünme Toleransından vazgeçilecek.
Gerçek dünyada ağ bölünmeleri kaçınılmazdır. Elektrik, internet bağlantı kesintisi, bir sunucu çökmesi yaşanabilir. Bu nedenle dağıtık sistemlerde tutarlılık ve kullanılabilirlik özelliğinin aynı anda sağlanması pratikte çok mümkün görünmemektedir.
Ağ üzerinden düğümler arası senkronizasyon gerekmediği için veri her an tutarlıdır ve sunucu ayakta olduğu sürece erişilebilirdir.
Kullanım alanları: Ağ bölünmesi riski olmayan, verinin ve işlemlerin tek bir fiziksel sunucu veya tek bir veri tabanı örneği üzerinde toplandığı yapılar
ACID ve BASE kavramlarına bakış
ACID, veri yönetiminde veri bütünlüğü ve güvenilirliği sağlamak için katı bir modeldir. Transaction oluşması için gereken dört ilkenin baş harflerinden oluşmaktadır.
Atomicity (Atomiklik): Bir transaction içindeki işlemler ya tamamen gerçekleşir ya da hiç gerçekleşmez. Bir hata oluşursa her şey geri alınmalıdır.
Consistency (Tutarlılık): Her işlemden sonra veri tabanımız tanımlanmış kurallar doğrultusunda kalmalıdır. Veri, her zaman mantıklı kalır.
Isolation (İzolasyon): Birden fazla işlem aynı anda çalışsa bile bir işlem diğerinden tamamen izole edilmiş gibi, her işlem tek başına çalışıyormuş gibi hissedilir. Bir transaction, diğer transaction'ların tamamlanmamış ara durumlarından uygun olmayan şekilde etkilenmemelidir.
Durability (Dayanıklılık): Verinin kalıcı olabilmesi için yapılan değişikliklerin başarılı olması gerekir. Sistem daha sonra çökse bile kaybolmamalıdır.
BASE, yüksek kullanılabilirlik, esneklik ve ölçeklenebilirliğin önemli olduğu ve katı bir tutarlılık şartına sahip olmayan bir modeldir. Kelimeyi aşağıdaki özellikler oluşturmaktadır.
Basically Available (Temelde Erişilebilir/Kullanılabilir): Sistem, bazı bileşenleri başarısız olsa bile mümkün olduğunca yanıt vermeye devam eder. Bu yanıt, her zaman en güncel veriyi içermeyebilir.
Soft State (Yumuşak Durum): Bazı geçici durumlar yaşanabilir ve anlık olarak tutarlı olmayabilir. Verilerin tutarlılığı eninde sonunda sağlanır.
Eventually Consistent (Nihai Tutarlılık): Verilerin zamanla farklı ortamlarda aynı veya tutarlı bir duruma ulaşması beklenir.
ACID ve BASE'in CAP ile ilişkisi
ACID ve BASE doğrudan CAP Teoremi'nin karşılığı değildir. Ancak tasarım felsefeleri açısından CAP'in Consistency ve Availability eksenleriyle ilişkilendirilebilirler.
ACID yaklaşımı, güçlü veri bütünlüğü ve transaction garantilerini ön plana çıkardığı için CP (Consistency + Partition Tolerance) odaklı sistem tasarımlarıyla daha fazla örtüşebilir.
BASE yaklaşımı ise geçici tutarsızlıkları kabul ederek yüksek kullanılabilirlik ve ölçeklenebilirliği ön plana çıkardığından AP (Availability + Partition Tolerance) odaklı tasarımlarla daha fazla örtüşebilir.
Özetle;
Veri tabanı ve dağıtık sistem tasarımında, sistem gereksinimlerine göre hangi özelliklerin daha kritik olduğuna karar vermek gerekir. ACID, güçlü transaction ve veri bütünlüğü garantilerini ön plana çıkarırken; BASE, yüksek kullanılabilirlik ve esnekliği ön planda tutarak nihai tutarlılığı kabul eder. ACID ve BASE doğrudan CAP Teoremi'nin karşılığı değildir; ancak tasarım öncelikleri açısından ACID, CP odaklı; BASE ise AP odaklı sistemlerle daha fazla örtüşebilir.
Yazının faydalı olmasını umarak, çalışmalarınızda kolaylıklar diliyorum :)
.gif)
Yorumlar
Yorum Gönder