Úrovně konzistence v Azure Cosmos DBConsistency levels in Azure Cosmos DB

Distribuované databáze, které využívají replikaci pro vysokou dostupnost, nízkou latenci nebo obojí, provedou základní kompromisy mezi konzistencí čtení a dostupností, latencí a propustností.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. Většina komerčně dostupných distribuovaných databází požádá vývojáře o výběr mezi dvěma extrémními modely konzistence: silná konzistence a konečná konzistence. strongMost commercially available distributed databases ask developers to choose between the two extreme consistency models: strong consistency and eventual consistency. Linearizability modelu silné konzistence je Gold Standard pro programovatelnost dat.The linearizability of the strong consistency model is the gold standard of data programmability. Ale přidává cenu vyšší latence zápisu (v ustáleném stavu) a omezenou dostupnost (během selhání).But it adds a price of higher write latency (in steady state) and reduced availability (during failures). Na druhé straně, konečná konzistence nabízí vyšší dostupnost a lepší výkon, ale zpřístupňuje programové aplikace.On the other hand, eventual consistency offers higher availability and better performance, but makes it hard to program applications.

Azure Cosmos DB přistupuje k konzistenci dat jako spektrum možností místo dvou extrémních hodnot.Azure Cosmos DB approaches data consistency as a spectrum of choices instead of two extremes. Vývojáři můžou tyto možnosti využít k zajištění přesného výběru a rozlišení kompromisů s ohledem na vysokou dostupnost a výkon.Developers can use these options to make precise choices and granular tradeoffs with respect to high availability and performance.

S Azure Cosmos DB můžou vývojáři vybrat z pěti jasně definovaných úrovní konzistence v rámci spektra konzistence.With Azure Cosmos DB, developers can choose from five well-defined consistency levels on the consistency spectrum. Mezi tyto úrovně patří silná, ohraničená neaktuálnost, relace, konzistentní předponaa konečná konzistence .These levels include strong, bounded staleness, session, consistent prefix, and eventual consistency. Úrovně jsou jasně definované a intuitivní a dají se použít pro konkrétní scénáře reálného světa.The levels are well-defined and intuitive and can be used for specific real-world scenarios. Každá úroveň poskytuje kompromisy k dostupnosti a výkonu a jsou zajištěny SLA.Each level provides availability and performance tradeoffs and are backed by SLAs. Následující obrázek znázorňuje různé úrovně konzistence jako spektrum.The following image shows the different consistency levels as a spectrum.

Konzistence jako spektrum

Úrovně konzistence jsou nezávislá oblasti a jsou zaručené pro všechny operace bez ohledu na oblast, ze které jsou předávány čtení a zápisy, počet oblastí přidružených k vašemu účtu Azure Cosmos nebo zda je váš účet nakonfigurován s jednou nebo více oblastmi zápisu.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.

Rozsah konzistence čteníScope of the read consistency

Konzistence čtení se vztahuje na jeden obor operace čtení v rámci logického oddílu.Read consistency applies to a single read operation scoped within a logical partition. Operaci čtení je možné vystavit pomocí vzdáleného klienta nebo uložené procedury.The read operation can be issued by a remote client or a stored procedure.

Konfigurace výchozí úrovně konzistenceConfigure the default consistency level

Výchozí úroveň konzistence můžete v účtu Azure Cosmos nakonfigurovat kdykoli.You can configure the default consistency level on your Azure Cosmos account at any time. Výchozí úroveň konzistence nakonfigurovaná na vašem účtu se vztahuje na všechny databáze a kontejnery Azure Cosmos pod tímto účtem.The default consistency level configured on your account applies to all Azure Cosmos databases and containers under that account. Všechny čtení a dotazy vydané pro kontejner nebo databázi používají ve výchozím nastavení zadanou úroveň konzistence.All reads and queries issued against a container or a database use the specified consistency level by default. Další informace najdete v tématu Postup Konfigurace výchozí úrovně konzistence.To learn more, see how to configure the default consistency level.

Záruky spojené s úrovněmi konzistenceGuarantees associated with consistency levels

Komplexní SLA poskytované Azure Cosmos DB zaručují, že 100 procento požadavků na čtení vyhovuje záruku konzistence pro jakoukoli zvolenou úroveň konzistence.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. Požadavek na čtení splňuje podmínky SLA konzistence, pokud jsou splněné veškeré záruky konzistence spojené s úrovní konzistence.A read request meets the consistency SLA if all the consistency guarantees associated with the consistency level are satisfied. Přesné definice pěti úrovní konzistence v Azure Cosmos DB používání jazyka TLA + Specification jsou k dispozici v úložišti GitHub Azure-Cosmos-tla .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.

Sémantika pěti úrovní konzistence je popsána zde:The semantics of the five consistency levels are described here:

  • Strong: silná konzistence nabízí záruku linearizability.Strong: Strong consistency offers a linearizability guarantee. Linearizability odkazuje na obsluhu souběžných požadavků.Linearizability refers to serving requests concurrently. U čtení je zaručeno, že vrátí nejnovější potvrzenou verzi položky.The reads are guaranteed to return the most recent committed version of an item. Klient nikdy nevidí nepotvrzené nebo částečné zápisy.A client never sees an uncommitted or partial write. Uživatelům se vždycky ručí, že si přečtou poslední potvrzený zápis.Users are always guaranteed to read the latest committed write.

    Následující obrázek znázorňuje silnou konzistenci se hudebními poznámkami.The following graphic illustrates the strong consistency with musical notes. Po zapsání dat do oblasti "Západní USA 2" se při čtení dat z jiných oblastí zobrazí nejnovější hodnota:After the data is written to the "West US 2" region, when you read the data from other regions, you get the most recent value:

    video

  • Ohraničená neaktuálnost: čtení jsou zaručena, aby se zaručila záruka konzistentní s předponou.Bounded staleness: The reads are guaranteed to honor the consistent-prefix guarantee. Čtení mohou prodlevy za zápisem do maximální verze "K" (tj. "aktualizace") položky nebo časového intervalu "T" .The reads might lag behind writes by at most "K" versions (that is, "updates") of an item or by "T" time interval. Jinými slovy, pokud vyberete možnost ohraničená neaktuálnost, lze nakonfigurovat "zastaralost" dvěma způsoby:In other words, when you choose bounded staleness, the "staleness" can be configured in two ways:

  • Počet verzí položky (KB)The number of versions (K) of the item

  • Časový interval (T), kterým mohou číst prodlevy za zápisyThe time interval (T) by which the reads might lag behind the writes

Ohraničená neaktuálnost nabízí celkové globální pořadí mimo "okno pro zastaralost".Bounded staleness offers total global order outside of the "staleness window." Když klient provádí operace čtení v rámci oblasti, která přijímá zápisy, záruky poskytnuté konzistencí neaktuálnosti jsou stejné jako záruky silnými konzistencí.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.

V rámci okna zastaralost poskytuje ohraničená neaktuálnost následující záruky konzistence:Inside the staleness window, Bounded Staleness provides the following consistency guarantees:

  • Konzistence klientů ve stejné oblasti pro jeden hlavní účet = silnáConsistency for clients in the same region for a single-master account = Strong

  • Konzistence klientů v různých oblastech pro jeden hlavní účet = konzistentní předponaConsistency for clients in different regions for a single-master account = Consistent Prefix

  • Konzistence pro klienty zapisujících do jedné oblasti pro vícenásobný hlavní účet = konzistentní předponaConsistency for clients writing to a single region for a multi-master account = Consistent Prefix

  • Konzistence pro klienty zapisujících do různých oblastí pro více hlavních účtů = případnéConsistency for clients writing to different regions for a multi-master account = Eventual

    Ohraničená neaktuálnost se často volí globálně distribuovanými aplikacemi, které očekávají nízkou latenci zápisu, ale vyžadují celkovou záruku globální objednávky.Bounded staleness is frequently chosen by globally distributed applications that expect low write latencies but require total global order guarantee. Ohraničená neaktuálnost je ideální pro aplikace, které nabízí spolupráci skupin a sdílení, burzovní, doplňování a publikování a zařazování do fronty atd. Následující obrázek znázorňuje konzistenci s ohraničenou neaktuálností pomocí hudebních poznámek.Bounded staleness is great for applications featuring group collaboration and sharing, stock ticker, publish-subscribe/queueing etc. The following graphic illustrates the bounded staleness consistency with musical notes. Po zapsání dat do oblasti "Západní USA 2" přečtou oblasti "Východní USA 2" a "Austrálie – východ" písemnou hodnotu na základě nakonfigurovaného maximálního času prodlevy nebo maximálního počtu operací:After the data is written to the "West US 2" region, the "East US 2" and "Australia East" regions read the written value based on the configured maximum lag time or the maximum operations:

    video

  • Relace: v rámci jediného čtení klientské relace jsou zaručené respektování konzistentní předpony, monotónní čtení, monotónní zápisu, čtení a zápisů a záruky za zápis.Session: Within a single client session reads are guaranteed to honor the consistent-prefix, monotonic reads, monotonic writes, read-your-writes, and write-follows-reads guarantees. Předpokládá se jedna relace "zapisovače" nebo sdílení tokenu relace pro více modulů pro zápis.This assumes a single "writer" session or sharing the session token for multiple writers.

Klientům mimo relaci, která provádí zápis, se zobrazí následující záruky:Clients outside of the session performing writes will see the following guarantees:

  • Konzistence pro klienty ve stejné oblasti pro jeden hlavní účet = konzistentní předponaConsistency for clients in same region for a single-master account = Consistent Prefix

  • Konzistence klientů v různých oblastech pro jeden hlavní účet = konzistentní předponaConsistency for clients in different regions for a single-master account = Consistent Prefix

  • Konzistence pro klienty zapisujících do jedné oblasti pro vícenásobný hlavní účet = konzistentní předponaConsistency for clients writing to a single region for a multi-master account = Consistent Prefix

  • Konzistence klientů zapisujících do více oblastí pro více hlavních účtů = případnéConsistency for clients writing to multiple regions for a multi-master account = Eventual

    Konzistence relace je široce využitá úroveň konzistence pro jednu oblast i pro globálně distribuované aplikace.Session consistency is the widely used consistency level for both single region as well as globally distributed applications. Poskytuje latence zápisu, dostupnost a propustnost čtení srovnatelné s tím, že má konečnou konzistenci, ale také poskytuje záruky konzistence, které vyhovují potřebám aplikací zapsaných v kontextu uživatele.It provides write latencies, availability, and read throughput comparable to that of eventual consistency but also provides the consistency guarantees that suit the needs of applications written to operate in the context of a user. Následující obrázek znázorňuje konzistenci relace se hudebními poznámkami.The following graphic illustrates the session consistency with musical notes. "Západní USA 2 Writer" a "Západní USA 2 Reader" používají stejnou relaci (relaci A), aby obě současně četly stejná data.The "West US 2 writer" and the "West US 2 reader" are using the same session (Session A) so they both read the same data at the same time. Vzhledem k tomu, že oblast Austrálie – východ používá "relaci B", získá data později, ale ve stejném pořadí jako zápisy.Whereas the "Australia East" region is using "Session B" so, it receives data later but in the same order as the writes.

    video

  • Konzistentní předpona: vrácené aktualizace obsahují předponu všech aktualizací bez mezer.Consistent prefix: Updates that are returned contain some prefix of all the updates, with no gaps. Konzistentní předpona úrovně konzistence, kterou čtení nikdy nevidí zápisy mimo pořadí.Consistent prefix consistency level guarantees that read never see out-of-order writes.

Pokud se zápisy provedly v pořadí A, B, C, klientovi se zobrazí buď A, A,B, nebo A,B,C, ale nikdy položka mimo pořadí, jako je A,C nebo B,A,C.If writes were performed in the order A, B, C, then a client sees either A, A,B, or A,B,C, but never out of order like A,C or B,A,C. Konzistentní předpona poskytuje latence zápisu, dostupnost a propustnost čtení srovnatelné s tím, že má konečnou konzistenci, ale také poskytuje pořadí záruk, které vyhovuje potřebám scénářů, ve kterých je pořadí důležité.Consistent Prefix provides write latencies, availability, and read throughput comparable to that of eventual consistency, but also provides the order guarantees that suit the needs of scenarios where order is important.

Níže jsou uvedené záruky konzistence pro konzistentní předpony:Below are the consistency guarantees for Consistent Prefix:

  • Konzistence pro klienty ve stejné oblasti pro jeden hlavní účet = konzistentní předponaConsistency for clients in same region for a single-master account = Consistent Prefix
  • Konzistence klientů v různých oblastech pro jeden hlavní účet = konzistentní předponaConsistency for clients in different regions for a single-master account = Consistent Prefix
  • Konzistence pro klienty zapisujících do jedné oblasti pro vícenásobný hlavní účet = konzistentní předponaConsistency for clients writing to a single region for a multi-master account = Consistent Prefix
  • Konzistence klientů zapisujících do více oblastí pro více hlavních účtů = případnéConsistency for clients writing to multiple regions for a multi-master account = Eventual

Následující obrázek znázorňuje konzistenci předpon konzistence se hudebními poznámkami.The following graphic illustrates the consistency prefix consistency with musical notes. Ve všech oblastech čtení nikdy nevidí zápisy mimo pořadí:In all the regions, the reads never see out of order writes:

video

  • Kdy : neexistujezáruka na řazení pro čtení.Eventual: There's no ordering guarantee for reads. Při absenci dalších zápisů se repliky nakonec konvergují.In the absence of any further writes, the replicas eventually converge.
    Konečná konzistence představuje slabší formu konzistence, protože klient může číst hodnoty, které jsou starší než ty, které se předtím četly.Eventual consistency is the weakest form of consistency because a client may read the values that are older than the ones it had read before. Konečná konzistence je ideální, pokud aplikace nevyžaduje žádné záruky na řazení.Eventual consistency is ideal where the application does not require any ordering guarantees. Mezi příklady patří počet re, podobně jako u jiných než vlákenných komentářů.Examples include count of Retweets, Likes, or non-threaded comments. Následující obrázek znázorňuje konečnou konzistenci se hudebními poznámkami.The following graphic illustrates the eventual consistency with musical notes.

    video

Další čteníAdditional reading

Další informace o konceptech konzistence najdete v následujících článcích:To learn more about consistency concepts, read the following articles:

Další krokyNext steps

Další informace o úrovních konzistence v Azure Cosmos DB najdete v následujících článcích:To learn more about consistency levels in Azure Cosmos DB, read the following articles: