CAP Teoremi ve Tutarlılık Modelleri
CAP teoremi, bir ağ bölümlemesiyle (network partition) karşı karşıya kalan dağıtılmış bir veri deposunun ya tutarlılıktan (consistency) ya da erişilebilirlikten (availability) feragat etmesi gerektiğini belirtmektedir; tutarlılık modelleri ise bir sistemin güncellemelerin görünürlüğü ve sıralaması hakkında tam olarak hangi garantileri sağladığını belirlemektedir.
Tanım
CAP teoremi, ağa bağlı paylaşımlı bir veri sisteminin tutarlılık, erişilebilirlik ve bölümleme toleransından en fazla ikisini aynı anda garanti edebileceğini ileri sürmektedir; bir tutarlılık modeli ise bir uygulamanın çoğaltmalar (replicas) genelindeki okuma ve yazma işlemlerinin sırası ve görünürlüğü hakkında ne gözlemleyebileceğini belirten bir sözleşmedir.
Kapsam
Bu konu, CAP teoremini ve onun formülasyonunu, gerçek ödünleşimin (trade-off) yalnızca ağ bölümlemeleri sırasında ortaya çıktığı pratik yorumunu ve bunun sonucunda ortaya çıkan PACELC iyileştirmesini kapsamaktadır. Güçlü (doğrusallaştırılabilir) tutarlılıktan nedensel tutarlılığa ve nihai tutarlılığa kadar uzanan tutarlılık modelleri yelpazesini ve ACID ile tezat oluşturan BASE stilini ele almaktadır. Bu modellerin çoğaltılmış veri depolarının tasarımına nasıl rehberlik ettiğini incelemektedir. Güçlü tutarlılığı uygulamak için kullanılan ve dağıtılmış veritabanları başlığı altında ele alınan konsensüs ve onay protokollerini kapsamamaktadır.
Temel sorular
- CAP'te tutarlılık, erişilebilirlik ve bölümleme toleransı tam olarak ne anlama gelmektedir?
- Tutarlılık ve erişilebilirlik arasındaki gerçek seçimin yalnızca bir bölümleme sırasında zorunlu hale gelmesinin nedeni nedir?
- Güçlü, nedensel ve nihai tutarlılık, sağladıkları garantiler açısından nasıl farklılık göstermektedir?
- Nihai tutarlılık neyi vaat etmektedir ve neyi vaat etmemektedir?
- BASE felsefesi ACID ile nasıl tezat oluşturmaktadır?
Anahtar kavramlar
- tutarlılık, erişilebilirlik, bölümleme toleransı
- ağ bölümlemesi
- doğrusallaştırılabilirlik / güçlü tutarlılık
- nedensel tutarlılık
- nihai tutarlılık
- PACELC
- BASE ve ACID
- çatışma çözümü
Temel kuramlar
- CAP teoremi
- Gilbert ve Lynch tarafından formüle edilen CAP, ağ bölündüğünde, çoğaltılmış bir depolama sisteminin potansiyel olarak eski verileri döndürme (erişilebilirlik) ile tek bir tutarlı değeri korumak için hizmeti reddetme (tutarlılık) arasında seçim yapması gerektiğini göstermektedir; gerçek ağlarda bölümleme toleransı isteğe bağlı değildir.
- Tutarlılık spektrumu
- Tutarlılık modelleri, okumaların her zaman en son yazmayı gördüğü güçlü (doğrusallaştırılabilir) tutarlılıktan, neden-sonuç sırasını koruyan nedensel tutarlılığa ve yeni yazma işlemleri olmadığında çoğaltmaların zamanla yakınsadığı nihai tutarlılığa kadar uzanmaktadır.
- BASE ve ACID
- Yüksek düzeyde erişilebilir sistemler genellikle BASE stilini (temelde erişilebilir, yumuşak durum, nihai olarak tutarlı) benimsemektedir; bu, bölümlemeler altında ve ölçekte yanıt verebilir kalmak için güçlü ACID garantilerini bilerek gevşetmektedir.
Klinik önem
CAP ve tutarlılık modelleri, dağıtılmış veri sistemlerindeki merkezi tasarım seçimini çerçevelemektedir: bir depolama sisteminin ağ arızalandığında her zaman yanıt vermeyi (erişilebilirlik) mi yoksa her zaman doğru yanıt vermeyi (tutarlılık) mi önceliklendireceği; bu karar, her küresel olarak dağıtılmış uygulamanın davranışını ve garantilerini şekillendirmektedir.
Tarihçe
Eric Brewer, CAP ödünleşimini 2000 yılı civarında ortaya atmıştır; Gilbert ve Lynch bunu 2002'de resmi olarak kanıtlamıştır. Amazon'un Dynamo'su (2007) ve Vogels'in 2009 tarihli makalesi, nihai tutarlılığı pratikte yaygınlaştırmıştır. Brewer'ın 2012'deki retrospektifi, CAP'in mükemmel tutarlılık ve erişilebilirliği yalnızca bölümlemeler sırasında yasakladığını açıklığa kavuşturmuştur ve PACELC formülasyonu daha sonra bölümleme olmayan durumda gecikme-tutarlılık ödünleşimini eklemiştir.
Tartışmalar
- Tutarlılık-erişilebilirlik ödünleşiminin ne kadar temel olduğu
- Erken yorumlar, CAP'i tutarlılık ve erişilebilirlik arasında kalıcı bir seçim yapmaya zorlayan bir durum olarak ele almıştır; Brewer'ın retrospektifi de dahil olmak üzere sonraki analizler, ödünleşimin yalnızca bölümlemeler sırasında ortaya çıktığını ve sistemlerin aksi takdirde büyük ölçüde tutarlı ve erişilebilir olabileceğini savunarak, CAP'in tasarımı ne kadar katı bir şekilde kısıtladığını yeniden çerçevelemiştir.
Öne çıkan isimler
- Eric Brewer
- Seth Gilbert
- Nancy Lynch
- Werner Vogels
İlgili konular
Temel eserler
- gilbert2002
- brewer2012
- vogels2009
Sıkça sorulan sorular
- CAP, üç özellikten yalnızca ikisine sahip olabileceğim anlamına mı gelmektedir?
- Popüler 'ikisini seç' ifadesi yanıltıcıdır. Dağıtılmış bir sistemde bölümleme toleransı aslında isteğe bağlı değildir, bu nedenle gerçek seçim tutarlılık ve erişilebilirlik arasındadır ve bu seçim yalnızca bir bölümleme gerçekten meydana gelirken yapılmak zorundadır. Ağ sağlıklı olduğunda, bir sistem hem tutarlılık hem de erişilebilirlik sağlayabilmektedir.
- Nihai tutarlılık aslında neyi garanti etmektedir?
- Bir veri öğesine yeni güncelleme yapılmazsa, tüm çoğaltmaların sonunda aynı değere yakınsayacağını garanti etmektedir. Ne zaman yakınsayacağını veya bir okumanın en son yazmayı yansıtacağını garanti etmemektedir, bu nedenle nihai tutarlılık kullanan uygulamaların geçici olarak eski veya çakışan okumalara tolerans göstermesi ve genellikle çatışma çözümünü kendilerinin halletmesi gerekmektedir.