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 chiedere agli sviluppatori di scegliere tra i due modelli di coerenza estremi: strong coerenza e finale coerenza.Most commercially available distributed databases ask developers to choose between the two extreme consistency models: strong consistency and eventual consistency. Il  linearità oppure il modello di coerenza assoluta è lo standard di programmabilità dei dati.The  linearizability or the strong consistency model is the gold standard of data programmability. Ma aggiunge un prezzo di latenza elevata (in stato stabile) e una disponibilità ridotta (caso di errori).But it adds a price of higher 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 per 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. Coerenza assoluta e coerenza finale sono alle estremità dello spettro, ma sono disponibili molte opzioni di coerenza nell'ambito.Strong consistency and eventual consistency are at the ends of the spectrum, but there are many consistency choices along the spectrum. Gli sviluppatori possono usare queste opzioni per rendere le scelte precise e granulari compromessi rispetto alla disponibilità elevata e prestazioni.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 modelli di coerenza ben definiti nello spettro della coerenza.With Azure Cosmos DB, developers can choose from five well-defined consistency models on the consistency spectrum. Dal più forte al più flessibili, i modelli includono strong, decadimento ristretto, sessione, prefisso coerentee finale coerenza.From strongest to more relaxed, the models include strong, bounded staleness, session, consistent prefix, and eventual consistency. I modelli sono ben definiti e intuitivo e possono essere usati per specifici scenari reali.The models are well-defined and intuitive and can be used for specific real-world scenarios. Ogni modello fornisce compromessi tra prestazioni e disponibilità e supportata da contratti di servizio.Each model provides availability and performance tradeoffs and is backed by the SLAs. L'immagine seguente mostra i livelli di coerenza diverse come una gamma.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 dal fatto l'area da cui le operazioni di lettura e scrittura viene gestite, il numero di aree associate all'account Azure Cosmos, o se l'account è configurato con un singolo 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 il cui ambito si trova in un intervallo di chiavi di partizione o in una partizione logica.Read consistency applies to a single read operation scoped within a partition-key range or 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 di Cosmos Azure e contenitori 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 precisare dei cinque livelli di coerenza in Azure Cosmos DB usando il linguaggio di specifica TLA + sono disponibili nel azure-cosmos-tla repository 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:

  • Assoluta: La coerenza assoluta offre una garanzia di linearizzabilità.Strong: Strong consistency offers a linearizability guarantee. È 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.

  • Decadimento ristretto: è garantito che le operazioni di lettura rispettino la garanzia della coerenza del prefisso.Bounded staleness: The reads are guaranteed to honor the consistent-prefix guarantee. Le operazioni di lettura potrebbe ritardo delle scritture al massimo "K" versioni (ad esempio, "aggiornamenti") di un elemento o da "T" intervallo di tempo.The reads might lag behind writes by at most "K" versions (i.e., "updates") of an item or by "T" time interval. In altre parole, quando si sceglie il decadimento ristretto, tale "obsolescenza" può essere configurato in due modi:In other words, when you choose bounded staleness, the "staleness" can be configured in two ways:

    • Il numero delle versioni (K) dell'elementoThe number of versions (K) of the item
    • L'intervallo di tempo (T) da cui le operazioni di lettura potrebbe rimanere indietro rispetto le operazioni di scritturaThe time interval (T) by which the reads might lag behind the writes

    Il decadimento ristretto offre un ordine globale totale tranne all'interno della "finestra di decadimento".Bounded staleness offers total global order except within the "staleness window." La garanzia di lettura monotona esiste in un'area sia all'interno che all'esterno della finestra di obsolescenza.The monotonic read guarantees exist within a region both inside and outside the staleness window. Coerenza assoluta è la stessa semantica di quella offerta da decadimento ristretto.Strong consistency has the same semantics as the one offered by bounded staleness. La finestra di obsolescenza è uguale a zero.The staleness window is equal to zero. L'obsolescenza associata è anche definita linearizzabilità posticipata.Bounded staleness is also referred to as time-delayed linearizability. Quando un client esegue le operazioni di lettura all'interno di un'area che accetta le scritture, le garanzie fornite dal livello di coerenza decadimento ristretto sono identiche a tali garanzie per la 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.

  • Sessione: questo livello assicura che le operazioni di lettura rispettino le garanzie della coerenza del prefisso (presupponendo una singola sessione di scrittura), delle letture monotoniche, delle scritture monotoniche, della lettura delle proprie scritture e delle letture che seguono la scrittura.Session: The 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. L'ambito di una coerenza di sessione è una sessione client.Session consistency is scoped to a client session.

  • Coerenza del prefisso: gli aggiornamenti restituiti contengono un prefisso di tutti gli aggiornamenti, senza lacune.Consistent prefix: Updates that are returned contain some prefix of all the updates, with no gaps. Livello di coerenza prefisso coerente garantisce che non vedano mai scritture non di in ordine.Consistent prefix consistency level guarantees that reads never see out-of-order writes.

  • Finale: Non c'è 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.

I livelli di coerenza spiegati attraverso il baseballConsistency levels explained through baseball

Come esempio, ecco uno scenario tratto dal baseball.Let's take a baseball game scenario as an example. Si immagini una sequenza di operazioni di scrittura che rappresentano il punteggio di una partita di baseball.Imagine a sequence of writes that represent the score from a baseball game. Il punteggio inning per inning è descritto nel documento Replicated data consistency through baseball (La coerenza dei dati replicati spiegata tramite il baseball).The inning-by-inning line score is described in the Replicated data consistency through baseball paper. In questa ipotetica partita di baseball si sta svolgendo il settimo inning.This hypothetical baseball game is currently in the middle of the seventh inning. È la dirittura del settimo inning.It's the seventh-inning stretch. I visitatori sono protetti da con un punteggio pari a 2 e 5 come illustrato di seguito:The visitors are behind with a score of 2 to 5 as shown below:

11 22 33 44 55 66 77 88 99 PuntiRuns
OspitiVisitors 00 00 11 00 11 00 00 22
LocaliHome 11 00 11 11 00 22 55

Un contenitore Cosmos Azure contiene i totali di esecuzione per i team home e i visitatori.An Azure Cosmos container holds the run totals for the visitors and home teams. Nel corso della partita, garanzie di lettura diverse possono determinare la lettura di punteggi diversi da parte dei client.While the game is in progress, different read guarantees might result in clients reading different scores. La tabella seguente elenca il set completo di punteggi che possono essere restituiti dalla lettura dei punteggi delle due squadre con ognuna delle cinque garanzie di coerenza.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. Il punteggio della squadra ospite viene elencato per primo.The visitors' score is listed first. Possibili valori restituiti diversi sono separati da virgole.Different possible return values are separated by commas.

Livello di coerenzaConsistency level Assegna un punteggio (visitatori, home page)Scores (Visitors, Home)
AssolutoStrong 2-52-5
Obsolescenza associataBounded staleness Punteggi non aggiornati di un inning al massimo: 2-3, 2-4, 2-5Scores that are at most one inning out of date: 2-3, 2-4, 2-5
SessioneSession
  • Per il writer: 2-5For the writer: 2-5
  • Per chiunque, eccetto il 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-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
  • Dopo la lettura 1-3: 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
Coerenza del prefissoConsistent 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
FinaleEventual 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-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

Altre informazioniAdditional 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: