İçeriğe geç
parazade

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?
İçindekiler
  1. CAP teoremi nedir?
  2. Gerçekte ne anlama gelir?
  3. Hangi sistem neyi seçer?

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.

İlgili terimler

Dağıtık Sistem(Distributed System)Dağıtık sistem, ağ üzerinden birbirine bağlı birden fazla bilgisayarın ortak bir görevi yerine getirmek için birlikte çalıştığı ve kullanıcıya tek bir sistem gibi göründüğü yapıdır. Büyük web servisleri, bulut platformları ve blokzincirler bu modelle çalışır.ACIDACID, veritabanı işlemlerinin güvenilir çalışması için gereken dört özelliğin baş harflerinden oluşur: Atomicity (bölünmezlik), Consistency (tutarlılık), Isolation (yalıtım) ve Durability (dayanıklılık).NoSQLNoSQL, verileri sabit tablolar yerine doküman, anahtar-değer, sütun ailesi ya da graf gibi esnek yapılarda saklayan veritabanlarının genel adıdır. Adı "Not only SQL" (yalnızca SQL değil) olarak yorumlanır.Yüksek Erişilebilirlik(High Availability)Yüksek erişilebilirlik (high availability, HA), bir sistemin arıza olduğunda bile kesintisiz ya da çok kısa kesintiyle çalışmaya devam edecek şekilde tasarlanmasıdır. Yedek bileşenler ve otomatik devralma ile sağlanır.Erişilebilirlik(Accessibility)Erişilebilirlik (accessibility), web siteleri ve uygulamaların görme, işitme, hareket ya da bilişsel engeli olan kişiler dâhil herkes tarafından algılanabilir, kullanılabilir ve anlaşılabilir biçimde tasarlanmasıdır.Para Çekme(Cash Withdrawal)Para çekme, banka hesabındaki ya da kredi kartı limitindeki tutarın ATM, şube veya kartsız işlem gibi kanallardan nakit olarak alınmasıdır. Kanal ve karta göre limit ve ücret değişir.Veritabanı(Database)Veritabanı, verilerin düzenli, aranabilir ve güncellenebilir biçimde saklandığı elektronik kayıt sistemidir. Müşteri listeleri, siparişler ve ürün bilgileri gibi veriler veritabanlarında tutulur.Sorgu(Query)Sorgu (query), bir veritabanından belirli verileri getirmek, yeni veri eklemek, mevcut veriyi güncellemek ya da silmek için gönderilen komuttur. İlişkisel veritabanlarında sorgular genellikle SQL diliyle yazılır.