CAP ve Tutarlılık Modelleri
Tutarlılık modelleri, çoğaltılmış bir sistemin okuma işlemlerinin döndürdüğü değerler hakkında hangi garantileri verdiğini tanımlamaktadır; CAP teoremi ise bu garantilerden hangilerinin ağ bölümlenmeleri (network partitions) altında erişilebilirlikle bir arada bulunabileceğini sınırlamaktadır.
Tanım
Tutarlılık modeli, çoğaltılmış bir veri deposu ile istemcileri arasında, eşzamanlı okuma ve yazma işlemlerinin izin verilen sonuçlarını belirten bir sözleşmedir; CAP teoremi ise bir ağ bölümlenmesi (network partition) varlığında dağıtılmış bir veri deposunun hem doğrusallaştırılabilir tutarlılığı (linearizable consistency) hem de erişilebilirliği sağlayamayacağını belirtmektedir.
Kapsam
Bu konu, biçimsel tutarlılık modellerini (doğrusallaştırılabilirlik (linearizability), sıralı tutarlılık (sequential consistency), nedensel tutarlılık (causal consistency) ve nihai tutarlılık (eventual consistency)) ve bunların güçlerine göre sıralanışını; CAP teoremini, kesin ifadesini ve ispatını; ayrıca bölümlenmelerin yokluğunda gecikme-tutarlılık dengesini de dikkate alan PACELC gibi iyileştirmeleri kapsamaktadır. Çoğaltılmış sistem garantilerini belirtmek ve karşılaştırmak için gerekli terminolojiyi sağlamaktadır.
Temel sorular
- Doğrusallaştırılabilirlik, sıralı, nedensel ve nihai tutarlılık güç açısından nasıl farklılık göstermektedir?
- CAP teoremi tam olarak neyi yasaklamakta ve neye izin vermektedir?
- Bölümlenme olmadığında gecikme faktörleri tutarlılık dengesini nasıl iyileştirmektedir?
Temel kuramlar
- Doğrusallaştırılabilirlik ve sıralı tutarlılık
- Doğrusallaştırılabilirlik, her işlemin çağrılması ile yanıtı arasında gerçek zamanla tutarlı bir anda atomik olarak gerçekleşiyormuş gibi görünmesini gerektirmektedir; sıralı tutarlılık ise gerçek zaman gereksinimini ortadan kaldırarak, yalnızca her sürecin sırasına saygı duyan tek bir geçerli araya girme (interleaving) talep etmektedir.
- CAP teoremi
- Gilbert ve Lynch, ağın çoğaltmalar (replicas) arasındaki mesajları düşürebileceği durumlarda hiçbir çoğaltılmış veri deposunun hem doğrusallaştırılabilir tutarlılığı (linearizable consistency) hem de erişilebilirliği garanti edemeyeceğini, bu durumun bölümlenmeler sırasında bir seçim yapmayı zorunlu kıldığını ispatlamıştır.
- PACELC iyileştirmesi
- PACELC, bir bölümlenme olmasa bile bir sistemin gecikmeyi tutarlılıkla takas ettiğini (trade-off) belirterek CAP'i genişletmektedir; bu nedenle tasarımlar hem bölümlenmeler sırasında hem de normal çalışmada gösterdikleri davranışlarla karakterize edilmektedir.
Klinik önem
Her dağıtılmış veritabanı ve depolama hizmeti bir tutarlılık modeli beyan etmek durumundadır ve CAP ile PACELC dengeleri, bazı sistemlerin neden erişilebilirliği önceliklendirirken diğerlerinin tutarlılığı önceliklendirdiğini açıklamaktadır; bunları anlamak, veri altyapısını seçmek ve işletmek için elzemdir.
Tarihçe
Lamport, sıralı tutarlılığı (sequential consistency) 1979'da tanımlamış ve Herlihy ile Wing, doğrusallaştırılabilirliği (linearizability) 1990'da biçimselleştirmiştir; Brewer, CAP dengesini 2000 yılında ortaya atmış, Gilbert ve Lynch 2002'de bunu ispatlamış ve Abadi'nin 2012'deki PACELC yeniden çerçevelemesi, tutarlılık seçimlerini yalnızca bölümlenmelerin değil, aynı zamanda gecikmenin de yönlendirdiğini açıklığa kavuşturmuştur.
Tartışmalar
- CAP sıklıkla yanlış yorumlanmakta mıdır?
- CAP genellikle 'üçünden ikisini seç' şeklinde özetlenmektedir, ancak kesin sonuç yalnızca bir bölümlenme sırasında tutarlılık-erişilebilirlik seçimini zorunlu kılmaktadır; eleştirmenler, bu aşırı basitleştirmenin PACELC tarafından yakalanan daha ilgili günlük gecikme-tutarlılık dengesini gizlediğini savunmaktadır.
Öne çıkan isimler
- Eric Brewer
- Seth Gilbert
- Nancy Lynch
- Maurice Herlihy
- Jeannette Wing
- Leslie Lamport
İlgili konular
Temel eserler
- gilbert2002
- herlihy1990
- lamport1979
Sıkça sorulan sorular
- CAP, bir sistemin yalnızca tutarlılık, erişilebilirlik ve bölümlenme toleransından ikisine sahip olabileceği anlamına mı gelmektedir?
- Tam olarak öyle değildir. Bölümlenmeler, ağların bir gerçeğidir, bir tasarım seçimi değildir; bu nedenle asıl karar, bir bölümlenme sırasında ne yapılacağıdır: erişilebilir kalmak için güçlü tutarlılıktan vazgeçmek veya tutarlı kalmak için erişilebilirlikten vazgeçmek. Bölümlenme olmadığında, bir sistem hem tutarlı hem de erişilebilir olabilir.