Apache Cassandra ve Apache Cassandra için Azure Cosmos DB tutarlılık düzeyleri

ŞUNLAR IÇIN GEÇERLIDIR: Cassandra

Azure Cosmos DB'nin aksine Apache Cassandra, tam olarak tanımlanmış tutarlılık garantilerini yerel olarak sağlamaz. Bunun yerine Apache Cassandra, yüksek kullanılabilirlik, tutarlılık ve gecikme süresi dengelemelerini etkinleştirmek için bir yazma tutarlılığı düzeyi ve okuma tutarlılığı düzeyi sağlar. Cassandra için Azure Cosmos DB kullanırken:

  • Apache Cassandra'nın yazma tutarlılığı düzeyi, Azure Cosmos DB hesabınızda yapılandırılan varsayılan tutarlılık düzeyiyle eşlenir. Yazma işlemi (CL) için tutarlılık istek temelinde değiştirilemez.
  • Azure Cosmos DB, Cassandra istemci sürücüsü tarafından belirtilen okuma tutarlılığı düzeyini dinamik olarak eşler. Tutarlılık düzeyi, okuma isteğinde dinamik olarak yapılandırılan Azure Cosmos DB tutarlılık düzeylerinden biriyle eşlenir.

Çok bölgeli yazmalar ile tek bölgeli yazmalar karşılaştırması

Apache Cassandra veritabanı varsayılan olarak çok ana şablonlu bir sistemdir ve okumalar için çok bölgeli çoğaltma ile tek bölgeli yazma işlemleri için hazır bir seçenek sağlamaz. Ancak Azure Cosmos DB, tek bölgeye veya çok bölgeli yazma yapılandırmalarına sahip olmak için anahtar teslimi özellik sağlar. Birden çok bölgede tek bir bölge yazma yapılandırması seçebilmenin avantajlarından biri bölgeler arası çakışma senaryolarından kaçınmak ve birden çok bölgede güçlü tutarlılık sağlama seçeneğidir.

Tek bölgeli yazma işlemleriyle güçlü tutarlılığı korurken hizmet tarafından yönetilen yük devretme ile bölgeler arasında yüksek kullanılabilirlik düzeyini koruyabilirsiniz. Bu yapılandırmada, istek başına nihai tutarlılığa düşürerek okuma gecikmesini azaltmak için veri yerelliğinden yararlanmaya devam edebilirsiniz. Azure Cosmos DB platformu, bu özelliklere ek olarak bir bölge seçerken alanlar arası yedeklilik seçeneği de sunar. Bu nedenle Azure Cosmos DB, yerel Apache Cassandra'dan farklı olarak CAP Teoremi denge spektrumu içinde daha ayrıntılı bir şekilde gezinmenizi sağlar.

Tutarlılık düzeylerini eşleme

Azure Cosmos DB platformu, çoğaltmayla ilgili olarak iyi tanımlanmış, iş kullanımına yönelik beş tutarlılık ayarı sağlar. Bu tutarlılık ayarlarının dezavantajları CAP ve PACLC teoremleri tarafından tanımlanır. Bu yaklaşım Apache Cassandra'dan önemli ölçüde farklı olduğundan , Azure Cosmos DB tutarlılığını gözden geçirmek ve anlamak için zaman ayırmanızı öneririz. Alternatif olarak, Azure Cosmos DB platformunda tutarlılık ayarlarını anlamak için bu kısa video kılavuzunu gözden geçirebilirsiniz. Aşağıdaki tabloda, Cassandra için API kullanılırken Apache Cassandra ile Azure Cosmos DB tutarlılık düzeyleri arasındaki olası eşlemeler gösterilmektedir. Bu tabloda tek bölge için yapılandırmalar, tek bölgeli yazmalar ile çok bölgeli okumalar ve çok bölgeli yazma işlemleri gösterilir.

Eşlemeler

Not

Bunlar tam eşleme değildir. Bunun yerine Apache Cassandra'ya en yakın analogları sağladık ve en sağdaki sütundaki nitel farkları kesinleştirmeyi sağladık. Yukarıda belirtildiği gibi Azure Cosmos DB'nin tutarlılık ayarlarını gözden geçirmenizi öneririz.

