Apache Cassandra için Apache Cassandra ve 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 sağlamak 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şlemi (CL) için tutarlılık, 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 çoklu ana sistemdir ve okumalar için çok bölgeli çoğaltma ile tek bölgeli yazma işlemleri için hazır 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 güçlü tutarlılığı korurken, hizmet tarafından yönetilen yük devretme ile bölgeler arasında yüksek kullanılabilirlik düzeyini korumaya devam edebilirsiniz. Bu yapılandırmada, istek başına nihai tutarlılığa düşürerek okuma gecikmesini azaltmak için veri yerelliğinden yararlanmaya devam edebilirsiniz. Bu özelliklere ek olarak, Azure Cosmos DB platformu 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 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ı sunar. Bu tutarlılık ayarlarına yönelik dengeler 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 yazmalarla çok bölgeli okumalar ve çok bölgeli yazma işlemleri gösterilmektedir.
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_QUORUM
veya 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 üçünde diske yazma işlemi yapılır ve yalnızca bellek içi işleme günlüğü OLMAZ.
ONE
, LOCAL_ONE
veya 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ırız. Okuma tutarlılığı TWO
için, bu tutarlılık ile yazma ve okuma ONE
ile QUOROM
eşdeğerdir.
Serial
veya 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 km 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 uygun 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
, session
ve 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ıl | Geçersiz kılma efekti |
---|---|---|
Strong |
All |
Hiçbir etkisi yoktur (olarak strong kalır) |
Strong |
Quorum |
Hiçbir etkisi yoktur (olarak strong kalır) |
Strong |
LocalQuorum |
Hiçbir etkisi yoktur (olarak strong kalır) |
Strong |
Two |
Hiçbir etkisi yoktur (olarak strong kalır) |
Strong |
Three |
Hiçbir etkisi yoktur (olarak strong kalır) |
Strong |
Serial |
Hiçbir etkisi yoktur (olarak strong kalır) |
Strong |
LocalSerial |
Hiçbir etkisi yoktur (olarak strong kalı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 , session veya consistent prefix |
All |
İzin verilmiyor (hata) |
Bounded staleness , session veya consistent prefix |
Quorum |
İzin verilmiyor (hata) |
Bounded staleness , session veya consistent prefix |
LocalQuorum |
İzin verilmiyor (hata) |
Bounded staleness , session veya consistent prefix |
Two |
İzin verilmiyor (hata) |
Bounded staleness , session veya consistent prefix |
Three |
İzin verilmiyor (hata) |
Bounded staleness , session veya consistent prefix |
Serial |
İzin verilmiyor (hata) |
Bounded staleness , session veya consistent prefix |
LocalSerial |
İzin verilmiyor (hata) |
Bounded staleness , session veya consistent prefix |
One |
Tutarlılık değişiklikleri Eventual |
Bounded staleness , session veya consistent prefix |
LocalOne |
Tutarlılık değişiklikleri Eventual |
Bounded staleness , session veya consistent prefix |
Any |
İzin verilmiyor (hata) |
Bounded staleness , session veya 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 (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ında kullanıma sunulur. PBS ölçümü hakkında daha fazla bilgi edinmek için bkz . Olasılıksal Sınırlanmış Eskime (PBS) ölçümünü izleme.
Olasılıksal olarak sınırlanmış eskime durumu nihai tutarlılığınızın ne kadar nihai 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 birleş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ı 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 QUORUM
yazma işleminin başarılı olması için verileri kalıcı hale getirmek için gereken tüm veri merkezlerinde bir dizi düğüm bulunur.
Aşağıdaki grafikte Apache Cassandra'da iki bölge 1 ile 2 arasında genel olarak 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ı olması gerekir.
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.
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 çekirdek sayısı kullanılamadığından, hesap artık güçlü tutarlılıkta yazmaları kabul edemez. - Üç veya daha fazla bölge: için
N = 3
,quorum = 2
. Okuma bölgelerinden biri çalışmıyorsa, yazma bölgesi yine de yazma işlemini çekirdek gereksinimini karşılayan toplam iki bölgeye çoğaltabilir. Benzer şekilde, dört bölgeyle,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şlemlerinin 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
, TWO
, THREE
, LOCAL_QUORUM
Serial
veya Local_Serial
? tutarlılık düzeyi ANY
altı düğümlü bir veri merkezinde ile 4
ile LOCAL_QUORUM
RF
bir yazma isteği düşünün. Quorum = 4/2 + 1 = 3
.
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 Strong
daha düşük olan bir yazma isteği gönderildiğinde, yerel bölge dört çoğaltmadan en az üçindeki yazma işlemine devam eder etmez bir başarı yanıtı döndürülür.
Apache Cassandra'da okuma istekleri için genel güçlü tutarlılık
tutarlılığı ile EACH_QUORUM
Apache Cassandra'da tutarlı bir okuma elde edilebilir. içinde, her bölgede çekirdek düğüm sayısı karşılanmazsa için çok bölgeli bir kurulum EACH_QUORUM
, okuma başarısız olur.
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ılabilir durumdaysa tüm bölgelerde) kalıcı hale geldikten sonra, 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 hesap için varsayılan tutarlılık düzeyi olarak Güçlü Tutarlılık'ın belirtilmesi gerekir EACH_QUORUM
.
Apache Cassandra'da yerel güçlü tutarlılık
tutarlılık düzeyi TWO
, THREE
veya LOCAL_QUORUM
olan bir okuma isteği, yerel bölgeden güçlü tutarlılık okuması sağlamamızı 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 için Azure Cosmos DB'de yerel güçlü tutarlılık
Cassandra için Azure Cosmos DB'de tutarlılık düzeyine TWO
THREE
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 üçü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'da nihai tutarlılık
tutarlılık düzeyi LOCAL_ONE
One
ve ANY 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 için Azure Cosmos DB'de nihai tutarlılık mı?
tutarlılık düzeyi LOCAL_ONE
ONE
veya Any
size nihai tutarlılık verir. Nihai tutarlılık ile, belirtilen bölgedeki çoğaltmalardan yalnızca birinden bir okuma sunulur.
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 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ış tutarlılık düzeyiyle verilemiyordu. Nihai tutarlılığa sahip bir hesap, Nihai'den daha yüksek bir tutarlılık düzeyine sahip okuma isteklerini alamadı (Apache Cassandra sürücülerinde , THREE
LOCAL_QUORUM
veya QUORUM
öğesine ç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_QUORUM
olarak geçersiz kılınabilir. Bu geçersiz kılma, tarafından gerektiği LOCAL_QUORUM
gibi sonuç 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 Eventual
daha yüksek bir varsayılan tutarlılık ayarlama gereksinimini de önler.