Azure Cosmos DB'deki tutarlılık düzeyleriConsistency levels in Azure Cosmos DB

Yüksek kullanılabilirlik, düşük gecikme süresi veya her ikisi de çoğaltma kullanan dağıtılmış veritabanları kullanılabilirlik, gecikme süresi ve aktarım hızı ve okuma tutarlılığı temel etmekten olun.Distributed databases that rely on replication for high availability, low latency, or both, make the fundamental tradeoff between the read consistency vs. availability, latency, and throughput. Ticari olarak kullanılabilen en çok dağıtılmış veritabanları, geliştiricilerin iki üstün tutarlılık modeli arasından seçim yapmasını ister: güçlü tutarlılık ve nihai tutarlılık.Most commercially available distributed databases ask developers to choose between the two extreme consistency models: strong consistency and eventual consistency. Doğrizlebilirlik veya güçlü tutarlılık modeli, veri programlamasına yönelik altın standarttır.The linearizability or the strong consistency model is the gold standard of data programmability. Ancak, daha yüksek gecikme süresi (düzenli durumda) ve düşük kullanılabilirlik (hatalarda) sağlar.But it adds a price of higher latency (in steady state) and reduced availability (during failures). Öte yandan, nihai tutarlılık daha yüksek kullanılabilirlik ve daha iyi performans sunar, ancak uygulamaların program tarafından kullanılabilmesini sağlar.On the other hand, eventual consistency offers higher availability and better performance, but makes it hard to program applications.

Azure Cosmos DB olarak içeren iki uç nokta yerine seçimleri, veri tutarlılığını yaklaşıyor.Azure Cosmos DB approaches data consistency as a spectrum of choices instead of two extremes. Güçlü tutarlılık ve nihai tutarlılık, tayfın uçlarından, ancak SPI üzerinde birçok tutarlılık seçeneği vardır.Strong consistency and eventual consistency are at the ends of the spectrum, but there are many consistency choices along the spectrum. Geliştiriciler, yüksek kullanılabilirlik ve performans açısından kesin seçimler ve ayrıntılı bir denge sağlamak için bu seçenekleri kullanabilir.Developers can use these options to make precise choices and granular tradeoffs with respect to high availability and performance.

Azure Cosmos DB ile geliştiriciler beş iyi tanımlanmış tutarlılık modeli üzerinde tutarlılık spektrumu arasından seçim yapabilirsiniz.With Azure Cosmos DB, developers can choose from five well-defined consistency models on the consistency spectrum. En güçlü ve daha gevşek bir şekilde modeller, güçlü, sınırlanmış Eskime durumu, oturum, tutarlı ön ekve nihai tutarlılık içerir.From strongest to more relaxed, the models include strong, bounded staleness, session, consistent prefix, and eventual consistency. Modeller iyi tanımlanmış ve sezgisel olur ve belirli gerçek dünyada senaryolar için kullanılabilir.The models are well-defined and intuitive and can be used for specific real-world scenarios. Her model kullanılabilirlik ve performans avantajları sağlar ve SLA 'lar tarafından desteklenir.Each model provides availability and performance tradeoffs and is backed by the SLAs. Aşağıdaki görüntüde, farklı tutarlılık düzeyleri bir speklik olarak gösterilmiştir.The following image shows the different consistency levels as a spectrum.

Tutarlılık spektrumu olarak

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 bir ile yapılandırılıp yapılandırılmadığını dikkate almaksızın tüm işlemler için garanti edilir. veya birden fazla yazma bölgesi.The consistency levels are region-agnostic and are guaranteed for all operations regardless of the region from which the reads and writes are served, the number of regions associated with your Azure Cosmos account, or whether your account is configured with a single or multiple write regions.

Okuma tutarlılığı kapsamıScope of the read consistency

Bölüm anahtar aralığı veya bir mantıksal bölüm içinde kapsamlı bir tek okuma işlemi okuma tutarlılığı uygular.Read consistency applies to a single read operation scoped within a partition-key range or a logical partition. Okuma işlemi, uzak bir istemci veya saklı yordam tarafından verilebilir.The read operation can be issued by a remote client or a stored procedure.

Varsayılan tutarlılık düzeyini yapılandırmaConfigure the default consistency level

İstediğiniz zaman Azure Cosmos hesabınızdaki varsayılan tutarlılık düzeyini yapılandırabilirsiniz.You can configure the default consistency level on your Azure Cosmos account at any time. 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.The default consistency level configured on your account applies to all Azure Cosmos databases and containers under that account. Tüm okuma ve verilen bir kapsayıcı veya bir veritabanına karşı sorgular belirtilen tutarlılık düzeyi varsayılan olarak kullanır.All reads and queries issued against a container or a database use the specified consistency level by default. Daha fazla bilgi için bkz. nasıl varsayılan tutarlılık düzeyini yapılandırma.To learn more, see how to configure the default consistency level.