ALL, EACH_QUOROM, QUOROM, LOCAL_QUORUMveya THREE Apache Cassandra'da yazma tutarlılığı

Apache okuma tutarlılığı Okuma Apache Cassandra okuma/yazma ayarlarına en yakın Azure Cosmos DB tutarlılık düzeyi
ALL Yerel bölge Strong
EACH_QUOROM Yerel bölge Strong
QUOROM Yerel bölge Strong
LOCAL_QUORUM Yerel bölge Strong
LOCAL_ONE Yerel bölge Eventual
ONE Yerel bölge Eventual
TWO Yerel bölge Strong
THREE Yerel bölge Strong

Apache ve DSE Cassandra'dan farklı olarak Azure Cosmos DB varsayılan olarak bir çekirdek yazma işlemi yürütmektedir. Dört (3/4) düğümden en az üçü yazma işlemini diske işler ve yalnızca bellek içi işleme günlüğü DEĞİlDR.

ONE, LOCAL_ONEveya ANY Apache Cassandra'da yazma tutarlılığı

Apache okuma tutarlılığı Okuma Apache Cassandra okuma/yazma ayarlarına en yakın Azure Cosmos DB tutarlılık düzeyi
ALL Yerel bölge Strong
EACH_QUOROM Yerel bölge Eventual
QUOROM Yerel bölge Eventual
LOCAL_QUORUM Yerel bölge Eventual
LOCAL_ONE Yerel bölge Eventual
ONE Yerel bölge Eventual
TWO Yerel bölge Eventual
THREE Yerel bölge Eventual

Cassandra için Azure Cosmos DB API'sinin varsayılan olarak sürekli olarak bir çekirdek yazma işlemi gerçekleştirmesi, dolayısıyla tüm okuma tutarlılıklarının kullanılabilmesini sağlar.

TWO Apache Cassandra'da yazma tutarlılığı

Apache okuma tutarlılığı Okuma Apache Cassandra okuma/yazma ayarlarına en yakın Azure Cosmos DB tutarlılık düzeyi
ALL Yerel bölge Strong
EACH_QUOROM Yerel bölge Strong
QUOROM Yerel bölge Strong
LOCAL_QUORUM Yerel bölge Strong
LOCAL_ONE Yerel bölge Eventual
ONE Yerel bölge Eventual
TWO Yerel bölge Eventual
THREE Yerel bölge Strong

Azure Cosmos DB'de yalnızca iki düğümde yazma tutarlılığı yoktur, bu nedenle çoğu durumda bu tutarlılığı çekirdekle benzer şekilde ele alıyoruz. Okuma tutarlılığı TWOiçin, bu tutarlılık ile yazma ve okuma ONEile eşdeğerdirQUOROM.

Serialveya Local_Serial Apache Cassandra'da tutarlılık yazma

Apache okuma tutarlılığı Okuma Apache Cassandra okuma/yazma ayarlarına en yakın Azure Cosmos DB tutarlılık düzeyi
ALL Yerel bölge Strong
EACH_QUOROM Yerel bölge Strong
QUOROM Yerel bölge Strong
LOCAL_QUORUM Yerel bölge Strong
LOCAL_ONE Yerel bölge Eventual
ONE Yerel bölge Eventual
TWO Yerel bölge Strong
THREE Yerel bölge Strong

Seri yalnızca basit işlemler için geçerlidir. Azure Cosmos DB varsayılan olarak sabit bir şekilde işlenen algoritmayı izler ve bu nedenle Serial tutarlılık çekirdekle benzerdir.

Tek bölgeli yazma için diğer bölgeler

Azure Cosmos DB, tek bölgeli yazma işlemlerinin yapılandırıldığı birden çok bölgede güçlü olmak üzere beş tutarlılık ayarı sağlar. Bölgeler birbirine 3000 kilometre mesafede olduğu sürece bu kolaylaştırma gerçekleşir.

Tüm düğümler/bölgeler yazma işlemi olduğundan ve tüm bölgelerde güçlü bir tutarlılık garantisi mümkün olmadığından Azure Cosmos DB'nin Apache Cassandra'ya uygulanabilir bir eşlemesi yoktur.

Çok bölgeli yazma için diğer bölgeler

Azure Cosmos DB yalnızca dört tutarlılık ayarı sağlar; eventual, consistent prefix, sessionve bounded staleness çok bölgeli yazmanın yapılandırıldığı birden çok bölgede.

Apache Cassandra, ayarlardan bağımsız olarak diğer bölgelerdeki okumalar için yalnızca nihai tutarlılık sağlar.

Desteklenen dinamik geçersiz kılmalar

Azure Cosmos DB hesap ayarı İstemci isteğindeki değeri geçersiz kılma Geçersiz kılma efekti
Strong All Hiçbir etkisi yok (olarak strongkalır)
Strong Quorum Hiçbir etkisi yok (olarak strongkalır)
Strong LocalQuorum Hiçbir etkisi yok (olarak strongkalır)
Strong Two Hiçbir etkisi yok (olarak strongkalır)
Strong Three Hiçbir etkisi yok (olarak strongkalır)
Strong Serial Hiçbir etkisi yok (olarak strongkalır)
Strong LocalSerial Hiçbir etkisi yok (olarak strongkalır)
Strong One Tutarlılık değişiklikleri Eventual
Strong LocalOne Tutarlılık değişiklikleri Eventual
Strong Any İzin verilmiyor (hata)
Strong EachQuorum İzin verilmiyor (hata)
Bounded staleness, sessionveya consistent prefix All İzin verilmiyor (hata)
Bounded staleness, sessionveya consistent prefix Quorum İzin verilmiyor (hata)
Bounded staleness, sessionveya consistent prefix LocalQuorum İzin verilmiyor (hata)
Bounded staleness, sessionveya consistent prefix Two İzin verilmiyor (hata)
Bounded staleness, sessionveya consistent prefix Three İzin verilmiyor (hata)
Bounded staleness, sessionveya consistent prefix Serial İzin verilmiyor (hata)
Bounded staleness, sessionveya consistent prefix LocalSerial İzin verilmiyor (hata)
Bounded staleness, sessionveya consistent prefix One Tutarlılık değişiklikleri Eventual
Bounded staleness, sessionveya consistent prefix LocalOne Tutarlılık değişiklikleri Eventual
Bounded staleness, sessionveya consistent prefix Any İzin verilmiyor (hata)
Bounded staleness, sessionveya consistent prefix EachQuorum İzin verilmiyor (hata)

Ölçümler

Azure Cosmos DB hesabınız güçlü tutarlılık dışında bir tutarlılık düzeyiyle yapılandırılmışsa Olasılıksal Sınırlanmış Eskime Durumu (PBS) ölçümünü gözden geçirin. Ölçüm, istemcilerinizin iş yükleriniz için güçlü ve tutarlı okumalar alma olasılığını yakalar. Bu ölçüm Azure portal kullanıma sunulur. PBS ölçümü hakkında daha fazla bilgi edinmek için bkz. OlasıLığa Bağlı Sınırlanmış Eskime Durumu (PBS) ölçümünü izleme.

Olasılıksal olarak sınırlanmış eskime durumu, nihai tutarlılığınızın nihai olarak nasıl olduğunu gösterir. Bu ölçüm, Azure Cosmos DB hesabınızda yapılandırdığınız tutarlılık düzeyinden ne sıklıkta daha güçlü bir tutarlılık elde ettiğinize ilişkin bir içgörü sağlar. Başka bir deyişle, yazma ve okuma bölgelerinin bir bileşimi için tutarlı okumalar alma olasılığını (milisaniye cinsinden ölçülür) görebilirsiniz.

Apache Cassandra'da yazma istekleri için genel güçlü tutarlılık

Apache Cassandra, veya QUORUM ayarı EACH_QUORUM güçlü bir tutarlılık sağlar. Bir bölgeye yazma isteği gönderildiğinde, EACH_QUORUM verileri her veri merkezindeki düğümlerin çekirdek sayısında kalıcı hale döndürür. Bu kalıcılık, yazma işleminin başarılı olması için her veri merkezinin kullanılabilir olmasını gerektirir. QUORUM biraz daha az kısıtlayıcıdır ve yazma işleminin başarılı olduğunu kabul etmeden önce verileri kalıcı hale getirmek için gereken tüm veri merkezlerinde bir QUORUM dizi düğüm bulunur.

Aşağıdaki grafikte Apache Cassandra'da iki bölge 1 ile 2 arasında genel güçlü bir tutarlılık ayarı gösterilmektedir. Veriler bölge 1'e yazıldıktan sonra, uygulama tarafından bir onay alınmadan önce yazma işleminin hem bölge 1'deki hem de bölge 2'deki düğümlerin çekirdek sayısında kalıcı hale getirilmesi gerekir.

Apache Cassandra'da genel yazma tutarlılığı diyagramı.

Apache Cassandra için Azure Cosmos DB'de yazma istekleri için genel güçlü tutarlılık

Azure Cosmos DB tutarlılığı hesap düzeyinde ayarlanır. Strong Cassandra için Azure Cosmos DB'de tutarlılık sayesinde veriler hesabın okuma bölgelerine zaman uyumlu olarak çoğaltılır. Azure Cosmos DB hesabının bölgeleri ne kadar ayrı olursa tutarlı yazma işlemlerinin gecikme süresi de o kadar yüksek olur.

Apache Cassandra için Azure Cosmos DB'de genel yazma tutarlılığı diyagramı.

Bölge sayısı okuma veya yazma isteğinizi nasıl etkiler:

  • İki bölge: Güçlü tutarlılık ile çekirdek (N/2 + 1) = 2. Bu nedenle, okuma bölgesi kapanırsa yazma işleminin çoğaltılması için bir çekirdek sayısı kullanılamadığından, hesap artık güçlü tutarlılık ile yazmaları kabul etmez.
  • Üç veya daha fazla bölge: için N = 3, quorum = 2. Okuma bölgelerinden biri çalışmıyorsa, yazma bölgesi yine de yazmaları çekirdek gereksinimini karşılayan toplam iki bölgeye çoğaltabilir. Benzer şekilde, dört bölge ile. quorum = 4/2 + 1 = 3 Tek bir okuma bölgesi kapatılırken bile çekirdek karşılanabilir.

Not

Tüm yazma işlemleri için küresel olarak güçlü bir tutarlılık gerekiyorsa Cassandra hesabı için Azure Cosmos DB tutarlılığı Güçlü olarak ayarlanmalıdır. Yazma işlemleri için tutarlılık düzeyi, Azure Cosmos DB'de istek başına daha düşük bir tutarlılık düzeyine geçersiz kılınamaz.

Apache Cassandra'da yazma istekleri için daha zayıf tutarlılık

, , ONE, TWOTHREE, LOCAL_QUORUMSerial veya Local_Serial? tutarlılık düzeyi ANY Altı düğümlü bir veri merkezinde ile 4 bir LOCAL_QUORUMRF yazma isteği düşünün. Quorum = 4/2 + 1 = 3.

Apache Cassandra'da genel olmayan yazma tutarlılığı diyagramı.

Apache Cassandra için Azure Cosmos DB'de yazma istekleri için daha zayıf tutarlılık

Tutarlılık düzeylerinden herhangi biri değerinden Strongdaha düşük olan bir yazma isteği gönderildiğinde, yerel bölge dört çoğaltmadan en az üç tanesinde yazma işlemine devam eder etmez bir başarı yanıtı döndürülür.

Apache Cassandra için Azure Cosmos DB'de genel olmayan yazma tutarlılığı diyagramı.

Apache Cassandra'da okuma istekleri için küresel güçlü tutarlılık

tutarlılığı EACH_QUORUMile Apache Cassandra'da tutarlı bir okuma elde edilebilir. 'de, her bölgede düğümlerin çekirdek sayısı karşılanmazsa için çok bölgeli bir kurulum EACH_QUORUM yapılır ve okuma başarısız olur.

Apache Cassandra'da genel okuma tutarlılığı diyagramı.

Apache Cassandra için Azure Cosmos DB'de okuma istekleri için genel güçlü tutarlılık

Okuma isteği belirtilen bölgedeki iki çoğaltmadan sunulur. Yazma işlemi zaten yeterli sayıda bölgede (ve her bölge kullanılabilir durumdaysa tüm bölgelerde) kalıcı hale getirmekle ilgilendiğinden, belirtilen bölgedeki iki çoğaltmadan okuma güçlü tutarlılık sağlar. Bu güçlü tutarlılık, Cosmos DB hesabı için bir bölgede okuma işlemi yapılırken sürücüde belirtilmesi ve hesabın varsayılan tutarlılık düzeyi olarak Güçlü Tutarlılık'ın belirtilmesi gerekir EACH_QUORUM .

Apache Cassandra için Azure Cosmos DB'de genel okuma tutarlılığı diyagramı.

Apache Cassandra'da yerel güçlü tutarlılık

tutarlılık düzeyi TWO, THREEveya LOCAL_QUORUM olan bir okuma isteği, yerel bölgeden güçlü tutarlılık okuması sağlar. tutarlılık düzeyiyle LOCAL_QUORUM, başarılı bir okuma için belirtilen veri merkezinde iki düğümden yanıt almanız gerekir.

Apache Cassandra'da yerel güçlü okuma tutarlılığı diyagramı.

Apache Cassandra için Azure Cosmos DB'de yerel güçlü tutarlılık

Cassandra için Azure Cosmos DB'de tutarlılık düzeyine TWOTHREE sahip veya LOCAL_QUORUM okuma isteği için yerel güçlü tutarlılık sağlar. Yazma yolu dört çoğaltmadan en az üçüne çoğaltmayı garanti ettiğinden, belirtilen bölgedeki iki çoğaltmadan okuma işlemi, o bölgedeki verilerin çekirdek okumasını garanti eder.

Apache Cassandra için Azure Cosmos DB'de yerel güçlü okuma tutarlılığı diyagramı.

Apache Cassandra'da nihai tutarlılık

ve tutarlılık düzeyi LOCAL_ONEOneANY with LOCAL_ONE nihai tutarlılığa neden olur. Bu tutarlılık, odağın gecikme süresine bağlı olduğu durumlarda kullanılır.

Apache Cassandra'da nihai okuma tutarlılığı diyagramı.

Apache Cassandra için Azure Cosmos DB'de nihai tutarlılık mı?

veya Any tutarlılık düzeyi LOCAL_ONEONE size nihai tutarlılık sağlar. Nihai tutarlılık ile, belirtilen bölgedeki çoğaltmalardan yalnızca birinden okuma sağlanır.

Apache Cassandra için Azure Cosmos DB'de nihai okuma tutarlılığı diyagramı.

Cassandra için Azure Cosmos DB'de okuma işlemleri için tutarlılık düzeyini geçersiz kılma

Daha önce, okuma istekleri için tutarlılık düzeyi yalnızca hesapta varsayılan olarak ayarlanandan daha düşük bir tutarlılık için geçersiz kılınabiliyordu. Örneğin, Varsayılan Güçlü tutarlılığıyla okuma istekleri varsayılan olarak Strong ile birlikte ve istek başına (gerekirse) Güçlü'den daha zayıf bir tutarlılık düzeyine geçersiz kılınabilir. Ancak okuma istekleri, hesabın varsayılan değerinden daha yüksek geçersiz kılınmış bir tutarlılık düzeyiyle verilemiyordu. Nihai tutarlılığa sahip bir hesap, Son'dan daha yüksek bir tutarlılık düzeyine sahip okuma isteklerini alamadı (Apache Cassandra sürücülerinde , THREELOCAL_QUORUM veya QUORUMolarak çevrilirTWO).

Cassandra için Azure Cosmos DB artık okuma isteklerindeki tutarlılığı hesabın varsayılan tutarlılığından daha yüksek bir değere geçersiz kılmayı kolaylaştırıyor. Örneğin, Cosmos DB hesabındaki varsayılan tutarlılık Nihai (apache Cassandra eşdeğeri One veya ANY) olarak ayarlandığında, okuma istekleri istek başına olarak LOCAL_QUORUMolarak geçersiz kılınabilir. Bu geçersiz kılma, tarafından gerektiği LOCAL_QUORUMgibi sonuç kümesini döndürmeden önce belirtilen bölgedeki çekirdek sayısına başvurulmasını sağlar.

Bu seçenek, yalnızca okuma istekleri için gerekli olduğunda değerinden yüksek Eventualbir varsayılan tutarlılık ayarlama gereksinimini de önler.

Sonraki adımlar

Azure Cosmos DB için genel dağıtım ve tutarlılık düzeyleri hakkında daha fazla bilgi edinin: