Soru Düz İngilizce'de nihai tutarlılık


Sıklıkla, NoSQL, veri ağları vb. Farklı konuşmalardaki nihai tutarlılığı duyuyorum. Nihai tutarlılığın tanımı birçok kaynakta değişmektedir (ve belki de somut bir veri depolama birimine de bağlıdır).

Herhangi bir somut veri deposuyla ilgili olmayan, genel tutarlılıkta genel tutarlılık ne basit bir açıklama yapabilir mi?


76
2018-04-09 19:21


Menşei


Ör. Wikipedia yardım etmiyor mu? en.wikipedia.org/wiki/Eventual_consistency - Oliver Charlesworth
@OliCharlesworth: hayır. Belki sadece ben varım ama iki kere okuduktan sonra kesinlikle belirsiz. - Roman


Cevaplar:


Nihai tutarlılık:

  1. Hava raporunu izlerim ve yarın yağmur yağacağını öğrenirim.
  2. Sana yarın yağmur yağacağını söylüyorum.
  3. Komşunuz karısına yarın güneşli olacağını söyler.
  4. Komşuna söyle, yarın yağmur yağacak.

Sonunda, tüm sunucular (siz, ben, komşunuz) gerçeği biliyorlar (yarın yağmur yağacak), ama bu arada müşteri (karısı), sorsa da güneşli olacağını düşünerek uzaklaştı. Bir veya daha fazla sunucu (siz ve ben) daha güncel bir değere sahip olduktan sonra.

Sıkı Tutarlılık / ACID uyumluluğunun aksine:

  1. Banka bakiyeniz 50 $.
  2. 100 dolar yatırırsın.
  3. Herhangi bir ATM'den herhangi bir yerden sorgulanan banka bakiyeniz 150 ABD dolarıdır.
  4. Kızınız ATM kartınızla 40 dolar çeker.
  5. Herhangi bir ATM'den herhangi bir yerden sorgulanan banka bakiyeniz 110 $ 'dır.

Hiçbir zaman, bakiyeniz hesabınızda yapılan tüm işlemlerin gerçek toplamından başka bir şeyi yansıtmaz.

neden Niçin bu kadar çok NoSQL sistemi tutarlı bir tutarlılığa sahip olsa da, hemen hemen hepsinin dağıtılmak üzere tasarlanması ve tamamen dağıtılmış sistemlerle sıkı tutarlılığı sürdürmek için süper-lineer ek yük vardır (yani, sadece yavaşlamaya başlamadan önce ölçeklenebilir ve yaptıkları zaman ölçeklemeyi sürdürmek için soruna üstel olarak daha fazla donanım atmanız gerekir).


130
2018-04-09 19:25



Anlamadım. Büyüme doğrusal mı, üstel mi? - Maciek Kreft
N katsayılı N düğümleri olan bir sistemin iletişim yükündeki büyümenin genellikle süper doğrusal olduğu (yani, doğrusaldan daha fazla olduğu) anlaşılmaktadır. Üstel olabilir, kübik olabilir ... İletişim protokolüne vb. Bağlıdır. - Chris Shain
İyi cevap. Bazı takip soruları: Bir sunucuya yapılan isteklerin yanlış / güncel olmayan bilgiler alması "kötü" değil mi? İnsanlar bununla tamam mı, yoksa bunun için bir çözüm var mı? Ayrıca, veriler sonunda farklı sunucularda nasıl çoğaltılabilir? Sunuculardan biri düştü ve veriler sunucular arasında çoğaltılıyorsa, bu sunucu geri gelirse, o zaman verileri güncelliğini nasıl alır? - noblerare
@noblerare değişen derecelerde kötülük için "kötü". ATM bakiyem güncel değilse çok kötü olur. Günlüğe kaydetme veritabanım çok uymuyorsa veya Facebook beslemem birkaç saniye geride kaldığında daha az kötü olur. Veri çoğaltma ve dayanıklılık mekanizmaları çok çeşitlidir ve belirli bir platforma bağlıdır. Cassandra için (örnek olarak) yazar, belirli bir yazının başarılı olup olmayacağına karar verebilir, düğümlerin bir, hepsi ya da çoğunluğu üzerinde çalışılması gerekir. HBase, her bir veri satırı için belirli bir düğümün "ana" olduğu farklı bir yaklaşım benimsemektedir. - Chris Shain


Nihai tutarlılık:

  1. Verileriniz birden fazla sunucuda çoğaltılır
  2. Verilerinizi almak için müşterileriniz herhangi bir sunucuya erişebilir
  3. Birisi sunuculardan birine bir veri parçası yazıyor, ancak henüz kalanına kopyalanmadı
  4. Bir istemci sunucuyu veriye erişir ve en güncel kopyayı alır
  5. Farklı bir istemci (veya aynı istemci) farklı bir sunucuya (henüz yeni kopya alamayan) erişir ve eski kopyayı alır

Temel olarak, verileri birden çok sunucuda çoğaltmak zaman aldığı için, verileri okumak için istekleri yeni bir kopyanın olduğu bir sunucuya gidebilir ve sonra eski bir kopyasını içeren bir sunucuya gidebilir. "Sonuç" terimi, sonunda verilerin tüm sunuculara çoğaltılacağı ve böylece bunların hepsinin güncel kopyaya sahip olacağı anlamına gelir.

Yanıt veren sunucunun kendi veri kopyasını döndürmesi gerektiğinden ve diğer sunuculara danışmak ve verilerin içeriği üzerinde karşılıklı bir anlaşmaya varmak için zamana sahip olmadığından, düşük tutarlılık okumaları istiyorsanız, kesin tutarlılık bir zorunluluktur. Yazdım Blog yazısı bunu daha ayrıntılı olarak açıklamak.


67
2017-09-29 16:01



Güzel blog yazısı. Nihai tutarlılık fikrine yeni biri için okumaya değer. Bu yanıt, blog yayınında neyin daha fazla olduğunu açıklamak için yeniden yazılırsa daha iyi olurdu. - axiopisty
Blogunuzda iyi açıklandı. Paylaşım için teşekkürler. - Ataur Rahman Munna


Bir uygulamanız ve çoğaltmanız olduğunu düşünün. Sonra uygulamaya yeni veri öğesi eklemelisiniz.

enter image description here

Daha sonra uygulama, verileri aşağıdaki başka çoğaltma şovuna senkronize eder

enter image description here

Bu arada yeni müşteri henüz güncellenmeyen bir kopyadan veri alacak. Bu durumda tarih verileri doğru olamaz. Çünkü senkronizasyon biraz zaman alır. Bu durumda sonunda tutarlılık

Sorun nasıl olabilir? sonunda tutarlılık?

Bunun için, verileri güncellemek / oluşturmak / silmek ve verileri okumak için doğrudan sorgulamayı kullanmak için medyatör uygulamasını kullanıyoruz. Bu yardımcı olmak sonunda tutarlılık 

enter image description here enter image description here


6
2017-12-10 14:40





Bir uygulama bir makinedeki bir veri öğesine bir değişiklik yaptığında, bu değişikliğin diğer kopyalara yayılması gerekir. Değişim yayılımı anlık olmadığından, bazı kopyaların en son değişikliklere sahip olacağı bir zaman aralığı vardır, ancak diğerleri bunu yapmayacaktır. Başka bir deyişle, kopyalar karşılıklı olarak tutarsız olacaktır. Ancak, değişiklik sonunda tüm kopyalara ve dolayısıyla “nihai tutarlılık” terimine yayılacaktır. Nihai tutarlılık terimi, sadece bir makinede yapılan tüm değişiklikleri diğer tüm kopyalara iletmede sınırsız bir gecikme olduğunun bir kanıtıdır. Yayılmaya ihtiyaç duyulmadığından, nihai tutarlılık, merkezi (tek kopya) sistemlerde anlamlı veya anlamlı değildir.

kaynak: http://www.oracle.com/technetwork/products/nosqldb/documentation/consistency-explained-1659908.pdf


1
2017-11-11 07:12





Sonunda tutarlılık daha çok bir spektrum gibidir. Bir ucunda güçlü bir kıvama sahip olursunuz ve diğerlerinde nihai tutarlılığa sahip olursunuz. Aralarında Snapshot gibi seviyeler var, yazılarımı oku, sınırlı staleness. Doug Terry'nin güzel bir açıklaması var. beyzboldan nihai tutarlılık hakkındaki makalesi .

Bana göre, nihai tutarlılık, bir veri deposundan okuduğunuz her seferinde rastgele sırayla rasgele verilere temelde toleranstır. Bundan daha iyi bir şey daha güçlü bir tutarlılık modelidir. Örneğin, anlık görüntüde eski veriler var, ancak tekrar okunabiliyorsa aynı verileri döndürecek ve böylece tahmin edilebilir. Bazen uygulama, tutarlı bir veri talep ettiği belirli bir süre boyunca eski olan verileri tolere edebilir.

Tutarlılığın anlamına bakarsanız, daha çok tekdüzelik ya da sapma eksikliği ile ilgilidir. Yani bilgisayar dışı sistem terimlerinde beklenmedik varyasyonlar için hoşgörü anlamına gelebilir. ATM ile çok iyi açıklanabilir. Bir ATM, çevrimdışı olarak, çekirdek sistemlerden hesap bakiyesinden farklı olabilir. Bununla birlikte, bir zaman penceresi için farklı dengeleri göstermek için bir tolerans vardır. ATM çevrimiçi hale geldiğinde, çekirdek sistemlerle senkronize edilebilir ve aynı dengeyi yansıtabilir. Yani bir ATM nihayetinde tutarlı olduğu söylenebilir.


0
2017-10-31 12:02





Çok basit bir ingilizce cümle ile şunu söyleyebiliriz: Sisteminiz tutarsız durumlarda olsa da, amaç her bir veri için bir noktada tutarlılığa ulaşmaktır.


0
2017-10-31 07:58