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

ŞUNUN IÇIN GEÇERLIDIR: SQL API Cassandra API Gremlin API Tablo API'si MongoDB için Azure Cosmos DB API'si

Yüksek kullanılabilirlik, düşük gecikme süresi veya her ikisi için çoğaltmayı kullanan dağıtılmış veritabanları, PACELC teoremi tarafından tanımlanan okuma tutarlılığı, kullanılabilirlik, gecikme süresi ve aktarım hızı arasında temel bir denge oluşturmalıdır. Güçlü tutarlılık modelinin doğrusal hale getirilebilirliği, veri programlamanın altın standardıdır. Ancak verilerin büyük mesafelerde çoğaltılması ve işlenmesi gerekmesi nedeniyle daha yüksek yazma gecikme sürelerinden yüksek bir fiyat ekler. Veriler her bölgede çoğaltılamadığı ve işlenemediğinden güçlü tutarlılık da daha az kullanılabilirlik (hatalar sırasında) ile karşılaşabilir. Nihai tutarlılık daha yüksek kullanılabilirlik ve daha iyi performans sunar, ancak tüm bölgelerde veriler tamamen tutarlı olmayabileceği için uygulamaları programlamak daha zordur.

Bugün piyasada bulunan çoğu ticari olarak kullanılabilir dağıtılmış NoSQL veritabanı yalnızca güçlü ve nihai tutarlılık sağlar. Azure Cosmos DB beş iyi tanımlanmış düzey sunar. En güçlüden en zayıfa düzeyler şunlardır:

Varsayılan tutarlılık düzeyi hakkında daha fazla bilgi için bkz. Varsayılan tutarlılık düzeyini yapılandırma veya varsayılan tutarlılık düzeyini geçersiz kılma.

Her düzey kullanılabilirlik ve performans dengelemeleri sağlar. Aşağıdaki görüntüde spektrum olarak farklı tutarlılık düzeyleri gösterilmektedir.

Spektrum olarak tutarlılık

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

Azure Cosmos DB, popüler veritabanları için kablo protokolü uyumlu API'ler için yerel destek sağlar. Bunlar MongoDB, Apache Cassandra, Gremlin ve Azure Tablo depolamadır. Gremlin API ve Tablo API'sini kullanırken, Azure Cosmos hesabında yapılandırılan varsayılan tutarlılık düzeyi kullanılır. Cassandra API ile MongoDB için API ile Azure Cosmos DB'nin tutarlılık düzeyleri arasındaki tutarlılık düzeyi eşlemesi hakkında ayrıntılı bilgi için bkz. Cassandra API tutarlılık eşlemesi ve MongoDB tutarlılık eşlemesi için API.

Okuma tutarlılığının kapsamı

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

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

Azure Cosmos hesabınızda istediğiniz zaman varsayılan tutarlılık düzeyini 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ı veya veritabanında verilen tüm okumalar ve sorgular varsayılan olarak belirtilen tutarlılık düzeyini kullanır. Daha fazla bilgi edinmek için bkz. Varsayılan tutarlılık düzeyini yapılandırma. Ayrıca belirli bir isteğin varsayılan tutarlılık düzeyini geçersiz kılabilirsiniz. Daha fazla bilgi edinmek için Varsayılan tutarlılık düzeyini geçersiz kılma makalesine bakın.

İpucu

Varsayılan tutarlılık düzeyini geçersiz kılma yalnızca SDK istemcisi içindeki okuma işlemleri için geçerlidir. Varsayılan olarak güçlü tutarlılık için yapılandırılmış bir hesap, hesaptaki her bölgeye eşzamanlı olarak veri yazmaya ve çoğaltmaya devam eder. SDK istemci örneği veya isteği bunu Oturum veya daha zayıf tutarlılık ile geçersiz kıldığında, okuma işlemleri tek bir çoğaltma kullanılarak gerçekleştirilir. Daha fazla bilgi 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, uygulamayı yeniden başlatarak 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 garantiler

Azure Cosmos DB, okuma isteklerinin yüzde 100'ünün seçilen tutarlılık düzeyi için tutarlılık garantisini karşılamasını garanti eder. TLA+ belirtim dili kullanılarak Azure Cosmos DB'deki beş tutarlılık düzeyinin tam tanımları azure-cosmos-tla GitHub deposunda sağlanı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ğrusal hale getirilebilirlik, isteklerin eşzamanlı olarak sunulmasını ifade eder. Okumaların bir öğenin en son işlenen sürümünü döndürmesi garanti edilir. İstemci hiçbir zaman kaydedilmemiş veya kısmi yazma görmez. Kullanıcıların her zaman en son işlenen yazma işlemini okuması garanti edilir.

Aşağıdaki grafikte, müzik notaları ile güçlü tutarlılık gösterilmektedir. Veriler "Batı ABD 2" bölgesine yazıldıktan sonra, diğer bölgelerdeki verileri okuduğunuzda 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ırlanmış eskime durumu tutarlılığında, okumaların tutarlı ön ek garantisine uygun olması garanti edilir. Okumalar, bir öğenin en çok "K" sürümüne ("güncelleştirmeler") veya "T" zaman aralığına göre (hangisi önce ulaşılırsa) yazmaların gerisinde kalabilir. Başka bir deyişle, sınırlanmış eskime durumunu seçtiğinizde "eskime durumu" iki şekilde yapılandırılabilir:

  • Öğenin sürüm sayısı (K)
  • Okuma zaman aralığı (T) yazmaların gerisinde kalabilir

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

Sınırlanmış eskime durumu, "eskime penceresi" dışında toplam genel düzen sunar. bir istemci yazmaları kabul eden bir bölge içinde okuma işlemleri gerçekleştirdiğinde, sınırlanmış eskime tutarlılığı tarafından sağlanan garantiler, güçlü tutarlılık tarafından sağlanan garantilerle aynıdır. Eskime penceresi zaman veya güncelleştirmeler için yaklaştıkça (hangisi daha yakınsa) hizmet, çoğaltmanın tutarlılık garantisini yakalamasına ve buna uygun hale getirmesine olanak sağlamak için yeni yazmaları kısıtlar.

Eskime süresi penceresinin içinde Sınırlanmış Eskime Durumu aşağıdaki tutarlılık garantilerini sağlar:

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

  • Tek yazma bölgesi olan bir hesap için farklı bölgelerdeki istemciler için tutarlılık = Tutarlı Ön Ek

  • 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ırlanmış eskime durumu genellikle düşük yazma gecikmesi bekleyen ancak toplam genel sipariş garantisi gerektiren genel olarak dağıtılmış uygulamalar tarafından seçilir. Sınırlanmış eskime durumu, grup işbirliği ve paylaşım, hisse senedi değer çizgisi, yayımlama-abone olma/kuyruğa alma vb. içeren uygulamalar için mükemmeldir. Aşağıdaki grafikte, müzik notalarıyla sınırlanmış eskime durumu tutarlılığı gösterilmektedir. Veriler "Batı ABD 2" bölgesine yazıldıktan sonra, "Doğu ABD 2" ve "Doğu Avustralya" bölgeleri, yapılandırılmış maksimum gecikme süresine veya maksimum işlemlere göre yazılı değeri okur:

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

Oturum tutarlılığı

Oturum tutarlılığında, tek bir istemci oturumunda okumaların tutarlı ön ek, monoton okuma, monoton yazma, yazmanızı okuma ve yazma takip eden okuma garantilerini yerine getirmek için garanti edilir. Bu, tek bir "yazar" oturumunu veya birden çok yazar için oturum belirtecini paylaştığını varsayar.

Oturum dışında yazma işlemi gerçekleştiren istemciler aşağıdaki garantileri görür:

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

  • Tek yazma bölgesi olan bir hesap için farklı bölgelerdeki istemciler için tutarlılık = Tutarlı Ön Ek

  • 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 birden çok bölgeye yazan istemciler için tutarlılık = Son

  • Azure Cosmos DB tümleşik önbelleğini = kullanan istemciler için tutarlılıkNihai

    Oturum tutarlılığı hem tek bölge hem de genel olarak dağıtılmış uygulamalar için en yaygın kullanılan tutarlılık düzeyidir. Son tutarlılık ile karşılaştırılabilir yazma gecikme süreleri, kullanılabilirlik ve okuma aktarım hızı sağlar, aynı zamanda bir kullanıcı bağlamında çalışmak üzere yazılmış uygulamaların gereksinimlerine uygun tutarlılık garantileri sağlar. Aşağıdaki grafikte, müzik notalarıyla oturum tutarlılığı gösterilmektedir. "Batı ABD 2 yazıcısı" ve "Batı ABD 2 okuyucusu" aynı oturumu (Oturum A) kullandığından, ikisi de aynı verileri aynı anda okur. "Doğu Avustralya" bölgesi "Oturum B"yi kullandığından verileri daha sonra ancak yazma işlemleriyle aynı sırada alır.

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

