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 garantileri 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ık düzeyi, Azure Cosmos DB hesabınızda yapılandırılan varsayılan tutarlılık düzeyine eşlenir. Yazma işleminin (CL) tutarlılığı istek başına 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 yazma işlemleri ile tek bölgeli yazma işlemleri 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 yazmalar için kullanıma 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çınma ve birden çok bölgede güçlü tutarlılık sağlama seçeneğidir.

Tek bölgeli yazma işlemleriyle, hizmet tarafından yönetilen yük devretme ile bölgeler arasında yüksek kullanılabilirlik düzeyini korurken güçlü tutarlılığı 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, yerel Apache Cassandra'nın aksine Azure Cosmos DB, CAP Teoremi denge spektrumunu daha ayrıntılı bir şekilde gezinmenize olanak tanır.

Tutarlılık düzeylerini eşleme

Azure Cosmos DB platformu, çoğaltmayla ilgili olarak iyi tanımlanmış, iş kullanım örneği odaklı 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ĞIL.

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'sinde her zaman varsayılan olarak sabit bir çekirdek yazma işlemi yapılır, bu nedenle tüm okuma tutarlılıkları kullanılabilir.

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 kararlı bir 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ü de dahil olmak üzere beş tutarlılık ayarı sağlar. Bu kolaylaştırma, bölgeler birbirine 3000 kilometre mesafede olduğu sürece 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 için geçerli 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 Etki yok (olarak strongkalır)
Strong Quorum Etki yok (olarak strongkalır)
Strong LocalQuorum Etki yok (olarak strongkalır)
Strong Two Etki yok (olarak strongkalır)
Strong Three Etki yok (olarak strongkalır)
Strong Serial Etki yok (olarak strongkalır)
Strong LocalSerial Etki 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ıksal Olarak Sınırlanmış Eskime Durumu (PBS) ölçümünü izleme.

Olasılıksal olarak sınırlanmış eskime durumu nihai tutarlılığınızı gösterir. Bu ölçüm, Azure Cosmos DB hesabınızda yapılandırdığınız tutarlılık düzeyinden daha güçlü tutarlılık elde etmek için kullanabileceğiniz 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

veya ayarı EACH_QUORUMQUORUM olan Apache Cassandra 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ı içinde 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 grafik, Apache Cassandra'da iki bölge 1 ve 2 arasında küresel güçlü tutarlılık ayarını göstermektedir. 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ı bölge kullanılamadığından, hesap artık güçlü tutarlılığı olan yazmaları kabul edemez.
  • Üç veya daha fazla bölge: için N = 3, quorum = 2. Okuma bölgelerinden biri kapalıysa, yazma bölgesi yine de yazma işlemini çekirdek gereksinimini karşılayan toplam iki bölgeye çoğaltabilir. Benzer şekilde, dört bölge quorum = 4/2 + 1 = 3ile. Tek bir okuma bölgesi kapalı olsa 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şlemlerinin tutarlılık düzeyi, Azure Cosmos DB'de istek temelinde 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

Tutarlılık düzeyi ANY, ONE, TWO, , LOCAL_QUORUMTHREEveya SerialLocal_Serial? 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ığının 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 Strongdüşük bir yazma isteği gönderildiğinde, yerel bölge yazma işlemi dört çoğaltmadan en az üç tanesinde kalıcı hale gelir gelmez 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 genel güçlü tutarlılık

tutarlılığı EACH_QUORUMile Apache Cassandra'da tutarlı bir okuma elde edilebilir. 'de, düğüm çekirdek sayısı her bölgede 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 bir bölge çekirdek sayısında (ve her bölge kullanılabiliyorsa tüm bölgelerde) kalıcı hale getirmekle ilgilendiğinden, yalnızca 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 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, bize yerel bölgeden güçlü tutarlılık okuması sağlayacaktır. 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'daki yerel güçlü okuma tutarlılığının 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 olmak veya LOCAL_QUORUM okuma isteği için yerel güçlü tutarlılık sağlar. Yazma yolu dört çoğaltmadan en az üç taneye çoğaltmayı garanti ettiğinden, belirtilen bölgedeki iki çoğaltmadan okuma, 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

tutarlılık düzeyi LOCAL_ONEve OneANY with LOCAL_ONE nihai tutarlılığa neden olur. Bu tutarlılık, odağın gecikme süresinde olduğu durumlarda kullanılır.

Apache Cassandra'da nihai okuma tutarlılığının 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ğlayacaktır. Nihai tutarlılık ile, belirtilen bölgedeki çoğaltmalardan yalnızca birinden okuma hizmeti sunulur.

Apache Cassandra için Azure Cosmos DB'de nihai okuma tutarlılığının 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 isteklerinin 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 Güçlü ile birlikte ve istek temelinde (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ış tutarlılık düzeyiyle verilemiyordu. Nihai tutarlılığa sahip bir hesap, Son'dan yüksek bir tutarlılık düzeyine sahip okuma isteklerini alamaz (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 ayarlanmışsa, okuma istekleri istek başına olarak LOCAL_QUORUMolarak geçersiz kılınabilir. Bu geçersiz kılma, LOCAL_QUORUMsonuç kümesini döndürmeden önce belirtilen bölgedeki çoğaltmaların çekirdek sayısına başvurulmasını sağlar.

Bu seçenek, yalnızca okuma istekleri için gerekli olduğunda değerinden daha 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: