Ana içeriğe geç

BASE

Temelde Erişilebilir, Esnek Durum, Nihai Tutarlılık

Okunuşu
beys
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/base-model

Kısaca

BASE, anlık tutarlılık yerine erişilebilirliği seçen dağıtık veritabanlarını tanımlar: hep yanıt verirler, veri kopyaları ise kısa süre farklı kalabilir.

Veritabanlarında BASE nedir?

BASE; basically available, soft state, eventually consistent (temelde erişilebilir, esnek durum, nihai tutarlılık) ifadesinin kısaltmasıdır. Birçok dağıtık veritabanının ve büyük web sisteminin nasıl davrandığını tanımlar; adı da geleneksel veritabanı transaction'larının katı garantileri olan ACID'e kimyadan bir göndermeyle, asidin karşıtı olan baz anlamında seçilmiştir. Eric Brewer ve Berkeley'deki meslektaşları onu 1997'de tarif etti; Brewer da CAP teoremini tanıttığı 2000 yılındaki açılış konuşmasında ACID ile BASE'i karşılaştırdı.

Her parça bir söz ya da bir sözün yokluğudur. Temelde erişilebilir (basically available), bazı sunucular çökmüş olsa bile sistemin her isteğe yanıt vermesi demektir; ancak yanıt eski ya da eksik olabilir. Esnek durum (soft state), replikalar arka planda güncelleme alışverişi yapmayı sürdürdüğü için saklanan verinin yeni bir girdi olmadan da değişebilmesidir; nihai tutarlılık (eventually consistent) ise yazmalar durduğunda bütün replikaların aynı değerde buluşması demektir.

Bir fiyatı değiştiren bir mağaza zinciri düşünün: her mağaza açık kalır (erişilebilir), güncelleme yayılırken etiketler bir süre farklıdır (esnek durum) ve gün sonunda her mağaza yeni fiyatı gösterir (nihai tutarlılık). Apache Cassandra, Amazon DynamoDB ve Riak gibi veritabanları, tıpkı DNS ve çoğu önbellek katmanı gibi bu model etrafında kuruldu; çünkü model, sunucular arasındaki ağ koptuğunda bile onları hızlı ve erişilebilir tutar.

BASE genellikle ACID'in karşıtı olarak sunulur, ama ikisi katı bir ya o ya bu seçimi değil, bir yelpazenin iki ucudur. ACID her transaction'ın ya hep ya hiç olmasını ve commit edilen verinin hemen görünmesini garanti eder, bir banka bakiyesinin ihtiyacı da budur; BASE ise erişilebilirlik ve ölçek karşılığında kısa süreli tutarsızlığı kabul eder ve bu, bir beğeni sayacı ya da ürün kataloğu için sorun değildir. Artık birçok veritabanı istek başına seçim yapmanıza izin verir: Cassandra ve DynamoDB daha güçlü tutarlılık seviyeleri ve transaction'lar sunar, dağıtık SQL veritabanları da birçok sunucu boyunca ACID sağlar.

Önemli noktalar

  • BASE; basically available, soft state, eventually consistent ifadesinin kısaltmasıdır.
  • Her okumada en güncel veriyi döndürmek yerine erişilebilir kalmayı seçer.
  • Replikalar kısa süre farklı olabilir, ama güncellemeler durunca aynı değerde buluşur.
  • ACID'in daha gevşek karşılığıdır; ölçek ve hata toleransı için tercih edilir.
  • Birçok veritabanı, her isteğin BASE tarzı ile daha güçlü tutarlılık arasında seçim yapmasına izin verir.

Örnek

Cassandra'da tutarlılığı istek başına seçmeksql
-- Apache Cassandra (cqlsh), each row stored on 3 replicas
-- BASE-style: one replica is enough, so writes and reads stay fast and available
CONSISTENCY ONE;
INSERT INTO carts (user_id, item, qty) VALUES (42, 'book', 1);
SELECT * FROM carts WHERE user_id = 42;   -- another replica may not have it yet

-- Stronger: a majority (2 of 3) must answer every write and read,
-- so each read overlaps the latest write, at the cost of speed
CONSISTENCY QUORUM;
INSERT INTO carts (user_id, item, qty) VALUES (42, 'pen', 2);
SELECT * FROM carts WHERE user_id = 42;

Sık sorulan sorular

ACID ile BASE arasındaki fark nedir?

ACID, her transaction'ın ya hep ya hiç olmasını ve okumaların commit edilen veriyi hemen görmesini garanti eder. BASE ise sistemin erişilebilir kalabilmesi ve birçok sunucuya ölçeklenebilmesi için bu anlık tutarlılıktan vazgeçer; replikalar zamanla uzlaşır.

BASE, nihai tutarlılık ile aynı şey mi?

Nihai tutarlılık onun üç parçasından biridir. BASE ise replikalar birbirini yakalarken temelde erişilebilir kalan ve esnek, değişen bir durumu kabullenen bir sistemin daha geniş tanımıdır.

Hangi veritabanları BASE'i izler?

Apache Cassandra, Amazon DynamoDB ve CouchDB gibi birçok NoSQL veritabanı varsayılan olarak bu modeli izler; DNS ve çoğu önbellek katmanı da öyle. Bunların çoğu belirli istekler için daha güçlü tutarlılığa da ayarlanabilir.

İlgili sayfalar

Kaynaklar

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

Daha fazla

Ayarlar