Tutarlılık düzeyleri ile ilişkili garanti ederGuarantees associated with consistency levels

Yüzde 100 okuma isteklerinin seçtiğiniz herhangi bir tutarlılık düzeyi için tutarlılık garantisini karşılayan Azure Cosmos DB garantisi tarafından sağlanan kapsamlı SLA'lar.The comprehensive SLAs provided by Azure Cosmos DB guarantee that 100 percent of read requests meet the consistency guarantee for any consistency level you choose. Tutarlılık düzeyi ile ilişkili tüm tutarlılık garantileri sağlanırsa Okuma isteği tutarlılık SLA karşılar.A read request meets the consistency SLA if all the consistency guarantees associated with the consistency level are satisfied. Azure-Cosmos-TLA GitHub deposunda Azure Cosmos DB içindeki beş tutarlılık DÜZEYININ, TLA + belirtim dilini kullanarak kesin tanımları sunulmaktadır.The precise definitions of the five consistency levels in Azure Cosmos DB using the TLA+ specification language are provided in the azure-cosmos-tla GitHub repo.

Beş tutarlılık düzeyi semantiği aşağıda açıklanmıştır:The semantics of the five consistency levels are described here:

  • Güçlü: Güçlü tutarlılık, bir doğrizlebilirlik garantisi sunar.Strong: Strong consistency offers a linearizability guarantee. Doğrizlebilirlik istekleri aynı anda sunma anlamına gelir.Linearizability refers to serving requests concurrently. Okuma işlemleri, bir öğe işlenen en son sürümünü döndürmek için garanti edilir.The reads are guaranteed to return the most recent committed version of an item. Bir istemci hiçbir zaman işlenmemiş ya da kısmi bir yazma görür.A client never sees an uncommitted or partial write. Kullanıcıların her zaman en son kabul edilen yazma okumak için garanti edilir.Users are always guaranteed to read the latest committed write.

  • Sınırlanmış eskimedurumu: Okumaların tutarlı ön ek garantisi kabul edilmesi garanti edilir.Bounded staleness: The reads are guaranteed to honor the consistent-prefix guarantee. Okumalar, bir öğenin en çok "K" sürümünde (yani "Updates") veya "T" zaman aralığına göre yazma işlemlerinin arkasında kalabilir.The reads might lag behind writes by at most "K" versions (i.e., "updates") of an item or by "T" time interval. Diğer bir deyişle, sınırlanmış Eskime durumu ' nu seçtiğinizde, "stalet" iki şekilde yapılandırılabilir:In other words, when you choose bounded staleness, the "staleness" can be configured in two ways:

    • Öğenin sürüm sayısı (K)The number of versions (K) of the item
    • Okumaların yazma işlemlerinin arkasında gecikme olabileceği zaman aralığı (T)The time interval (T) by which the reads might lag behind the writes

    Sınırlanmış eskime durumu teklifler toplam genel sıra dışında "eskime durumu penceresi içinde."Bounded staleness offers total global order except within the "staleness window." Monoton okuma garantisi, hem Azure içindeki hem eskime durumu penceresi dışında bir bölge içinde mevcut.The monotonic read guarantees exist within a region both inside and outside the staleness window. Güçlü tutarlılık, sınırlı stalet tarafından sunulan ile aynı semantiğe sahiptir.Strong consistency has the same semantics as the one offered by bounded staleness. Eskime durumu penceresi sıfıra eşittir.The staleness window is equal to zero. Sınırlanmış eskime durumu, doğrusallaştırılabilme zaman Gecikmeli da bilinir.Bounded staleness is also referred to as time-delayed linearizability. 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.When a client performs read operations within a region that accepts writes, the guarantees provided by bounded staleness consistency are identical to those guarantees by the strong consistency.

  • Oturum: Tek bir istemci oturumu okumalarının içinde, tutarlı ön eki (tek bir "yazıcı" oturumu varsayılıyor), monoton okuma, monoton yazmaları, okuma-yazma ve yazma işlemleri gibi bir şekilde kabul etmek garanti edilir.Session: Within a single client session reads are guaranteed to honor the consistent-prefix (assuming a single “writer” session), monotonic reads, monotonic writes, read-your-writes, and write-follows-reads guarantees. Oturum yazma işlemi dışındaki istemciler nihai tutarlılığı görür.Clients outside of the session performing writes will see eventual consistency.

  • Tutarlı ön ek: Döndürülen güncelleştirmeler, tüm güncelleştirmelerin, boşluk olmadan bazı ön eklerini içerir.Consistent prefix: Updates that are returned contain some prefix of all the updates, with no gaps. Tutarlı ön ek tutarlılık düzeyi, okumaların hiçbir şekilde sıra dışı yazmaları görmeme garantisi sağlar.Consistent prefix consistency level guarantees that reads never see out-of-order writes.

  • Son: Okuma için sıralama garantisi yoktur.Eventual: There's no ordering guarantee for reads. Başka yazma işlemlerinin olmaması durumunda, yineleme sonunda birbirine yaklaşır.In the absence of any further writes, the replicas eventually converge.

Beyzbol örneği ile açıklanan tutarlılık düzeyleriConsistency levels explained through baseball

Beyzbol oyun senaryoya örnek olarak alalım.Let's take a baseball game scenario as an example. Beyzbol oyunu baştan puanı temsil eden bir yazma dizisi düşünün.Imagine a sequence of writes that represent the score from a baseball game. İnning tarafından inning satır puanı açıklanan Beyzbol aracılığıyla veri tutarlılığı çoğaltılan kağıt.The inning-by-inning line score is described in the Replicated data consistency through baseball paper. Şu anda yedinci inning ortasında bu kuramsal Beyzbol oyundur.This hypothetical baseball game is currently in the middle of the seventh inning. Bu, yedinci – inning esnetme olur.It's the seventh-inning stretch. Ziyaretçiler aşağıda gösterildiği gibi 2-5 puanı ile geride bulunur:The visitors are behind with a score of 2 to 5 as shown below:

11 22 33 44 55 66 77 88 99 ÇalıştırmalarRuns
ZiyaretçilerVisitors 00 00 1.1 00 1.1 00 00 22
GirişHome 11 00 1.1 11 00 22 55

Azure Cosmos kapsayıcısı, ziyaretçi ve ev ekiplerinin çalışma toplamlarını tutar.An Azure Cosmos container holds the run totals for the visitors and home teams. Garanti farklı puanları okuma istemcilerle sonuçlanabilir oyun devam ederken, farklı okuyun.While the game is in progress, different read guarantees might result in clients reading different scores. Aşağıdaki tabloda her beş tutarlılık garantileri giriş puanları ve ziyaretçilerinizin okuyarak döndürülebilir puanları tam kümesini listeler.The following table lists the complete set of scores that might be returned by reading the visitors' and home scores with each of the five consistency guarantees. Ziyaretçilerinizin puanı önce listelenir.The visitors' score is listed first. Farklı olası dönüş değerleri virgülle ayrılır.Different possible return values are separated by commas.

Tutarlılık düzeyiConsistency level Puanlar (ziyaretçiler, ev)Scores (Visitors, Home)
TanımlayıcıStrong 2-52-5
Sınırlanmış eskime durumuBounded staleness En fazla bir tanesi güncel olmayan Puanlar: 2-3, 2-4, 2-5Scores that are at most one inning out of date: 2-3, 2-4, 2-5
OturumuSession
  • Yazıcı için: 2-5For the writer: 2-5
  • Yazıcı dışındaki herkes için: 0-0, 0-1, 0-2, 0-3, 4 0, 0-5, 1-0, 1-1, 1-2, 1-3, 1-4, 1-5, 2-0, 2-1, 2-2, 2-3, 2-4, 2-5For anyone other than the writer: 0-0, 0-1, 0-2, 0-3, 0-4, 0-5, 1-0, 1-1, 1-2, 1-3, 1-4, 1-5, 2-0, 2-1, 2-2, 2-3, 2-4, 2-5
  • 1-3 okumadan sonra: 1-3, 1-4, 1-5, 2-3, 2-4, 2-5After reading 1-3: 1-3, 1-4, 1-5, 2-3, 2-4, 2-5
Tutarlı ön ekConsistent prefix 0-0, 0-1, 1-1, 1-2, 1-3, 2-3, 2-4, 2-50-0, 0-1, 1-1, 1-2, 1-3, 2-3, 2-4, 2-5
NihaiEventual 0-0, 0-1, 0-2, 0-3, 4 0, 0-5, 1-0, 1-1, 1-2, 1-3, 1-4, 1-5, 2-0, 2-1, 2-2, 2-3, 2-4, 2-50-0, 0-1, 0-2, 0-3, 0-4, 0-5, 1-0, 1-1, 1-2, 1-3, 1-4, 1-5, 2-0, 2-1, 2-2, 2-3, 2-4, 2-5

Ek okumaAdditional reading

Tutarlılık kavramları hakkında daha fazla bilgi edinmek için bu makaleleri okuyun:To learn more about consistency concepts, read the following articles:

Sonraki adımlarNext steps

Azure Cosmos DB'deki tutarlılık düzeyleri hakkında daha fazla bilgi edinmek için bu makaleleri okuyun:To learn more about consistency levels in Azure Cosmos DB, read the following articles: