Livelli di coerenza in Azure Cosmos DBConsistency levels in Azure Cosmos DB

I database distribuiti che si basano sulla replica per garantire disponibilità elevata, bassa latenza o entrambe, applicano il compromesso fondamentale tra coerenza di lettura e disponibilità, latenza e velocità effettiva.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. La maggior parte dei database distribuiti disponibili in commercio chiede agli sviluppatori di scegliere tra i due modelli di coerenza estremi: coerenza assoluta e coerenza finale .Most commercially available distributed databases ask developers to choose between the two extreme consistency models: strong consistency and eventual consistency. Il della linearità del modello di coerenza forte è lo standard Gold di programmabilità dei dati.The linearizability of the strong consistency model is the gold standard of data programmability. Ma aggiunge un prezzo di latenza di scrittura superiore (in stato stabile) e una disponibilità ridotta (durante gli errori).But it adds a price of higher write latency (in steady state) and reduced availability (during failures). D'altra parte, la coerenza finale offre una maggiore disponibilità e prestazioni migliori, ma rende difficile programmare le applicazioni.On the other hand, eventual consistency offers higher availability and better performance, but makes it hard to program applications.

Azure Cosmos DB affronta la coerenza dei dati offrendo uno spettro di scelte che si collocano tra i due estremi.Azure Cosmos DB approaches data consistency as a spectrum of choices instead of two extremes. Gli sviluppatori possono usare queste opzioni per eseguire scelte precise e compromessi granulari rispetto alla disponibilità e alle prestazioni elevate.Developers can use these options to make precise choices and granular tradeoffs with respect to high availability and performance.

Con Azure Cosmos DB, gli sviluppatori possono scegliere tra cinque livelli di coerenza ben definiti nello spettro di coerenza.With Azure Cosmos DB, developers can choose from five well-defined consistency levels on the consistency spectrum. Questi livelli includono forte, bounded stalenessdecadimento ristretto, sessione, prefisso coerentee coerenza finale .These levels include strong, bounded staleness, session, consistent prefix, and eventual consistency. I livelli sono ben definiti e intuitivi e possono essere usati per scenari reali specifici.The levels are well-defined and intuitive and can be used for specific real-world scenarios. Ogni livello offre compromessi in merito a disponibilità e prestazioni e supportato da contratti di contratto.Each level provides availability and performance tradeoffs and are backed by SLAs. Nell'immagine seguente vengono illustrati i diversi livelli di coerenza come uno spettro.The following image shows the different consistency levels as a spectrum.

La coerenza come spettro

I livelli di coerenza sono indipendenti dall'area e sono garantiti per tutte le operazioni, indipendentemente dall'area da cui vengono gestite le operazioni di lettura e scrittura, dal numero di aree associate all'account Azure Cosmos o dal fatto che l'account sia configurato con una o più aree di scrittura.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.

Ambito della coerenza di letturaScope of the read consistency

La coerenza di lettura si applica a una singola operazione di lettura con ambito all'interno di una partizione logica.Read consistency applies to a single read operation scoped within a logical partition. L'operazione di lettura può essere generata da un client remoto o da una stored procedure.The read operation can be issued by a remote client or a stored procedure.

Configurare il livello di coerenza predefinitoConfigure the default consistency level

È possibile configurare il livello di coerenza predefinito nell'account Azure Cosmos in qualsiasi momento.You can configure the default consistency level on your Azure Cosmos account at any time. Il livello di coerenza predefinito configurato per l'account si applica a tutti i database e contenitori di Azure Cosmos con tale account.The default consistency level configured on your account applies to all Azure Cosmos databases and containers under that account. Per impostazione predefinita, tutte le operazioni di lettura e le query eseguite su un contenitore o un database usano il livello di coerenza specificato.All reads and queries issued against a container or a database use the specified consistency level by default. Per altre informazioni, vedere come configurare il livello di coerenza predefinito.To learn more, see how to configure the default consistency level.

Garanzie associate ai livelli di coerenzaGuarantees associated with consistency levels

I contratti di servizio completi offerti da Azure Cosmos DB garantiscono che il 100% delle richieste di lettura soddisfano la garanzia di coerenza per qualsiasi livello di coerenza scelto.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. Una richiesta soddisfa il contratto di servizio per la coerenza se sono soddisfatte tutte le garanzie associate al livello di coerenza.A read request meets the consistency SLA if all the consistency guarantees associated with the consistency level are satisfied. Le definizioni esatte dei cinque livelli di coerenza in Azure Cosmos DB usando il linguaggio di specifica di TLA + sono disponibili nel repository Azure-Cosmos-TLA github.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.

La semantica dei cinque livelli di coerenza è descritta qui:The semantics of the five consistency levels are described here:

  • Forte: la coerenza assoluta offre una garanzia della linearità.Strong: Strong consistency offers a linearizability guarantee. Della linearità si riferisce alle richieste di servizio simultaneamente.Linearizability refers to serving requests concurrently. È garantito che le letture restituiscano sempre la versione di un elemento di cui sia stato eseguito il commit più di recente.The reads are guaranteed to return the most recent committed version of an item. Un client non visualizza mai una scrittura parziale o di cui non sia stato eseguito il commit.A client never sees an uncommitted or partial write. Gli utenti possono sempre essere certi di leggere la scrittura più recente sottoposta a commit.Users are always guaranteed to read the latest committed write.

    Il grafico seguente illustra la coerenza assoluta con le note musicali.The following graphic illustrates the strong consistency with musical notes. Dopo che i dati sono stati scritti nell'area "Stati Uniti occidentali 2", quando si leggono i dati da altre aree, si ottiene il valore più recente: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

  • Decadimento delimitato: le letture sono garantite per rispettare la garanzia di prefisso coerente.Bounded staleness: The reads are guaranteed to honor the consistent-prefix guarantee. È possibile che le letture ritardino dietro le Scritture al massimo "K" versioni (ovvero "aggiornamenti") di un elemento o di un intervallo di tempo "T" .The reads might lag behind writes by at most "K" versions (that is, "updates") of an item or by "T" time interval. In altre parole, quando si sceglie il decadimento ristretto, il "obsolescenza" può essere configurato in due modi:In other words, when you choose bounded staleness, the "staleness" can be configured in two ways:

  • Numero di versioni (K) dell'elementoThe number of versions (K) of the item

  • Intervallo di tempo (T) in base al quale le letture potrebbero ritardare le ScrittureThe time interval (T) by which the reads might lag behind the writes

L'obsolescenza associata offre un ordine globale totale esterno alla "finestra di obsolescenza".Bounded staleness offers total global order outside of the "staleness window." Quando un client esegue le operazioni di lettura all'interno di un'area che accetta Scritture, le garanzie fornite dalla coerenza con decadimento ristretto sono identiche a quelle garantite dalla coerenza assoluta.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.

All'interno della finestra di obsolescenza, il decadimento associato fornisce le garanzie di coerenza seguenti:Inside the staleness window, Bounded Staleness provides the following consistency guarantees:

  • Coerenza per i client nella stessa area per un account master singolo = StrongConsistency for clients in the same region for a single-master account = Strong

  • Coerenza per i client in aree diverse per un account master singolo = prefisso coerenteConsistency for clients in different regions for a single-master account = Consistent Prefix

  • Coerenza dei client che scrivono in una singola area per un account multimaster = prefisso coerenteConsistency for clients writing to a single region for a multi-master account = Consistent Prefix

  • Coerenza dei client che scrivono in aree diverse per un account multimaster = eventualeConsistency for clients writing to different regions for a multi-master account = Eventual

    Il decadimento ristretto viene spesso scelto da applicazioni distribuite a livello globale che prevedono latenze di scrittura ridotte, ma che richiedono la garanzia totale degli ordini globaliBounded staleness is frequently chosen by globally distributed applications that expect low write latencies but require total global order guarantee. Il decadimento ristretto è ideale per le applicazioni che includono la collaborazione e la condivisione di gruppi, il titolo di borsa, la pubblicazione-sottoscrizione/Accodamento e così via. Il grafico seguente illustra la coerenza con decadimento ristretto con le note musicali.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. Dopo che i dati sono stati scritti nell'area "Stati Uniti occidentali 2", le aree "Stati Uniti orientali 2" e "Australia orientale" leggono il valore scritto in base al tempo massimo di ritardo configurato o al numero massimo di operazioni: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

  • Sessione: all'interno di una singola sessione client le letture sono garantite per rispettare il prefisso coerente, le letture monotone, le Scritture monotone, la lettura delle Scritture e le garanzie Write-follows.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. Si presuppone una singola sessione "writer" o si condivide il token di sessione per più writer.This assumes a single "writer" session or sharing the session token for multiple writers.

I client al di fuori della sessione che esegue le Scritture vedranno le garanzie seguenti:Clients outside of the session performing writes will see the following guarantees:

  • Coerenza per i client nella stessa area per un account master singolo = prefisso coerenteConsistency for clients in same region for a single-master account = Consistent Prefix

  • Coerenza per i client in aree diverse per un account master singolo = prefisso coerenteConsistency for clients in different regions for a single-master account = Consistent Prefix

  • Coerenza dei client che scrivono in una singola area per un account multimaster = prefisso coerenteConsistency for clients writing to a single region for a multi-master account = Consistent Prefix

  • Coerenza per la scrittura dei client in più aree per un account multi-master = eventualeConsistency for clients writing to multiple regions for a multi-master account = Eventual

    La coerenza di sessione è il livello di coerenza ampiamente utilizzato sia per l'area singola sia per le applicazioni distribuite a livello globale.Session consistency is the widely used consistency level for both single region as well as globally distributed applications. Fornisce latenze di scrittura, disponibilità e velocità effettiva di lettura paragonabili a quelle della coerenza finale, ma fornisce anche le garanzie di coerenza in base alle esigenze delle applicazioni scritte per funzionare nel contesto di un utente.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. Il grafico seguente illustra la coerenza della sessione con le note musicali.The following graphic illustrates the session consistency with musical notes. "West US 2 Writer" e "West US 2 Reader" usano la stessa sessione (Session A) in modo che entrambi leggano gli stessi dati nello stesso momento.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. Mentre l'area "Australia orientale" utilizza "sessione B", riceve i dati in un secondo momento, ma nello stesso ordine delle Scritture.Whereas the "Australia East" region is using "Session B" so, it receives data later but in the same order as the writes.

    video

  • Prefisso coerente: gli aggiornamenti restituiti contengono un prefisso di tutti gli aggiornamenti, senza gap.Consistent prefix: Updates that are returned contain some prefix of all the updates, with no gaps. Il livello di coerenza del prefisso coerente garantisce che le Scritture non vengano mai visualizzate in modo corretto.Consistent prefix consistency level guarantees that read never see out-of-order writes.

Se queste sono state eseguite nell'ordine A, B, C, il client vede A, A,B o A,B,C, ma mai il fuori sequenza ad esempio A,C o 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. Il prefisso coerente fornisce latenze di scrittura, disponibilità e velocità effettiva di lettura paragonabili a quelle della coerenza finale, ma fornisce anche le garanzie di ordine che soddisfano le esigenze degli scenari in cui l'ordine è importante.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.

Di seguito sono riportate le garanzie di coerenza per il prefisso coerente:Below are the consistency guarantees for Consistent Prefix:

  • Coerenza per i client nella stessa area per un account master singolo = prefisso coerenteConsistency for clients in same region for a single-master account = Consistent Prefix
  • Coerenza per i client in aree diverse per un account master singolo = prefisso coerenteConsistency for clients in different regions for a single-master account = Consistent Prefix
  • Coerenza dei client che scrivono in una singola area per un account multimaster = prefisso coerenteConsistency for clients writing to a single region for a multi-master account = Consistent Prefix
  • Coerenza per la scrittura dei client in più aree per un account multi-master = eventualeConsistency for clients writing to multiple regions for a multi-master account = Eventual

Il grafico seguente illustra la coerenza del prefisso di coerenza con le note musicali.The following graphic illustrates the consistency prefix consistency with musical notes. In tutte le aree, le letture non visualizzano mai le Scritture non in ordine:In all the regions, the reads never see out of order writes:

video

  • Eventuale: non esiste alcuna garanzia di ordinamento per le letture.Eventual: There's no ordering guarantee for reads. In assenza di altre scritture, le repliche finiscono per convergere.In the absence of any further writes, the replicas eventually converge.
    La coerenza finale è la forma di coerenza più debole, perché un client può leggere i valori più vecchi di quelli precedentemente letti.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. La coerenza finale è ideale in cui l'applicazione non richiede alcuna garanzia di ordinamento.Eventual consistency is ideal where the application does not require any ordering guarantees. Gli esempi includono il numero di Retweet, mi piace o commenti non thread.Examples include count of Retweets, Likes, or non-threaded comments. Il grafico seguente illustra la coerenza finale con le note musicali.The following graphic illustrates the eventual consistency with musical notes.

    video

Informazioni aggiuntiveAdditional reading

Per altre informazioni sui concetti di coerenza, vedere gli articoli seguenti:To learn more about consistency concepts, read the following articles:

Passaggi successiviNext steps

Per altre informazioni sui livelli di coerenza in Azure Cosmo DB, vedere gli articoli seguenti:To learn more about consistency levels in Azure Cosmos DB, read the following articles: