İçeriğe geç
pitonmert

CAP ve BASE: Dağıtık veride hangi tercihler yapılır?

Bir uygulamanın verisi iki bölgede tutuluyorsa bölgeler arasındaki ağ bağlantısı kesilebilir. İki taraf da kullanıcı isteği almaya devam ederken “en güncel değer hangisi?” sorusu önem kazanır. CAP bu tür bir ağ bölünmesindeki sınırı açıklar; BASE ise kimi uygulamaların geçici farklılıkları kabul ederek tasarlanmasını anlatan bir yaklaşımdır. Aynı şeyin iki adı değildirler.

İki farklı tutarlılık sorusu

ACID yazısındaki consistency, bir veritabanı işleminin tanımlanmış bütünlük kurallarına uygun sonuçlanmasıyla ilgilidir. CAP’teki consistency, dağıtık kopyalar üzerinden yapılan işlemlerin tek bir güncel veri kopyası varmış gibi görünmesiyle ilgilidir. Bir sistemin veritabanı işlemleri ACID özellikleri taşıyabilir ve yine de kopyaları arasındaki ağ kesintisi için ayrıca karar vermesi gerekebilir.

Ağ bölünmesinde CAP

CAP’in biçimsel modelinde consistency, availability ve partition tolerance birlikte istenir. Ağ bölünmesi kopyaların haberleşmesini engellediğinde, hem her sağlıklı düğümün isteğe yanıt vermesini hem de tüm başarılı işlemlerin tek kopya tutarlılığı göstermesini aynı anda garanti edemezsin.

Bu nedenle “her zaman üç özellikten ikisini seç” cümlesi yanıltıcı bir kısaltmadır. Kritik tercih bölünme sırasında ortaya çıkar: bir tarafın bazı istekleri bekletmesi veya reddetmesi tutarlılığı koruyabilir; iki tarafın da istekleri işlemesi ise geçici olarak farklı sonuçlar üretebilir. CAP, her sistemin bütün çalışma zamanındaki performansını ya da kullanılabilirliğini tek başına özetlemez.

İki bölgedeki sayaç

İki bölgedeki beğeni sayacının başlangıç değeri 10 olsun:

AnBölge ABölge B
Bağlantı açık1010
Bağlantı kesik; her bölgede bir beğeni1111
Bağlantı geri geldiBirleştirme kuralı gerekirBirleştirme kuralı gerekir

Kesinti sırasında iki bölge de isteği kabul ederse kullanıcılar bir süre farklı veya eksik değerler görebilir. İki artış da kaydedilip doğru biçimde birleştirilirse ortak sonuç 12 olur. Basitçe bir kopyayı diğerinin üzerine yazmak ise bir artışı kaybettirebilir. “Sonunda tutarlı olur” demek, birleştirme mekanizmasını kurma sorumluluğunu ortadan kaldırmaz.

Bu sayaç, gecikmeli görünümü kabul edilebilecek bir örnektir. Son ürünün satılması veya para aktarımı için aynı kararı otomatik olarak uygulamak doğru olmaz; kabul edilebilir gecikme ve hata etkisi ürünün gereksinimlerine bağlıdır.

BASE ve sonradan yakınsama

BASE; basically available, soft state ve eventually consistent sözcüklerinin kısaltmasıdır. Geçici durum farklarını kabul edip güncellemeleri daha sonra yayma yaklaşımını ifade eder. Soft state, bir kopyanın görünen değerinin eşitleme sonucunda yeni bir kullanıcı isteği olmadan değişebilmesini de kapsar.

Yukarıdaki sayaçta sonradan yakınsama için artışların güvenilir biçimde taşınması, yinelenen işlemlerin ele alınması ve çakışmaların nasıl birleştirileceğinin belirlenmesi gerekir. BASE bir veritabanı türü etiketi veya CAP’in kanıtı değildir. Bir sistem, yerel işlemlerde ACID kullanırken bazı kopyalanan görünümlerinde sonradan yakınsamayı da seçebilir.

Karar vermeden önce

  • Hangi işlemlerin gecikmiş veri göstermesi kabul edilebilir?
  • Ağ kesildiğinde hangi isteklere yanıt vermek zorunlu?
  • İki tarafta değişen değerler nasıl birleştirilecek?
  • Yinelenen veya sırası değişen güncellemeler nasıl ele alınacak?

Bu sorulara ürün gereksinimiyle cevap vermek, sisteme genel bir CP veya AP etiketi yapıştırmaktan daha yararlıdır.

Kaynaklar