CAP Teoremi Nedir?
İngilizce: CAP Theorem
Yayın: · Son güncelleme:
CAP Teoremi Nedir? Kısaca
CAP teoremi, dağıtık bir veri sisteminde ağ bölünmesi yaşandığında tutarlılık (Consistency) ile erişilebilirlik (Availability) arasında seçim yapmak zorunda kalındığını söyleyen ilkedir. Bölünme toleransı (Partition tolerance) dağıtık sistemlerde feda edilemeyen özelliktir.

CAP teoremi nedir?
CAP teoremi, dağıtık sistemlerin üç arzu edilen özelliğini aynı anda tam olarak sağlayamayacağını söyler. Eric Brewer tarafından 2000 yılında bir varsayım olarak ortaya atıldı, 2002'de Seth Gilbert ve Nancy Lynch tarafından kanıtlandı. Adını üç özelliğin baş harflerinden alır:
- Tutarlılık (C): her okuma en son yazılan değeri döndürür.
- Erişilebilirlik (A): çalışan her düğüm her isteğe cevap verir.
- Bölünme toleransı (P): düğümler arasındaki ağ koptuğunda da sistem çalışmaya devam eder.
Gerçekte ne anlama gelir?
Teorem genellikle "üçünden ikisini seçin" diye özetlenir ama bu eksik bir anlatımdır. Ağ kopmaları dağıtık sistemlerde kaçınılmazdır, bu yüzden P'den vazgeçmek pratik bir seçenek değildir. Asıl soru şudur: ağ bölündüğü anda sistem tutarlılığı mı yoksa erişilebilirliği mi koruyacak?
Varsayımsal bir örnek: bir bankanın İstanbul ve Ankara'daki iki sunucusu arasındaki bağlantı kesildi. Tutarlılığı seçen sistem, diğer sunucuyla doğrulama yapamadığı için para çekme isteğini reddeder. Erişilebilirliği seçen sistem işlemi kabul eder ama iki sunucudaki bakiyeler bir süre farklı görünebilir.
Hangi sistem neyi seçer?
Banka hesapları ve stok sayımı gibi hatanın pahalı olduğu alanlarda genellikle tutarlılık tercih edilir. Sosyal medya beğeni sayıları ya da ürün yorumları gibi verilerde ise birkaç saniyelik farklılık kabul edilebilir, bu yüzden erişilebilirlik öne çıkar.
Bir veritabanı seçerken CAP etiketine körü körüne güvenmeyin. Birçok modern sistem, tutarlılık seviyesini sorgu bazında ayarlamaya izin verir. Önce kendi verinizin hangi gecikmeyi ve hangi hatayı tolere edebileceğini belirleyin.
Sıkça Sorulan Sorular
CAP teoremi tek sunuculu veritabanları için geçerli mi?
Değildir. Teorem, ağ üzerinden haberleşen birden fazla düğüme sahip dağıtık sistemler için geçerlidir. Tek bir sunucuda ağ bölünmesi söz konusu olmadığı için bu seçim de ortaya çıkmaz.
CAP teoremi ile ACID arasındaki C aynı mı?
Aynı değildir. ACID'deki tutarlılık, bir işlemin veritabanı kurallarını bozmamasıdır. CAP'teki tutarlılık ise farklı düğümlerin aynı anda aynı en güncel veriyi göstermesidir.