Veri Çoğaltma ve Tutarlılık
Veri çoğaltma, erişilebilirlik ve performans için verilerin birden fazla kopyasını tutmaktadır; tutarlılık protokolleri ise bu kopyalar üzerindeki okuma ve yazma işlemlerinin nasıl uzlaştırıldığını yönetmektedir.
Tanım
Veri çoğaltma, bir veri öğesinin kopyalarını çeşitli düğümlerde tutmaktadır; bir tutarlılık modeli, yazma geçmişi göz önüne alındığında okuma işlemlerinin döndürebileceği değerler hakkındaki garantileri belirtmektedir. Bu garantiler güçlü tutarlılıktan (her okuma en son yazmayı görür) nihai tutarlılığa (güncellemeler durduğunda kopyalar yakınsar) kadar değişmektedir.
Kapsam
Bu konu, çoğaltma stratejilerini (birincil-yedek, çoklu-ana, kuorum), kuorum tabanlı okuma/yazma protokollerini ve bunların kesişim gereksinimlerini, nihai yakınsama için anti-entropi ve gossip mekanizmalarını, sürüm vektörleri ve çakışmasız çoğaltılmış veri türleri (CRDT'ler) ile çakışma tespitini ve doğrusallaştırılabilir (linearizable) tutarlılıktan nihai tutarlılığa kadar olan tutarlılık spektrumunu kapsamaktadır. Konu, durum makinesi çoğaltmasının veri düzeyindeki karşılığını ele almaktadır.
Temel sorular
- Okuma ve yazma işlemleri için kuorum boyutları, okumaların en son yazmayı gözlemlemesini nasıl garanti etmektedir?
- Kopyalar nihai tutarlılık altında nasıl yakınsamaktadır ve çakışmalar nasıl çözülmektedir?
- Bir uygulama, gecikme süresi ve erişilebilirlik ihtiyaçları göz önüne alındığında hangi tutarlılık seviyesini seçmelidir?
Temel kuramlar
- Çoğaltılmış veriler için kuorum mutabakatı
- Kopyalara oy atayarak ve boyutları toplamdan daha fazla olan okuma ve yazma kuorumları gerektirerek, her okuma kuorumu en son yazma kuorumuyla kesişmekte ve böylece okumaların güncel veriyi gözlemlemesi garanti edilmektedir.
- Nihai tutarlılık ve anti-entropi
- Yüksek erişilebilirliğe sahip depolar, herhangi bir kopyada yazma işlemlerini kabul etmekte ve gossip ile sürüm vektörleri aracılığıyla eşzamansız olarak uzlaştırmaktadır. Bu, Dynamo tasarımında örneklendiği gibi, kopyaların yalnızca güncellemeler durduğunda yakınsamasını garanti etmektedir.
- Çakışmasız çoğaltılmış veri türleri
- CRDT'ler, işlemleri değişmeli olacak şekilde tasarlanmış veya durumları birleşim yarı-kafes (join-semilattice) oluşturan veri türleridir; bu sayede eşzamanlı güncellemeler koordinasyon olmaksızın deterministik olarak birleşmekte ve güçlü nihai tutarlılık sağlamaktadır.
Klinik önem
Bu teknikler, gerçek depolama sistemlerinin garantilerini tanımlamaktadır: Kuorum protokolleri güçlü tutarlı anahtar-değer depolarının temelini oluştururken, nihai tutarlılık ve CRDT'ler, anlık mutabakatın önüne erişilebilirliğin geçtiği yüksek erişilebilirliğe sahip depoları, alışveriş sepetlerini ve işbirlikçi düzenleyicileri desteklemektedir.
Tarihçe
Gifford'un 1979 tarihli ağırlıklı oylama şeması kuorum çoğaltmasını kurmuştur; Amazon'un 2007 tarihli Dynamo makalesi yüksek erişilebilirliğe sahip nihai tutarlılığı popülerleştirmiştir; ve CRDT'lerin 2011'deki formülasyonu, koordinasyonsuz yakınsama için ilkeli bir temel sağlayarak modern çoğaltılmış veri tasarımını şekillendirmiştir.
Tartışmalar
- Çoğaltılmış veri varsayılan olarak ne kadar tutarlılık sağlamalıdır?
- Güçlü tutarlılık uygulama geliştirmeyi kolaylaştırmakta ancak erişilebilirliği sınırlamakta ve gecikme süresi eklemektedir; nihai tutarlılık ise geçici ayrışmayı ortaya çıkarma pahasına erişilebilirliği en üst düzeye çıkarmaktadır. Ayarlanabilir kuorumlar ve CRDT'ler, uygulamaların işlem başına seçim yapmasına olanak tanıyan girişimlerdir.
Öne çıkan isimler
- David Gifford
- Werner Vogels
- Marc Shapiro
- Andrew S. Tanenbaum
İlgili konular
Temel eserler
- gifford1979
- decandia2007
- shapiro2011
Sıkça sorulan sorular
- Okuma ve yazma kuorumları güncel okumaları nasıl garanti etmektedir?
- Eğer bir yazma W kopyaya ulaşmalı ve bir okuma R kopyaya danışmalıysa ve R artı W toplam kopya sayısını aşıyorsa, herhangi bir okuma kuorumu en az bir kopyada en son yazma kuorumuyla örtüşmektedir; bu sayede okuma en son değeri gözlemleyebilmektedir.