Tutarlı ön ek tutarlılığı

Tutarlı ön ekte, tek belge yazma işlemi olarak yapılan güncelleştirmeler nihai tutarlılığı görür. bir işlem içinde toplu iş olarak yapılan Güncelleştirmeler, işlendikleri işlemle tutarlı olarak döndürülür. Birden çok belgenin işlem içindeki yazma işlemleri her zaman birlikte görünür.

Doc1 ve Doc2 belgelerinde T1 ve T2 işlemleri içinde iki yazma işleminin gerçekleştirildiğini varsayalım. İstemci herhangi bir çoğaltmada okuma işlemi yaparken, kullanıcı "Doc1 v1 ve Doc2 v1" veya " Doc1 v2 ve Doc2 v2" ifadesini görür ancak aynı okuma veya sorgu işlemi için hiçbir zaman "Doc1 v1 ve Doc2 v2" veya "Doc1 v2 ve Doc2 v1" görmez.

İşlem bağlamında Tutarlı Ön Ek için tutarlılık garantileri aşağıdadır (tek belge yazma işlemlerinde nihai tutarlılık gösterilir):

  • Tek yazma bölgesi olan bir hesap için aynı bölgedeki istemciler için tutarlılık = Tutarlı Ön Ek
  • Tek yazma bölgesi olan bir hesap için farklı bölgelerdeki istemciler için tutarlılık = Tutarlı Ön Ek
  • 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 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 zaman sıra dışı yazmaları 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.

İstemci daha önce okuduğundan daha eski değerleri okuyabileceğinden, nihai tutarlılık en zayıf tutarlılık biçimidir. Nihai tutarlılık, uygulamanın herhangi bir sipariş garantisi gerektirmediği durumlarda idealdir. Retweets, Beğeniler veya yazışma olmayan açıklamaların sayısı örnek olarak verilebilir. Aşağıdaki grafikte, müzik notalarıyla nihai tutarlılık gösterilmektedir.

nihai tutarlılığın viIllustration

Pratikte tutarlılık garantileri

Uygulamada genellikle daha güçlü tutarlılık garantileri alabilirsiniz. Okuma işlemi için tutarlılık garantileri, istediğiniz veritabanı durumunun güncelliğine ve sıralamasına karşılık gelir. Okuma tutarlılığı, yazma/güncelleştirme işlemlerinin sıralamasına ve yayılmasına bağlıdır.

Veritabanında yazma işlemi yoksa, nihai, 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ığa Bağlı Eskime Durumu (PBS) ölçümüne bakarak istemcilerinizin iş yükleriniz için güçlü ve tutarlı okumalar alma olasılığını öğrenebilirsiniz. Bu ölçüm Azure portal kullanıma sunulur. Daha fazla bilgi edinmek için bkz. Olasılıksal Sınırlanmış Eskime Durumu (PBS) ölçümünü izleme.

Olasılıksal sınırlanmış eskime durumu nihai tutarlılığınızı gösterir. Bu ölçüm, Azure Cosmos hesabınızda yapılandırdığınız tutarlılık düzeyinden daha güçlü bir 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 birleşimi için güçlü tutarlı okumalar elde etme olasılığını (milisaniye cinsinden ölçülür) görebilirsiniz.

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

Tüm tutarlılık düzeyleri için okuma gecikmesinin her zaman 99. yüzdebirlik dilimde 10 milisaniyeden az olacağı garanti edilir. 50. yüzdebirlik dilimde 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 dilimde 10 milisaniyenin altında olacağı garanti edilir. 50. yüzdebirlik dilimde ortalama yazma gecikmesi genellikle 5 milisaniye veya daha kısadır. Çeşitli bölgelere yayılan ve güçlü tutarlılık ile yapılandırılan Azure Cosmos hesapları bu garantinin bir istisnasıdır.

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

Birden fazla bölgeyle güçlü tutarlılık ile yapılandırılan Azure Cosmos hesaplarında yazma gecikme süresi, en uzak iki bölgeden herhangi biri arasında iki kez gidiş dönüş süresine (RTT) ve 99. yüzdebirlik dilimde 10 milisaniyeye eşittir. Güçlü tutarlılık bir işlemi ancak bir hesaptaki tüm bölgelere işlendikten sonra tamamladığından bölgeler arasındaki yüksek ağ RTT'leri Cosmos DB istekleri için daha yüksek gecikme süresine dönüşür.

RtT gecikme süresi, ışık hızı uzaklığı ve Azure ağ topolojisinin bir işlevidir. Azure ağı iki Azure bölgesi arasında RTT için herhangi bir gecikme süresi SLA'sı sağlamaz, ancak 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 görüntülenir. Azure Cosmos hesabınızla ilişkili çeşitli bölgeler arasındaki çoğaltma gecikme sürelerini izlemek için Azure portal kullanabilirsiniz (Ölçümler dikey penceresine gidin, Tutarlılık sekmesini seçin).

Önemli

5000 milden (8000 kilometre) fazla bölge içeren hesaplar için güçlü tutarlılık, yüksek yazma gecikme süresi nedeniyle varsayılan olarak engellenir. Bu özelliği etkinleştirmek için lütfen desteğe başvurun.

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

  • Güçlü ve sınırlanmış eskime durumu için okumalar, tutarlılık garantileri sağlamak üzere dört çoğaltma kümesindeki (azınlık çekirdeği) iki çoğaltmaya göre yapılır. Oturum, tutarlı ön ek ve son olarak tek çoğaltma okumaları yapın. Sonuç, aynı sayıda istek birimi için güçlü ve sınırlanmış eskime durumu için okuma aktarım hızının diğer tutarlılık düzeylerinin yarısı olmasıdır.

  • Ekleme, değiştirme, yükseltme ve silme gibi belirli bir 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. Güçlü tutarlılık için değişikliklerin diğer tüm tutarlılık düzeyleri için yerel çoğunluk (dört çoğaltma kümesindeki üç çoğaltma) kullanılırken her bölgede (genel çoğunluk) işlenmesi gerekir.

Tutarlılık Düzeyi Çekirdek Okumaları Çekirdek Yazma İşlemleri
Güçlü Yerel Azınlık Genel Çoğunluk
Sınırlanmış Eskime Durumu Yerel Azınlık Yerel Çoğunluk
Oturum Tek Çoğaltma (oturum belirtecini kullanarak) Yerel Çoğunluk
Tutarlı Ön Ek Tek Çoğaltma Yerel Çoğunluk
Nihai Tek Çoğaltma Yerel Çoğunluk

Not

Yerel Azınlık okumaları için okumaların RU/sn maliyeti daha zayıf tutarlılık düzeylerinin iki katıdır çünkü okumalar Güçlü ve Sınırlanmış Eskime durumu için tutarlılık garantileri sağlamak üzere 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ı halinde 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, kesintiye neden olan bir olaydan sonra kurtarma sırasında uygulamanın kaybetmeye dayanabileceği en son veri güncelleştirme süresini anlamanız gerekir. Kaybetmeyi göze alabileceğiniz güncelleştirmelerin zaman aralığı kurtarma noktası hedefi (RPO) olarak bilinir.

Aşağıdaki tabloda, bölge genelinde kesinti olması halinde tutarlılık modeli ile veri dayanıklılığı arasındaki ilişki tanımılmaktadır.

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

K = Bir öğenin "K" sürümlerinin (güncelleştirmeler) sayısı.

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

Tek bir bölge hesabı için en düşük K ve T değeri 10 yazma işlemi veya 5 saniyedir. Çok bölgeli hesaplarda en düşük K ve T değeri 100.000 yazma işlemi veya 300 saniyedir. Bu, Sınırlanmış Eskime Durumu kullanılırken veriler için en düşük RPO'yu tanımlar.

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

Dağıtılmış bir sistemin sıfır RPO'sunun ve sıfırın RTO'sunun sağlanması mümkün olmadığından, birden çok yazma bölgesiyle yapılandırılmış Cosmos hesapları güçlü tutarlılık için yapılandırılamaz. Ayrıca, herhangi bir bölgeye yazma işleminin hesap içindeki yapılandırılmış tüm bölgelere çoğaltılması ve işlenmesi gerektiğinden, birden çok yazma bölgesiyle güçlü tutarlılık kullanmanın yazma gecikmesi avantajı yoktur. Bu, tek bir yazma bölgesi hesabıyla aynı yazma gecikmesine 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: