BASE
Temelde Erişilebilir, Esnek Durum, Nihai Tutarlılık
- Okunuşu
- beys
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
-- 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
- ACIDVeritabanları, s. 1ACID; atomiklik, tutarlılık, yalıtım ve dayanıklılıktan oluşan, hata ya da çökme olsa bile veritabanı transaction'larını güvenilir tutan dört garantidir.
- Nihai TutarlılıkVeritabanları, s. 23Nihai tutarlılık, yeni güncelleme yapılmazsa dağıtık bir sistemdeki bir verinin tüm kopyalarının zamanla özdeş hale geleceğine dair bir garantidir.
- CAP TeoremiVeritabanları, s. 4CAP teoremi, ağ arızası dağıtık bir veritabanını böldüğünde sistemin tutarlılık ile erişilebilirlikten birini seçmesi gerektiğini söyler; ikisi birden olamaz.
- NoSQLVeritabanları, s. 24NoSQL, veriyi ilişkisel tablolar yerine doküman, anahtar-değer çifti, geniş sütun ya da çizge gibi başka modellerde saklayan veritabanı ailesidir.
- Veritabanı ReplikasyonuVeritabanları, s. 44Veritabanı replikasyonu, verinin bir sunucudan diğerlerine sürekli kopyalanmasıdır; böylece birkaç sunucu güvenilirlik ve ölçek için aynı veriyi tutar.
- Dağıtık SistemYazılım Mimarisi, s. 9Dağıtık sistem, bir ağ üzerinden birlikte çalışan ve kullanıcılarına tek bir sistem gibi görünen bilgisayarlar kümesidir.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin