Gegevens instelbare consistentieniveaus in Azure Cosmos DBTunable data consistency levels in Azure Cosmos DB

Azure Cosmos DB is ontworpen vanaf het begin van met wereldwijde distributie in rekening voor elk gegevensmodel.Azure Cosmos DB is designed from the ground up with global distribution in mind for every data model. Het is ontworpen om gegarandeerde voorspelbare lage latentie en meerdere duidelijk gedefinieerde beperkte consistentiemodellen te bieden.It is designed to offer predictable low latency guarantees and multiple well-defined relaxed consistency models. Op dit moment biedt Azure Cosmos DB vijf consistentieniveaus: sterk, gebonden veroudering, sessie, consistent voorvoegsel en mogelijk.Currently, Azure Cosmos DB provides five consistency levels: strong, bounded-staleness, session, consistent prefix, and eventual. Gebonden veroudering, sessie, consistent voorvoegsel en uiteindelijk worden aangeduid als "beperkte consistentiemodellen" Als deze minder consistentie dan sterk, die het meeste zeer consistent model beschikbaar is.Bounded-staleness, session, consistent prefix, and eventual are referred to as "relaxed consistency models" as they provide less consistency than strong, which is the most highly consistent model available.

Naast de sterke en uiteindelijke consistentie modellen meestal aangeboden door gedistribueerde databases, Azure Cosmos DB biedt drie meer zorgvuldig worden gecodeerd en ingezette consistentiemodellen: gebonden veroudering, sessie, en consistent voorvoegsel.Besides the strong and eventual consistency models commonly offered by distributed databases, Azure Cosmos DB offers three more carefully codified and operationalized consistency models: bounded staleness, session, and consistent prefix. Het nut van elk van deze consistentieniveaus is gevalideerd tegen de echte wereld van use cases.The usefulness of each of these consistency levels has been validated against real world use cases. Gezamenlijk kunnen deze vijf consistentieniveaus u goed gemotiveerd wisselwerking tussen consistentie, beschikbaarheid en latentie te maken.Collectively these five consistency levels enable you to make well-reasoned trade-offs between consistency, availability, and latency.

In de volgende video toont de Azure Cosmos DB Program Manager Andrew Liu de functies van kant en klare wereldwijde distributie.In the following video, Azure Cosmos DB Program Manager Andrew Liu demonstrates the turnkey global distribution features.

Gedistribueerde databases en consistentieDistributed databases and consistency

Commerciële gedistribueerde databases kunnen worden onderverdeeld in twee categorieën: databases die duidelijk gedefinieerde consistentiekeuzen voor waarschijnlijke consistentiekeuzes niet helemaal bieden en databases die zijn er twee mogelijkheden voor extreme programmeerbaarheid mogelijkheden (sterke versus mogelijke consistentie).Commercial distributed databases fall into two categories: databases that do not offer well-defined provable consistency choices at all, and databases that offer two extreme programmability choices (strong vs. eventual consistency).

In het eerste geval moeten ontwikkelaars van toepassingen gedetailleerde instellingen opgeven voor hun replicatieprotocollen en moeten ze lastige keuzes maken om een juiste balans te vinden tussen consistentie, beschikbaarheid, latentie en doorvoer.The former burdens application developers with minutia of their replication protocols and expects them to make difficult tradeoffs between consistency, availability, latency, and throughput. In het laatste geval moet een keuze worden gemaakt tussen twee extreme varianten.The latter puts a pressure to choose one of the two extremes. Ondanks de overvloed aan onderzoek en voorstellen voor meer dan 50 consistentiemodellen, is de community van gedistribueerde databases er niet in geslaagd om consistentieniveaus voorbij 'sterk' en 'mogelijk' commercieel geaccepteerd te krijgen.Despite the abundance of research and proposals for more than 50 consistency models, the distributed database community has not been able to commercialize consistency levels beyond strong and eventual consistency. Cosmos DB biedt ontwikkelaars de mogelijkheid om te kiezen tussen vijf duidelijk gedefinieerde consistentiemodellen langs de consistentie spectrum: sterk, gebonden veroudering sessie, consistent prefix en mogelijk.Cosmos DB allows developers to choose between five well-defined consistency models along the consistency spectrum – strong, bounded staleness, session, consistent prefix, and eventual.

Azure Cosmos DB biedt een keuze uit verschillende, duidelijk omschreven (minder nauwkeurige) consistentiemodellen

In de volgende tabel ziet u de specifieke garanties die horen bij elk consistentieniveau.The following table illustrates the specific guarantees each consistency level provides.

Consistentieniveaus en bijbehorende garantiesConsistency Levels and guarantees

ConsistentieniveauConsistency Level GarantiesGuarantees
SterkStrong Verwerkingen.Linearizability. Retourneert de meest recente versie van een item bij leesbewerkingen gegarandeerd.Reads are guaranteed to return the most recent version of an item.
Gebonden verouderingBounded Staleness Consistent prefix.Consistent Prefix. Leesbewerkingen volgen op schrijfbewerkingen met maximaal k prefixen of t intervalReads lag behind writes by at most k prefixes or t interval
SessieSession Consistent prefix.Consistent Prefix. Monotone leesbewerkingen, monotone schrijfbewerkingen, read-your-writes, write-follows-readsMonotonic reads, monotonic writes, read-your-writes, write-follows-reads
Consistent prefixConsistent Prefix Geretourneerde updates zijn een prefix van alle updates, zonder hiatenUpdates returned are some prefix of all the updates, with no gaps
MogelijkEventual Leesbewerkingen vinden niet op volgorde plaatsOut of order reads

U kunt het standaardconsistentieniveau configureren in uw Cosmos DB-account (en de consistentie later voor een specifieke aanvraag overschrijven).You can configure the default consistency level on your Cosmos DB account (and later override the consistency on a specific read request). Intern, het standaardconsistentieniveau toegepast op gegevens in de partitiesets, die mogelijk regio's omvatten.Internally, the default consistency level applies to data within the partition sets, which may span regions. Liever gebonden veroudering ongeveer 73% van de Azure Cosmos DB-tenants gebruiken sessieconsistentie en 20%.About 73% of Azure Cosmos DB tenants use session consistency and 20% prefer bounded staleness. Ongeveer 3% van de Azure Cosmos DB klanten experimenteren met verschillende consistentieniveaus in eerste instantie voordat op een specifieke consistentie keuze voor hun toepassing.Approximately 3% of Azure Cosmos DB customers experiment with various consistency levels initially before settling on a specific consistency choice for their application. Alleen 2% van de tenants van Azure Cosmos DB overschrijven consistentieniveaus op basis van per aanvraag.Only 2% of Azure Cosmos DB tenants override consistency levels on a per request basis.

In Cosmos DB worden leesbewerkingen geleverd op sessie, consistent voorvoegsel en uiteindelijke consistentie worden twee keer zo goedkope als leesbewerkingen met sterke of gebonden veroudering consistentie.In Cosmos DB, reads served at session, consistent prefix and eventual consistency are twice as cheap as reads with strong or bounded staleness consistency. Cosmos DB heeft toonaangevende uitgebreide Sla's, met inbegrip van garanties voor consistentie, samen met beschikbaarheid, doorvoer en latentie.Cosmos DB has industry leading comprehensive SLAs including consistency guarantees along with availability, throughput, and latency. Maakt gebruik van Azure Cosmos DB een verwerkingen checker, die voortdurend werkt via de service-Telemetrie en openlijk rapporten eventuele schendingen consistentie voor u.Azure Cosmos DB employs a linearizability checker, which continuously operates over the service telemetry and openly reports any consistency violations to you. Voor gebonden veroudering, Azure Cosmos DB bewaakt en eventuele schendingen voor grenzen k en t-rapporten.For bounded staleness, Azure Cosmos DB monitors and reports any violations to k and t bounds. Voor alle vijf soepele consistentieniveaus, Azure Cosmos DB ook rapporten de probabilistically gebonden veroudering metriek rechtstreeks aan u.For all five relaxed consistency levels, Azure Cosmos DB also reports the probabilistically bounded staleness metric directly to you.

ServiceovereenkomstenService level agreements

Azure Cosmos DB biedt uitgebreide 99,99% Sla's welke garantie doorvoer, consistentie, beschikbaarheid en latentie voor Azure Cosmos DB-database accounts binnen het bereik van een enkel Azure-regio geconfigureerd met een van de vijf consistentie niveaus, of database-accounts die meerdere Azure-regio's, geconfigureerd met een van de vier soepele consistentie-niveaus.Azure Cosmos DB offers comprehensive 99.99% SLAs which guarantee throughput, consistency, availability, and latency for Azure Cosmos DB database accounts scoped to a single Azure region configured with any of the five consistency levels, or database accounts spanning multiple Azure regions, configured with any of the four relaxed consistency levels. Bovendien, onafhankelijk van de keuze van een consistentieniveau, Azure Cosmos DB biedt een SLA van 99,999% voor de leesbeschikbaarheid voor database-accounts die twee of meer Azure-regio's.Furthermore, independent of the choice of a consistency level, Azure Cosmos DB offers a 99.999% SLA for read availability for database accounts spanning two or more Azure regions.

Bereik van consistentieScope of consistency

De granulatie van de consistentie is afgestemd op een aanvraag voor één gebruiker.The granularity of consistency is scoped to a single user request. Een schrijfaanvraag kan overeenkomen met een insert, replace, upsert of te verwijderen van de transactie.A write request may correspond to an insert, replace, upsert, or delete transaction. Net als bij schrijfbewerkingen, is ook een lezen/query-transactie afgestemd op een aanvraag voor één gebruiker.As with writes, a read/query transaction is also scoped to a single user request. De gebruiker mogelijk worden gevraagd om u te pagineren via een grote resultatenset, die meerdere partities omvatten, maar elke transactie is binnen het bereik van één pagina en binnen een enkele partitie worden aangeleverd vanuit lezen.The user may be required to paginate over a large result-set, spanning multiple partitions, but each read transaction is scoped to a single page and served from within a single partition.

ConsistentieniveausConsistency levels

U kunt een standaardconsistentieniveau configureren op uw databaseaccount die van toepassing op alle containers (en -databases) voor uw Cosmos DB-account.You can configure a default consistency level on your database account that applies to all containers (and databases) under your Cosmos DB account. Gebruik het standaardconsistentieniveau opgegeven voor het databaseaccount standaard alle leesbewerkingen en query's die voor de gebruiker gedefinieerde resources worden gegeven.By default, all reads and queries issued against the user-defined resources use the default consistency level specified on the database account. U kunt het consistentieniveau van de van een specifieke lezen/query aanvraag met in elk van de ondersteunde API's versoepelen.You can relax the consistency level of a specific read/query request using in each of the supported APIs. Er zijn vijf typen consistentieniveaus ondersteund door het Azure Cosmos DB-replicatie-protocol waarmee een duidelijke balans tussen garanties voor specifieke consistentie en prestaties, zoals beschreven in deze sectie.There are five types of consistency levels supported by the Azure Cosmos DB replication protocol that provide a clear trade-off between specific consistency guarantees and performance, as described in this section.

Sterke:Strong:

  • Sterke consistentie biedt een verwerkingen garanderen met de leesbewerkingen gegarandeerd de meest recente versie van een item.Strong consistency offers a linearizability guarantee with the reads guaranteed to return the most recent version of an item.
  • Sterke consistentie gegarandeerd een schrijfbewerking is alleen zichtbaar nadat deze is door een meerderheidsquorum het quorum meerderheid van replica's.Strong consistency guarantees that a write is only visible after it is committed durably by the majority quorum of replicas. Een schrijfbewerking is ofwel synchroon door een meerderheidsquorum zowel de primaire en het quorum van secundaire databases, of deze wordt afgebroken.A write is either synchronously committed durably by both the primary and the quorum of secondaries, or it is aborted. Een leesbewerking is altijd worden bevestigd door de meeste leesquorum, een client kan nooit zien voor het terugschrijven van een niet-doorgevoerde of gedeeltelijke en is altijd gegarandeerd de laatste bevestigde schrijfbewerking leest.A read is always acknowledged by the majority read quorum, a client can never see an uncommitted or partial write and is always guaranteed to read the latest acknowledged write.
  • Azure Cosmos DB-accounts die zijn geconfigureerd voor het gebruik van sterke consistentie kunnen niet meer dan één Azure-regio koppelen aan hun Azure Cosmos DB-account.Azure Cosmos DB accounts that are configured to use strong consistency cannot associate more than one Azure region with their Azure Cosmos DB account.
  • De kosten van een leesbewerking (in termen van aanvraageenheden verbruikt) met sterke consistentie is hoger dan sessie en uiteindelijk, maar hetzelfde als gebonden veroudering.The cost of a read operation (in terms of request units consumed) with strong consistency is higher than session and eventual, but the same as bounded staleness.

Gebonden veroudering:Bounded staleness:

  • Gebonden veroudering consistentie gegarandeerd dat de leesbewerkingen op schrijfbewerkingen met maximaal volgen kunnen K versies of voorvoegsels van een item of t -tijdsinterval.Bounded staleness consistency guarantees that the reads may lag behind writes by at most K versions or prefixes of an item or t time-interval.
  • Daarom bij het kiezen van gebonden veroudering, de 'veroudering' kan worden geconfigureerd op twee manieren: aantal versies K van het item waarmee de leesbewerkingen volgen op de schrijf- en het tijdsinterval tTherefore, when choosing bounded staleness, the "staleness" can be configured in two ways: number of versions K of the item by which the reads lag behind the writes, and the time interval t
  • Gebonden veroudering aanbiedingen totale globale volgorde, behalve binnen de "veroudering venster."Bounded staleness offers total global order except within the "staleness window." De monotone lezen garanties bestaan binnen een regio binnen en buiten de "veroudering venster."The monotonic read guarantees exist within a region both inside and outside the "staleness window."
  • Gebonden veroudering biedt een krachtiger consistentiegarantie dan sessie, consistent voorvoegsel of uiteindelijk consistentie.Bounded staleness provides a stronger consistency guarantee than session, consistent-prefix, or eventual consistency. Voor wereldwijd gedistribueerde toepassingen, raden wij aan u gebonden veroudering voor scenario's waar u graag sterke consistentie hebben, maar ook wilt 99,99% beschikbaarheid en lage latentie.For globally distributed applications, we recommend you use bounded staleness for scenarios where you would like to have strong consistency but also want 99.99% availability and low latency.
  • Azure Cosmos DB-accounts die zijn geconfigureerd met consistentie voor gebonden veroudering kunnen u een willekeurig aantal Azure-regio's koppelen aan hun Azure Cosmos DB-account.Azure Cosmos DB accounts that are configured with bounded staleness consistency can associate any number of Azure regions with their Azure Cosmos DB account.
  • De kosten van een leesbewerking (voor wat betreft verbruikte ru's) met gebonden veroudering is hoger dan de sessie en uiteindelijke consistentie, maar hetzelfde als sterke consistentie.The cost of a read operation (in terms of RUs consumed) with bounded staleness is higher than session and eventual consistency, but the same as strong consistency.

Sessie:Session:

  • Sessieconsistentie is in tegenstelling tot het globale consistentiemodellen die worden aangeboden door consistentieniveaus sterke en gebonden veroudering, afgestemd op een clientsessie.Unlike the global consistency models offered by strong and bounded staleness consistency levels, session consistency is scoped to a client session.
  • Sessieconsistentie is ideaal voor alle scenario's waarbij de sessie van een apparaat of gebruiker betrokken is omdat deze gegarandeerd monotone leesbewerkingen, monotone schrijfbewerkingen en lezen (RYW) van uw eigen schrijfbewerkingen wordt gegarandeerd.Session consistency is ideal for all scenarios where a device or user session is involved since it guarantees monotonic reads, monotonic writes, and read your own writes (RYW) guarantees.
  • Sessieconsistentie voorspelbare consistentie biedt voor een sessie en maximale doorvoer lezen terwijl de laagste latentie van schrijfbewerkingen en leesbewerkingen.Session consistency provides predictable consistency for a session, and maximum read throughput while offering the lowest latency writes and reads.
  • Azure Cosmos DB-accounts die zijn geconfigureerd met sessieconsistentie kunnen u een willekeurig aantal Azure-regio's koppelen aan hun Azure Cosmos DB-account.Azure Cosmos DB accounts that are configured with session consistency can associate any number of Azure regions with their Azure Cosmos DB account.
  • De kosten van een leesbewerking (voor wat betreft verbruikte ru's) met een sessie consistentieniveau is lager dan sterke en gebonden veroudering, maar meer dan uiteindelijke consistentie.The cost of a read operation (in terms of RUs consumed) with session consistency level is less than strong and bounded staleness, but more than eventual consistency.

Consistent Prefix:Consistent Prefix:

  • Consistent voorvoegsel zorgt ervoor dat in de afwezigheid van geen schrijfbewerkingen meer, de replica's binnen de groep uiteindelijk geconvergeerd.Consistent prefix guarantees that in absence of any further writes, the replicas within the group eventually converge.
  • Consistent voorvoegsel wordt gegarandeerd dat leesbewerkingen nooit niet-geordende schrijfbewerkingen te zien.Consistent prefix guarantees that reads never see out of order writes. Als schrijfbewerkingen zijn uitgevoerd in de volgorde A, B, C, en vervolgens een client een ziet A, A,B, of A,B,C, maar nooit niet-geordende zoals A,C of 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.
  • Azure Cosmos DB-accounts die zijn geconfigureerd met consistent voorvoegsel consistentie kunnen u een willekeurig aantal Azure-regio's koppelen aan hun Azure Cosmos DB-account.Azure Cosmos DB accounts that are configured with consistent prefix consistency can associate any number of Azure regions with their Azure Cosmos DB account.

Uiteindelijke:Eventual:

  • Uiteindelijke consistentie zorgt ervoor dat in de afwezigheid van geen schrijfbewerkingen meer, de replica's binnen de groep uiteindelijk geconvergeerd.Eventual consistency guarantees that in absence of any further writes, the replicas within the group eventually converge.
  • Uiteindelijke consistentie is de zwakste vorm van consistentie waarbij een client de waarden die ouder zijn dan de computer die deze had eerder kan verkrijgen.Eventual consistency is the weakest form of consistency where a client may get the values that are older than the ones it had seen before.
  • Uiteindelijke consistentie biedt de zwakste lezen van consistentie, maar biedt de laagste latentie voor zowel lees- en schrijfbewerkingen.Eventual consistency provides the weakest read consistency but offers the lowest latency for both reads and writes.
  • Azure Cosmos DB-accounts die zijn geconfigureerd met de uiteindelijke consistentie kunnen u een willekeurig aantal Azure-regio's koppelen aan hun Azure Cosmos DB-account.Azure Cosmos DB accounts that are configured with eventual consistency can associate any number of Azure regions with their Azure Cosmos DB account.
  • De kosten van een leesbewerking (voor wat betreft verbruikte ru's) met de uiteindelijke consistentie is het niveau van de laagste waarde van alle Azure Cosmos DB-consistentieniveaus.The cost of a read operation (in terms of RUs consumed) with the eventual consistency level is the lowest of all the Azure Cosmos DB consistency levels.

Het standaardconsistentieniveau configurerenConfiguring the default consistency level

  1. In de Azure-portal, klik in de Snelbalk op Azure Cosmos DB.In the Azure portal, in the Jumpbar, click Azure Cosmos DB.
  2. Selecteer op de pagina Azure Cosmos DB het databaseaccount dat u wilt wijzigen.In the Azure Cosmos DB page, select the database account to modify.
  3. Klik in de accountpagina op Standaardconsistentie.In the account page, click Default consistency.
  4. In de Standaardconsistentie pagina, selecteert u de nieuwe consistentieniveau en op opslaan.In the Default Consistency page, select the new consistency level and click Save.

    Schermafbeelding van het pictogram instellingen en de Standaardconsistentie vermelding markeren

Consistentieniveaus voor query 'sConsistency levels for queries

Voor de gebruiker gedefinieerde resources, is het consistentieniveau voor query's standaard hetzelfde als het consistentieniveau voor leesbewerkingen.By default, for user-defined resources, the consistency level for queries is the same as the consistency level for reads. De index wordt standaard synchroon bijgewerkt op elke invoegen, vervangen of verwijderen van een item naar de Cosmos DB-container.By default, the index is updated synchronously on each insert, replace, or delete of an item to the Cosmos DB container. Hierdoor kan de query's op hetzelfde consistentieniveau als dat punt leesbewerkingen in acht neemt.This enables the queries to honor the same consistency level as that of point reads. Azure Cosmos DB is geoptimaliseerd voor schrijven en langdurige volumes van schrijfbewerkingen, synchrone indexonderhoud ten behoeve van consistente-query's ondersteunt, kunt u bepaalde containers voor het bijwerken van de index lazily kunt configureren.While Azure Cosmos DB is write optimized and supports sustained volumes of writes, synchronous index maintenance and serving consistent queries, you can configure certain containers to update their index lazily. Vertraagde indexeren verder verhoogt de schrijfprestaties en is ideaal voor bulksgewijs opname-scenario's als een werkbelasting voornamelijk leesintensief is.Lazy indexing further boosts the write performance and is ideal for bulk ingestion scenarios when a workload is primarily read-heavy.

Modus indexerenIndexing Mode LeesbewerkingenReads Query'sQueries
Consistente (standaard)Consistent (default) Selecteer een sterk, gebonden veroudering, sessie, consistent voorvoegsel of uiteindelijkSelect from strong, bounded staleness, session, consistent prefix, or eventual Selecteer een sterk, gebonden veroudering, sessie, of uiteindelijkeSelect from strong, bounded staleness, session, or eventual
VertraagdeLazy Selecteer een sterk, gebonden veroudering, sessie, consistent voorvoegsel of uiteindelijkSelect from strong, bounded staleness, session, consistent prefix, or eventual MogelijkEventual
GeenNone Selecteer een sterk, gebonden veroudering, sessie, consistent voorvoegsel of uiteindelijkSelect from strong, bounded staleness, session, consistent prefix, or eventual Niet van toepassingNot applicable

Als met meer aanvragen, kunt u het consistentieniveau van de van de aanvraag van een specifieke query in elke API verlagen.As with read requests, you can lower the consistency level of a specific query request in each API.

Consistentieniveaus voor de MongoDB-APIConsistency levels for the MongoDB API

Azure Cosmos DB implementeert op dit moment MongoDB versie 3.4, met twee consistentie-instellingen, sterke en uiteindelijke.Azure Cosmos DB currently implements MongoDB version 3.4, which has two consistency settings, strong and eventual. Omdat Azure Cosmos DB meerdere API’s heeft, zijn de consistentieniveaus van toepassing op het accountniveau, en het afdwingen van de consistentie wordt beheerd met elke API.Because Azure Cosmos DB is multi-api, the consistency settings are applicable at the account level and enforcement of the consistency is controlled by each API. Tot MongoDB 3.6 was er nog geen sprake van sessieconsistentie. Als u een MongoDB-API-account instelt voor gebruik van sessieconsistentie, wordt bij het gebruik van MongoDB-API’s een downgrade uitgevoerd naar het consistentieniveau: mogelijk.Until MongoDB 3.6, there was no concept of a session consistency, so if you set a MongoDB API account to use session consistency, the consistency is downgraded to eventual when using MongoDB APIs. Als u een read-your-own-write-garantie nodig hebt voor een MongoDB-API-account, moet het standaardconsistentieniveau voor het account worden ingesteld op gebonden of gebonden-verouderd.If you need a read-your-own-write guarantee for a MongoDB API account, the default consistency level for the account should be set to strong or bounded staleness.

Volgende stappenNext steps

Als u dit doen meer lezen over de consistentieniveaus voor- en nadelen wilt, raden we de volgende bronnen:If you'd like to do more reading about consistency levels and tradeoffs, we recommend the following resources: