Cloud And Servers
Published in

Cloud And Servers

CAP Teoremi Nedir?

Arama motorunda CAP teoremi şeklinde aratınca türkçe genellikle Remembrance Inc! ile ilgili yazısının Türkçeleştirilmiş halini buluyorsunuz. Birde veritabanlarının sınıflandırıldığı 3gen resmi. Sonradan bu yazı ve resimlere baktığımda kafamın daha da karıştığını farkettim. Bende kendi anladığım şekilde bir makale yazayım şeklinde düşündüm.

CAP dediğimiz teoremi 1998'de Eric Brewer tarafından ortaya atılmıştır. Şu anda kendisi (VP Of Infrastructure at Google)’dır. Teorem basit olarak dağıtık bir sistemde veri üzerinden sunulan hizmet için aynı anda 3 özelligin sağlanamayacağıdır. Yukarıdaki resimlerdende görüldüğü gibi tasarlardığınız sistem CA, CP veya AP olabilir. CAP olamaz.

Kısaca C,A,P kavramlarını anlamaya çalışalım. Ne demek Consistency, Availability, Partition Tolerance. Açıklamayı aşağıdaki resim üzerinden yapacağım.

Consistency(Tutarlılık): Dağıtık bir sistemde bir sunucuya x değeri olarak 5 yazdınız. Aynı sorguyu ağınızdaki başka sunucuya yaptınız ve cevap olarak 5 değerini aldınız. Bu tutarlılıktır.

Availability(Erişebilirlik): Dağıtık her zaman eriştiniz. Hem x değerini yazabildiniz, hemde okuyabildiniz.

Partition Tolarance (Bölünebilme Toleransı): Ağınızdaki sunucuların arasındaki bağlantı gittiğinde de çalışmaya devam edebilme.

CAP Teoremi ne diyor Aynı anda 3ünü birden yapamazsın diyor. Neden ? Bu durumu analiz edelim.

(CA) İse Neden (P) olamıyor

Sunucularınızın arasındaki ağ bağlantısı gitmiş. Siz gittiniz birinci sunucuya yazdınız, yukarıdaki resimde görüldüğü gibi diğer sunuculara verinin güncel halini gönderemedi. 2nci, 3ncü sunucuya veriyi sorduğunuzda verinin olmadığını veya 1nci sunucu ile aynı olamadığını göreceksiniz. Yani sistem CA olduğu zaman P(Partition Tolerance) olamıyor. Veriniz parçalanmaya toleranslı değil.

Verinin doğruluğunun kesin olmasını istediğiniz. Müşteri işlemleri, finansal işlemler vb.. bu çok önemlidir. İlişkisel veritabanları ve transactional işlemler buna uygun veriler tutar.

(AP) İse Neden (C) olamıyor

2 sunucunuz(server) olduğunu düşünelim X değeri 2 sunucuda da bulunuyor. Sunucular arası ağınız çöktü. Sunuculardan birinde X değerini güncellediniz. Sorguladığınızda iki sunucu ayrı değer vereceği için bu durumda C(Consistent) olamıyor. Bir sunucu X değeri için 5 , bir diğeri 4 değerini dönebilir.

Sosyal medyadan twitter veya facebook akan verilerde bunlar kullanılabilir. Like sayısını düşünün o anda her kişinin doğru şekilde görmesi/görmemesi önemli değildir. Burada bu veriler parçalanarak tutulabilir. NoSQL veritabanlarından Cassandra, Dynamo gibi sistemler buna uygundur. Eventual Consistency yöntemi ile arkaplanda Node’lardaki veriler eşleştirilir. Bu eşleştirmeden önce yapılan bir sorgularda veri değerlerinde tutarsızlıklar olabilir.

(CP) İse Neden (A) olamıyor

Eğer amacınız hem tutarlılık, hemde verinin parçalara bölünerek kaydedilebilmesi ise. 3 sunucu arasında bağlantı koptuğu andan itibaren A(Availibility) yazma özelliğiniz ortadan kalkacaktır. Eğer ki yazarsanız tutarlılığı bozarsınız. Bu yüzden sadece okuma yapabilirsiniz bu durumda.

MongoDB veritabanı gibi sistemler CP uygundur. Default’ta strongly consistent’ dır.

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store