Ana içeriğe geç

CAP Teoremi

Tutarlılık, Erişilebilirlik, Bölünme Toleransı

İngilizcesi
CAP Theorem
Okunuşu
kep tiırım
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/cap-theorem

Kısaca

CAP teoremi, ağ arızası dağıtık bir veritabanını böldüğünde sistemin tutarlılık ile erişilebilirlikten birini seçmesi gerektiğini söyler; ikisi birden olamaz.

CAP teoremi nedir?

CAP teoremi, dağıtık veri sistemlerinde, yani veriyi ağa bağlı birkaç makinede saklayan veritabanlarında temel bir ödünleşimi tanımlar. Üç özelliği adlandırır: tutarlılık (her okuma en son yazmayı ya da bir hata döndürür), erişilebilirlik (çalışan bir düğüme gelen her istek hata olmayan bir yanıt alır) ve bölünme toleransı (ağ arızaları bazı düğümleri diğerlerinden kopardığında bile sistemin çalışmaya devam etmesi). Eric Brewer tarafından 2000'de öne sürüldü ve Seth Gilbert ile Nancy Lynch tarafından 2002'de kanıtlandı.

Genellikle "üçünden ikisini seç" diye özetlenir, ancak bu yanıltıcıdır. Gerçek bir dağıtık sistemde ağ bölünmeleri engellenemez; dolayısıyla bölünme toleransı isteğe bağlı değildir ve asıl seçim, bir bölünme sürerken ne yapılacağıdır. CP sistem, bayat veri döndürmemek için bazı istekleri reddeder ya da geciktirir; AP sistem ise cevap vermeye devam eder ancak ağ düzelene kadar güncel olmayan veri döndürebilir.

Birbirleriyle telefon hattını kaybeden iki banka şubesini düşünün. Ya hat geri gelene kadar para çekmeye izin vermeyi bırakırlar, yani tutarlılığı seçerler; ya da müşterilere hizmet vermeye devam edip bakiyeleri sonra uzlaştırırlar, yani erişilebilirliği seçer ve hesabın eksiye düşme riskini göze alırlar. Ödemeleri ya da stoğu yöneten sistemler çoğunlukla CP'ye yaslanır; alışveriş sepetleri, sosyal akışlar ve DNS ise genellikle AP'ye yaslanır ve iletişim yeniden kurulduğunda tüm kopyaların yakınsadığı nihai tutarlılığa (eventual consistency) güvenir.

Bilinmesi gereken iki karışıklık vardır. CAP'teki C, her düğümün güncel veri döndürdüğü katı bir garanti olan doğrusallanabilirlik (linearizability) anlamına gelir; bu, tutarlılığın verinin veritabanının kurallarına ve kısıtlarına uyması anlamına geldiği ACID'deki C'den farklıdır. Ayrıca CAP yalnızca bölünmeler sırasındaki davranışı tanımlar; PACELC teoremi bunu genişleterek ağ sağlıklıyken bile sistemlerin gecikmeyi tutarlılıkla takas ettiğini belirtir.

Bir bakışta

Bir ağ bölünmesi sırasında CAP teoremi. A ve B düğümleri x'in kopyalarını tutar, ama aralarındaki bağlantı kopmuştur. Bir istemci A düğümüne x = 5 yazar; B düğümü hâlâ eski değeri, x = 4'ü tutar. Başka bir istemci B düğümünden x'i okuduğunda sistem seçim yapmak zorundadır: tutarlı kalıp reddetmek ya da beklemek (CP) veya erişilebilir kalıp eski olabilecek x = 4 ile yanıt vermek (AP).İstemcix = 5 yazİstemcix'i okuA düğümüx = 5 (yeni)B düğümüx = 4 (eski)ağ bölünmesiTutarlılığı seç (CP)B reddeder ya da bekler: hata, eski veri yokErişilebilirliği seç (AP)B x = 4 der: erişilebilir ama eski
Ağ bölündüğünde dağıtık bir sistem aynı anda hem tam tutarlı hem tam erişilebilir olamaz: ya bazı istekleri reddeder ya da eski veri döndürme riskini alır.

Önemli noktalar

  • CAP; tutarlılık, erişilebilirlik ve bölünme toleransının kısaltmasıdır.
  • Ağ bölünmesi sırasında dağıtık bir sistem tutarlılık ya da erişilebilirliği seçmek zorundadır.
  • Pratikte bölünme toleransı zorunludur; dolayısıyla gerçek seçim CP ya da AP'dir.
  • CAP'teki C, ACID'deki C ile aynı değildir.
  • PACELC, CAP'i normal işleyişteki gecikme-tutarlılık ödünleşimine genişletir.

Örnek

Apache Cassandra'da sorgu başına tutarlılık ya da erişilebilirliği seçmeksql
-- In cqlsh, the Cassandra shell, the trade-off can be tuned per request

-- Favors availability: any single replica may answer, possibly with stale data
CONSISTENCY ONE;
SELECT balance FROM accounts WHERE id = 42;

-- Favors consistency: a majority of replicas must respond, or the read fails
CONSISTENCY QUORUM;
SELECT balance FROM accounts WHERE id = 42;

Sık sorulan sorular

Tutarlılık ve erişilebilirlikten hangisi daha önemlidir?

Veriye bağlıdır. Banka bakiyeleri ve stok sayıları genellikle tutarlılık gerektirir; sosyal akışlar, görüntülenme sayıları ve alışveriş sepetleri ise erişilebilir kalmak karşılığında kısa süreli bayatlığa katlanabilir.

CAP teoremi tek sunuculu bir veritabanı için geçerli midir?

Pek sayılmaz. CAP, birden fazla ağ düğümüne replike edilen veri için geçerlidir; tek bir sunucuda kopyalar arasında endişelenilecek bir bölünme yoktur, ancak yine de basitçe çökebilir.

Nihai tutarlılık (eventual consistency) nedir?

Nihai tutarlılık, yeni güncelleme yapılmazsa verinin tüm kopyalarının sonunda özdeş hale geleceği anlamına gelir. Bölünmeler sırasında erişilebilir kalan ve farkları sonradan uzlaştıran AP sistemlerin tipik garantisidir.

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar