Azure Cosmos DB'deki tutarlılık düzeyleri

Uygulama hedefı: MongoDB için SQL API Cassandra API gremlin API tablo API'si Azure Cosmos DB API 'si

Yüksek kullanılabilirlik, düşük gecikme süresi veya her ikisi için çoğaltmaya dayanan dağıtılmış veritabanları, paclc teoreminintarafından tanımlanan okuma tutarlılığı, kullanılabilirliği, gecikme süresi ve aktarım hızı arasında temel bir zorunluluğunu getirir olmalıdır. Güçlü tutarlılık modelinin doğrizlebilirlik, veri programlamasına yönelik altın standarttır. Ancak büyük uzaklıklarda çoğaltmak ve yürütmek zorunda olması nedeniyle daha yüksek yazma gecikmeleri olan bir içerse fiyatı ekler. Veriler her bölgede çoğaltılamadığından ve işlemeden, güçlü tutarlılık de azalabilir (başarısızlık sırasında). Nihai tutarlılık daha yüksek kullanılabilirlik ve daha iyi performans sunar, ancak veriler tüm bölgelerde tamamen tutarlı olmayabilir.

Günümüzde piyasada bulunan ticari olarak kullanılabilen dağıtılmış NoSQL veritabanlarının çoğu yalnızca güçlü ve nihai tutarlılık sağlar. Azure Cosmos DB, iyi tanımlanmış beş düzeyi sunmaktadır. En güçlü ve en zayıf olan düzeyler şunlardır:

  • Güçlü
  • Sınırlanmış Eskime durumu
  • Oturumuna
  • Tutarlı ön ek
  • Son

Her düzey kullanılabilirlik ve performans avantajları sağlar. Aşağıdaki görüntüde, farklı tutarlılık düzeyleri bir speklik olarak gösterilmiştir.

Bir spekme olarak tutarlılık

tutarlılık düzeyleri bölge açısından belirsizdir ve okuma ve yazma işlemleri, Azure Cosmos hesabınızla ilişkili bölge sayısı veya hesabınızın tek veya birden çok yazma bölgesiyle yapılandırılıp yapılandırılmadığını bağımsız olarak tüm işlemler için garanti edilir.

Tutarlılık düzeyleri ve Azure Cosmos DB API’leri

Azure Cosmos DB popüler veritabanları için kablolu protokol ile uyumlu apı 'ler için yerel destek sağlar. Bunlar MongoDB, Apache Cassandra, Gremlin ve Azure Tablo depolama 'yı içerir. gremlin apı ve Tablo API'si kullanılırken, Azure Cosmos hesabında yapılandırılan varsayılan tutarlılık düzeyi kullanılır. Cassandra API veya mongodb için apı ve Azure Cosmos DB tutarlılık düzeyleri arasındaki tutarlılık düzeyi eşleme hakkında ayrıntılar için bkz. mongodb tutarlılık eşlemesi için tutarlılık eşleme ve apı 'yi Cassandra API.

Okuma tutarlılığı kapsamı

Okuma tutarlılığı, mantıksal bir bölüm kapsamındaki tek bir okuma işlemi için geçerlidir. Okuma işlemi bir uzak istemci veya saklı yordam tarafından verilebilir.

Varsayılan tutarlılık düzeyini yapılandırma

Azure Cosmos hesabınızda varsayılan tutarlılık düzeyini dilediğiniz zaman yapılandırabilirsiniz. hesabınızda yapılandırılan varsayılan tutarlılık düzeyi, bu hesap altındaki tüm Azure Cosmos veritabanları ve kapsayıcıları için geçerlidir. Bir kapsayıcıya veya bir veritabanına karşı verilen tüm okuma ve sorgular varsayılan olarak belirtilen tutarlılık düzeyini kullanır. Daha fazla bilgi için bkz. varsayılan tutarlılık düzeyini yapılandırma. Ayrıca, belirli bir istek için varsayılan tutarlılık düzeyini geçersiz kılabilirsiniz, daha fazla bilgi edinmek için bkz. varsayılan tutarlılık düzeyi makalesini geçersiz kılma .

İpucu

Varsayılan tutarlılık düzeyini geçersiz kılmak yalnızca SDK istemcisi içindeki okumalar için geçerlidir. Varsayılan olarak güçlü tutarlılık için yapılandırılmış bir hesap, verileri, hesaptaki her bölgeye zaman uyumlu olarak yazmaya ve çoğaltmaya devam edecektir. SDK istemci örneği veya isteği bunu oturum veya daha zayıf tutarlılık ile geçersiz kılıyorsa, tek bir çoğaltma kullanılarak okuma yapılır. Daha fazla ayrıntı için bkz. tutarlılık düzeyleri ve aktarım hızı .

Önemli

Varsayılan tutarlılık düzeyini değiştirdikten sonra herhangi bir SDK örneğinin yeniden oluşturulması gerekir. Bu, uygulama yeniden başlatılarak yapılabilir. Bu, SDK 'nın yeni varsayılan tutarlılık düzeyini kullanmasını sağlar.

Tutarlılık düzeyleriyle ilişkili garanti garantisi

Azure Cosmos DB, okuma isteklerinin yüzde 100 ' unun seçilen tutarlılık düzeyi için tutarlılık garantisi karşıladığını garanti eder. Azure-cosmos-tla GitHub deposunda, Azure Cosmos DB 'de, TLA + belirtim dilini kullanarak beş tutarlılık düzeyinin kesin tanımları sunulmaktadır.

Beş tutarlılık düzeyinin semantiği aşağıdaki bölümlerde açıklanmıştır.

Güçlü tutarlılık

Güçlü tutarlılık, doğrusallaştırma garantisi sunar. Doğrizlebilirlik istekleri aynı anda sunma anlamına gelir. Okumaların, bir öğenin en son kaydedilmiş sürümünü döndürmesi garanti edilir. İstemci hiçbir şekilde işlenmemiş veya kısmi yazma görmez. Kullanıcıların her zaman en son yürütülen yazma okuma garantisi vardır.

Aşağıdaki grafikte, müzik notlarıyla güçlü tutarlılık gösterilmektedir. Veriler "Batı ABD 2" bölgesine yazıldıktan sonra, diğer bölgelerden gelen verileri okurken en son değeri alırsınız:

Güçlü tutarlılık düzeyinin çizimi

Sınırlanmış eskime durumu tutarlılığı

Sınırlı şekilde tutarlılık açısından, okuma tutarlılığı, tutarlı ön ek garantisi sağlamak açısından garanti edilir. Okumalar, bir öğenin (yani "Güncelleştirmeler" ) veya "T" zaman aralığına göre yazma işlemlerinin arkasında, hangisi önce erişilerek gecikme gösterebilir. Diğer bir deyişle, sınırlanmış Eskime durumu ' nu seçtiğinizde, "stalet" iki şekilde yapılandırılabilir:

  • Öğenin sürüm sayısı (K)
  • Zaman aralığı (T) okuma işlemleri, yazma işlemlerinin arkasında kalabilir

Tek bir bölge hesabında, K ve T en küçük değeri 10 yazma işlemi veya 5 saniyedir. Çok bölgeli hesaplar için en küçük K ve T değeri 100.000 yazma işlemleri veya 300 saniyedir.

Sınırlanmış stalet, "stalet penceresi" dışında toplam genel sıra sunar. Bir istemci, yazmaları kabul eden bir bölgede okuma işlemleri gerçekleştirdiğinde, sınırlı stalet tutarlılığı tarafından sunulan garantiler, güçlü tutarlılık açısından bu garantilerle aynıdır. Bu pencere, zaman veya güncelleştirme için yaklaşısa da, ne kadar yaklaştığı için hizmet, çoğaltmanın tutarlı olmasını sağlamak için yeni yazma işlemlerini ortadan kaldırabilir.

Stalet penceresinin içinde, sınırlanmış Eskime durumu aşağıdaki tutarlılık garantisi sağlar:

  • Tek bir yazma bölgesi olan bir hesap için aynı bölgedeki istemciler için tutarlılık = Strong

  • Tek bir yazma bölgesi = tutarlı ön ek içeren bir hesap için farklı bölgelerdeki istemciler için tutarlılık

  • Birden çok yazma bölgesi olan bir hesap için tek bir bölgeye yazan istemciler için tutarlılık = tutarlı ön ek

  • Birden çok yazma bölgesi olan bir hesap için farklı bölgelere yazan istemciler için tutarlılık = son

    Sınırlı Eskime durumu, genellikle düşük yazma gecikmeleri bekleyen ancak toplam genel sipariş garantisi gerektiren küresel olarak dağıtılan uygulamalar tarafından seçilir. Sınırlı stalet, grup işbirliği ve paylaşım, stok şeridi, yayımlama-abonelik/sıraya alma gibi uygulamalar için harika bir yöntemdir. Aşağıdaki grafik, müzik notları ile sınırlı stalet tutarlılığını gösterir. Veriler "Batı ABD 2" bölgesine yazıldıktan sonra, "Doğu ABD 2" ve "Avustralya Doğu" bölgeleri, yapılandırılan en fazla gecikme süresine veya en yüksek işlemlere göre yazılan değeri okur:

    Sınırlanmış stalet tutarlılık düzeyinin çizimi

Oturum tutarlılığı

Oturum tutarlılığı ' nda, tek bir istemci oturumu okuma, tutarlı ön ek, monoton okuma, monoton yazma, okuma-yazma ve yazma ile okuma garantisi garanti edilir. Bu, tek bir "yazıcı" oturumunun olduğunu varsayar veya birden çok yazıcı için oturum belirtecini paylaşıyor.

Oturum yazma işlemi dışındaki istemciler aşağıdaki garantilere sahip olur:

  • Tek bir yazma bölgesi = tutarlı ön ek içeren bir hesap için aynı bölgedeki istemciler için tutarlılık

  • Tek bir yazma bölgesi = tutarlı ön ek içeren bir hesap için farklı bölgelerdeki istemciler için tutarlılık

  • Birden çok yazma bölgesi olan bir hesap için tek bir bölgeye yazan istemciler için tutarlılık = tutarlı ön ek

  • Birden fazla yazma bölgesi olan bir hesap için birden çok bölgeye yazan istemciler için tutarlılık = son

    Oturum tutarlılığı, hem tek bölge hem de küresel olarak dağıtılan uygulamalar için en yaygın olarak kullanılan tutarlılık düzeyidir. Nihai tutarlılık ile karşılaştırılabilir yazma gecikmeleri, kullanılabilirlik ve okuma üretilen işi sağlar, ancak aynı zamanda bir kullanıcı bağlamında çalışmak üzere yazılmış uygulamaların ihtiyaçlarına uygun tutarlılık garantisi sağlar. Aşağıdaki grafik, müzik notları ile oturum tutarlılığını göstermektedir. "Batı ABD 2 yazıcısı" ve "Batı ABD 2 okuyucu" aynı oturumu (oturum A) kullanıyor, böylece her ikisi de aynı anda aynı verileri okur. "Avustralya Doğu" bölgesi "oturum B" kullandığından, verileri daha sonra ve yazma sırasıyla aynı sırada alır.

    Oturum tutarlılığı düzeyi çizimi

Tutarlı ön ek tutarlılığı

Tutarlı ön ek seçeneğinde, döndürülen güncelleştirmeler boşluklar olmadan tüm güncelleştirmelerin bazı ön eklerini içerir. Tutarlı ön ek tutarlılık düzeyi, okumaların hiçbir şekilde sıra dışı yazmaları görmeme garantisi sağlar.

Sıralamada yazma işlemleri gerçekleştirildiyse, istemci, veya A, B, C A A,B A,B,C gibi hiçbir bir sıra dışı permütasyon görür A,C B,A,C . Tutarlı ön ek, nihai tutarlılık ile karşılaştırılabilir yazma gecikmeleri, kullanılabilirlik ve okuma üretilen işi sağlar, ancak aynı zamanda siparişin önemli olduğu senaryoların ihtiyaçlarına uygun sıra garantisi sağlar.

Tutarlı ön ek için tutarlılık garantisi aşağıda verilmiştir:

  • Tek bir yazma bölgesi = tutarlı ön ek içeren bir hesap için aynı bölgedeki istemciler için tutarlılık
  • Tek bir yazma bölgesi = tutarlı ön ek içeren bir hesap için farklı bölgelerdeki istemciler için tutarlılık
  • Birden çok yazma bölgesi = tutarlı ön ek içeren bir hesap için tek bir bölgeye yazan istemciler için tutarlılık
  • Birden fazla yazma bölgesi olan bir hesap için birden çok bölgeye yazan istemciler için tutarlılık = son

Aşağıdaki grafikte, müzik notlarıyla tutarlılık ön eki tutarlılığı gösterilmektedir. Tüm bölgelerde okumalar hiçbir şey yazma sırası görmez:

Tutarlı ön ek çizimi

Nihai tutarlılık

Nihai tutarlılıkta okumalar için sıralama garantisi yoktur. Yazma işlemleri kesildiğinde çoğaltmalar nihai tutarlılığa ulaşacaktır.
Nihai tutarlılık en zayıf tutarlılık biçimidir çünkü istemci daha önce okuduğu değerlerden daha eski olan değerleri okuyabilir. Nihai tutarlılık, uygulamanın herhangi bir sipariş garantisi gerektirmeyen durumlara karşı idealdir. Retweet sayısı, Benzerler veya iş parçacıklı olmayan açıklamalar buna örnek olarak verilmiştir. Aşağıdaki grafikte müzik notlarına sahip nihai tutarlılıklar yer almaktadır.

nihai tutarlılığı en iyi şekilde ifade etmek

Uygulamada tutarlılık garantileri

Uygulamada, genellikle daha güçlü tutarlılık garantileri elde etmek. Okuma işlemi için tutarlılık garantileri, isteğiniz veritabanı durumunun yeniliğini ve sıralamayı gösterir. Okuma tutarlılığı, yazma/güncelleştirme işlemlerinin sıra ve yayılmasına bağlanır.

Veritabanında yazma işlemi yoksa, son , oturum veya tutarlı ön ek tutarlılık düzeylerine sahip bir okuma işlemi, güçlü tutarlılık düzeyine sahip bir okuma işlemiyle aynı sonuçları verir.

Azure Cosmos 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ırlı Eskima Durumu (PBS) ölçümüne bakarak istemcinizin iş yükleriniz için güçlü ve tutarlı okumalar elde etme olasılığını bulabilirsiniz. Bu ölçüm daha fazla bilgi Azure portal için bkz. Olasılık Sınırlayıcı Sınırlayıcı Eskima Durumu (PBS) ölçümlerini izleme.

Olasılık sınırlayıcı eski durum, nihai tutarlılığınızı gösterir. Bu ölçüm, Azure Cosmos hesabında yapılandırmış olduğunuz tutarlılık düzeyinden daha güçlü bir tutarlılık elde etmek için ne sıklıkta içgörü sağlar. Başka bir deyişle, yazma ve okuma bölgelerinin birleşimi için güçlü tutarlı okumalar alma olasılığını (milisaniye cinsinden ölçülür) görüyorsunuz.

Tutarlılık düzeyleri ve gecikme süresi

Tüm tutarlılık düzeyleri için okuma gecikme süresinin her zaman 99. yüzdebirlik değerde 10 milisaniyeden az olması garantidir. 50. yüzdebirlik değerde ortalama okuma gecikmesi genellikle 4 milisaniye veya daha kısadır.

Tüm tutarlılık düzeyleri için yazma gecikme süresinin her zaman 99. yüzdebirlik değerde 10 milisaniyeden az olması garantidir. 50. yüzdebirlik değerde ortalama yazma gecikmesi genellikle 5 milisaniye veya daha kısadır. Azure Cosmos birden fazla bölgeye yayılan ve güçlü tutarlılıkla yapılandırılan hesaplar bu garantinin bir istisnasıdır.

Yazma gecikme süresi ve Güçlü tutarlılık

Azure Cosmos fazla bölgeyle güçlü tutarlılıkla yapılandırılmış hesaplarda yazma gecikmesi, en uzak iki bölgenin herhangi biri arasında iki kez gidiş dönüş süresine (RTT) eşittir ve 99. yüzdebirlik değerde 10 milisaniyeye eşittir. Güçlü tutarlılık bir işlemi ancak bir hesap içindeki tüm bölgelere işlendikten sonra tamamlandıktan sonra, bölgeler arasında yüksek ağ RTT'leri, Cosmos DB istekleri için daha yüksek gecikme süresine neden olur.

RTT gecikme süresi, ışık hızı ve Azure ağ topolojisi işlevidir. Azure ağı iki Azure bölgesi arasında RTT için gecikme süresi SLA'sı sağlamasa da Azure ağı gidiş dönüş gecikme süresi istatistiklerini yayımlar. Azure Cosmos hesabınız için çoğaltma gecikme süreleri Azure portal. Azure Azure portal hesabınızla ilişkili çeşitli bölgeler arasındaki çoğaltma gecikme sürelerini izlemek için Azure portal (Ölçümler dikey penceresine gidin, Tutarlılık sekmesini seçin) Cosmos kullanabilirsiniz.

Önemli

Yüksek yazma gecikme süresi nedeniyle 5000 milden (8000 kilometre) fazla bölgeye yayılan bölgelerde güçlü tutarlılık varsayılan olarak engellenir. Bu özelliği etkinleştirmek için lütfen deliğe başvurun.

Tutarlılık düzeyleri ve aktarım hızı

  • Güçlü ve sınırlı eskiklik için okumalar, tutarlılık garantileri sağlamak için dört çoğaltma kümesinde (kuyruz) iki çoğaltmaya karşı yapılır. Oturum, tutarlı ön ek ve son olarak tek çoğaltma okumaları yapar. Sonuç olarak, aynı sayıda istek birimi için güçlü ve sınırlı eski durum için okuma aktarım hızı diğer tutarlılık düzeylerinin yarısıdır.

  • Ekleme, değiştirme, upsert ve silme gibi yazma işlemi türü için istek birimleri için yazma aktarım hızı tüm tutarlılık düzeyleri için aynıdır.

Tutarlılık Düzeyi Çekirdek Okumaları Çekirdek Yazma
Güçlü Local Minority Küresel Çoğunluk
Sınırlayıcı Eskima Local Minority Yerel Çoğunluk
Oturum Tek Çoğaltma (oturum belirteci kullanarak) Yerel Çoğunluk
Tutarlı Ön Ek Tek Çoğaltma Yerel Çoğunluk
Nihai Tek Çoğaltma Yerel Çoğunluk

Not

Yerel Çoğunluk okumalarının RU/sn maliyeti daha zayıf tutarlılık düzeylerinin iki katıdır çünkü okumalar Güçlü ve Sınırlı Eskiklik için tutarlılık garantileri sağlamak için iki çoğaltmadan yapılır.

Tutarlılık düzeyleri ve veri dayanıklılığı

Genel olarak dağıtılmış bir veritabanı ortamında, bölge genelinde kesinti olması durumuyla tutarlılık düzeyi ile veri dayanıklılığı arasında doğrudan bir ilişki vardır. İş sürekliliği planınızı geliştirirken, uygulamanın kesintiye neden olan bir olay sonrasında tamamen kurtarılmadan önce kabul edilebilir en uzun süreyi anlamanız gerekir. Bir uygulamanın tam olarak kurtarılma süresi kurtarma süresi hedefi (RTO) olarak bilinir. Ayrıca, uygulamanın kesintiye neden olan bir olaydan sonra kurtarılma sırasında kaybetmeyi tolere edile son veri güncelleştirmelerinin maksimum dönemini de anlamalısınız. Kaybetmeyi göze aldırabilirsiniz güncelleştirmelerin zaman dönemi kurtarma noktası hedefi (RPO) olarak bilinir.

Aşağıdaki tabloda, bölge genelinde kesinti olması durumuyla tutarlılık modeli ile veri dayanıklılığı arasındaki ilişki tanımlanmıştır. Cap Teoremi nedeniyle, dağıtılmış bir sistemde güçlü tutarlılıkla bile RPO ve RTO değeri sıfır olan bir dağıtılmış veritabanına sahip olmak mümkün değildir.

Bölge(ler) Çoğaltma modu Tutarlılık düzeyi RPO RTO
1 Tek veya Birden çok yazma bölgesi Herhangi bir Tutarlılık Düzeyi < 240 Dakika <1 Hafta
>1 Tek yazma bölgesi Oturum, Tutarlı Ön Ek, Son < 15 dakika < 15 dakika
>1 Tek yazma bölgesi Sınırlanmış Eskime Durumu K & T < 15 dakika
>1 Tek yazma bölgesi Güçlü 0 < 15 dakika
>1 Birden çok yazma bölgesi Oturum, Tutarlı Ön Ek, Son < 15 dakika 0
>1 Birden çok yazma bölgesi Sınırlanmış Eskime Durumu K & T 0

K = bir öğenin "K" sürümlerinin (yani Updates) sayısı.

T = son güncelleştirmeden bu yana "t" zaman aralığı.

Tek bir bölge hesabında, K ve T en küçük değeri 10 yazma işlemi veya 5 saniyedir. Çok bölgeli hesaplar için en küçük K ve T değeri 100.000 yazma işlemleri veya 300 saniyedir. Bu, sınırlı Stalet kullanılırken veri için minimum RPO 'yu tanımlar.

Güçlü tutarlılık ve birden çok yazma bölgesi

birden çok yazma bölgesi ile yapılandırılan Cosmos hesapları, dağıtılmış bir sistem için sıfır ve 0 ' ın bir RPO sağlaması mümkün olmadığından, güçlü tutarlılık için yapılandırılamaz. Ayrıca, birden fazla yazma bölgesiyle güçlü tutarlılık kullanılmasına yönelik yazma gecikme avantajları yoktur, çünkü herhangi bir bölgeye yazma çoğaltılmalı ve hesaptaki tüm yapılandırılmış bölgelere atanmalıdır. Bu, tek bir yazma bölgesi hesabıyla aynı yazma gecikme süresine neden olur.

Ek okuma

Tutarlılık kavramları hakkında daha fazla bilgi edinmek için aşağıdaki makaleleri okuyun:

Sonraki adımlar

Azure Cosmos DB 'deki tutarlılık düzeyleri hakkında daha fazla bilgi edinmek için aşağıdaki makaleleri okuyun: