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_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 üçü yazma işlemini diske işler ve yalnızca bellek içi işleme günlüğü DEĞİlDR.
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'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ığı TWO
için, bu tutarlılık ile yazma ve okuma ONE
ile eşdeğerdirQUOROM
.
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 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
, 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ılma | Geçersiz kılma efekti |
---|---|---|
Strong |
All |
Hiçbir etkisi yok (olarak strong kalır) |
Strong |
Quorum |
Hiçbir etkisi yok (olarak strong kalır) |
Strong |
LocalQuorum |
Hiçbir etkisi yok (olarak strong kalır) |
Strong |
Two |
Hiçbir etkisi yok (olarak strong kalır) |
Strong |
Three |
Hiçbir etkisi yok (olarak strong kalır) |
Strong |
Serial |
Hiçbir etkisi yok (olarak strong kalır) |
Strong |
LocalSerial |
Hiçbir etkisi yok (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 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 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 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
, TWO
THREE
, LOCAL_QUORUM
Serial
veya Local_Serial
? tutarlılık düzeyi ANY
Altı düğümlü bir veri merkezinde ile 4
bir LOCAL_QUORUM
RF
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 üç tanesinde yazma işlemine devam eder etmez bir başarı yanıtı döndürülür.
Apache Cassandra'da okuma istekleri için küresel güçlü tutarlılık
tutarlılığı EACH_QUORUM
ile 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 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'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ğ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 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 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
ve tutarlılık düzeyi LOCAL_ONE
One
ANY 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 için Azure Cosmos DB'de nihai tutarlılık mı?
veya Any
tutarlılık düzeyi LOCAL_ONE
ONE
size nihai tutarlılık sağlar. Nihai tutarlılık ile, belirtilen bölgedeki çoğaltmalardan yalnızca birinden okuma sağlanır.
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 , THREE
LOCAL_QUORUM
veya QUORUM
olarak ç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 ç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 Eventual
bir 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: