Niveaux de cohérence dans Azure Cosmos DBConsistency levels in Azure Cosmos DB

Les bases de données distribuées qui reposent sur la réplication afin d’offrir une haute disponibilité, une faible latence ou les deux, constituent le compromis fondamental entre la cohérence de la lecture et la disponibilité, la latence et le débit.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 plupart des bases de données distribuées qui sont commercialisées demandent aux développeurs de choisir entre les deux modèles de cohérence extrêmes : une cohérence forte et une cohérence éventuelle.Most commercially available distributed databases ask developers to choose between the two extreme consistency models: strong consistency and eventual consistency. La linéarisabilité ou le modèle de cohérence fort constitue la référence en matière de programmabilité des données.The linearizability or the strong consistency model is the gold standard of data programmability. Mais il est proposé au prix d’une latence élevée (dans un état stable) et d’une perte de disponibilité (en cas de défaillance).But it adds a price of higher latency (in steady state) and reduced availability (during failures). Dans le même temps, la cohérence éventuelle offre une plus haute disponibilité et de meilleures performances, mais la programmation des applications est devient difficile.On the other hand, eventual consistency offers higher availability and better performance, but makes it hard to program applications.

Azure Cosmos DB aborde la cohérence des données sous forme d’un éventail de choix, plutôt que de proposer deux extrêmes.Azure Cosmos DB approaches data consistency as a spectrum of choices instead of two extremes. La cohérence forte et la cohérence éventuelle constituent les deux extrémités du spectre, mais il existe de nombreuses possibilités entre les deux.Strong consistency and eventual consistency are at the ends of the spectrum, but there are many consistency choices along the spectrum. Les développeurs peuvent utiliser ces options pour faire des choix précis et des compromis granulaires en termes de haute disponibilité et de performance.Developers can use these options to make precise choices and granular tradeoffs with respect to high availability and performance.

Avec Azure Cosmos DB, les développeurs peuvent faire leur choix parmi cinq modèles de cohérence bien définis sur le spectre de la cohérence.With Azure Cosmos DB, developers can choose from five well-defined consistency models on the consistency spectrum. De la cohérence la plus forte à la plus souple, les modèles incluent forte, obsolescence limitée, session, préfixe cohérent et éventuelle.From strongest to more relaxed, the models include strong, bounded staleness, session, consistent prefix, and eventual consistency. Les modèles sont bien définis et intuitifs et ils peuvent être utilisés pour des scénarios réels spécifiques.The models are well-defined and intuitive and can be used for specific real-world scenarios. Chaque modèle propose des compromis clairs entre disponibilité et performances, et ces modèles sont appuyés par des contrats de niveau de service.Each model provides availability and performance tradeoffs and is backed by the SLAs. L’illustration suivante montre les différents niveaux de cohérence en tant que spectre.The following image shows the different consistency levels as a spectrum.

La cohérence en tant que spectre

Les niveaux de cohérence sont indépendants des régions et garantis pour toutes les opérations, indépendamment de la région d’émission des lectures et des écritures, du nombre de régions associées à votre compte Azure Cosmos ou de la configuration de votre compte avec une ou plusieurs régions d’écriture.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.

Étendue de la cohérence de lectureScope of the read consistency

La cohérence de lecture s’applique à une seule opération de lecture dans la plage de clé de partition ou partition logique.Read consistency applies to a single read operation scoped within a partition-key range or a logical partition. L’opération de lecture peut être émise par un client distant ou une procédure stockée.The read operation can be issued by a remote client or a stored procedure.

Configurer le niveau de cohérence par défautConfigure the default consistency level

Vous pouvez configurer le niveau de cohérence par défaut sur votre compte Azure Cosmos DB à tout moment.You can configure the default consistency level on your Azure Cosmos account at any time. Le niveau de cohérence par défaut configuré sur votre compte s’applique à toutes les bases de données Azure Cosmos et tous les conteneurs sous ce compte.The default consistency level configured on your account applies to all Azure Cosmos databases and containers under that account. Toutes les lectures et requêtes émises vers un conteneur ou une base de données utilisent le niveau de cohérence par défaut spécifié.All reads and queries issued against a container or a database use the specified consistency level by default. Pour en savoir plus, consultez Configurer le niveau de cohérence par défaut.To learn more, see how to configure the default consistency level.

Garanties associées aux niveaux de cohérenceGuarantees associated with consistency levels

Les contrats de niveau de service complets fournis par Azure Cosmos DB garantissent que 100 % des requêtes de lecture respecteront la garantie de cohérence dans le cadre du niveau de cohérence choisi.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. Une requête de lecture respecte le contrat de niveau de service de cohérence si toutes les garanties de cohérence associées au niveau de cohérence sont satisfaites.A read request meets the consistency SLA if all the consistency guarantees associated with the consistency level are satisfied. Les définitions précises des cinq niveaux de cohérence dans Azure Cosmos DB (en utilisant le langage de spécification TLA +) sont fournies dans le référentiel 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.

La sémantique des cinq niveaux de cohérence est décrite ici :The semantics of the five consistency levels are described here:

  • Remarque: une cohérence forte offre une garantie de linéarisabilité.Strong: Strong consistency offers a linearizability guarantee. La linéarisabilité fait référence aux demandes de traitement simultanées.Linearizability refers to serving requests concurrently. Garantit que les lectures retournent la version validée la plus récente d’un élément.The reads are guaranteed to return the most recent committed version of an item. Un client ne voit jamais une écriture partielle ou non validée.A client never sees an uncommitted or partial write. Les utilisateurs sont toujours assurés de lire la toute dernière écriture validée.Users are always guaranteed to read the latest committed write.

  • Obsolescence limitée: les lectures honoreront la garantie de préfixe cohérent.Bounded staleness: The reads are guaranteed to honor the consistent-prefix guarantee. Les lectures sont retardées derrière les écritures par, au plus, des versions « K » (c’est-à-dire des « mises à jour ») d’un élément ou un intervalle de temps « T » .The reads might lag behind writes by at most "K" versions (i.e., "updates") of an item or by "T" time interval. En d’autres termes, lorsque vous choisissez l’obsolescence limitée, « l’obsolescence » peut être configurée de deux manières :In other words, when you choose bounded staleness, the "staleness" can be configured in two ways:

    • Nombre de versions (K) de l’élémentThe number of versions (K) of the item
    • Intervalle de temps (T) pendant lequel les lectures peuvent être en retard par rapport aux écrituresThe time interval (T) by which the reads might lag behind the writes

    La cohérence de type obsolescence limitée fournit l’ordre global total, en dehors de la « fenêtre d’obsolescence ».Bounded staleness offers total global order except within the "staleness window." Notez que des garanties de lecture unitone existent dans une région à l’intérieur et en dehors de la fenêtre d’obsolescence.The monotonic read guarantees exist within a region both inside and outside the staleness window. La cohérence forte dispose de la même sémantique que l’obsolescence limitée.Strong consistency has the same semantics as the one offered by bounded staleness. La fenêtre d’obsolescence est égale à zéro.The staleness window is equal to zero. L’obsolescence limitée est également appelée linéarisabilité retardée.Bounded staleness is also referred to as time-delayed linearizability. Lorsqu’un client effectue des opérations de lecture dans une région acceptant les écritures, les garanties fournies par une cohérence à obsolescence limitée sont identiques à celles à forte cohérence.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.

  • Session: Dans une session client unique, les lectures honoreront les garanties de préfixe cohérent (en partant du principe qu’il s’agit d’une session à « writer » unique), de lectures unitones, d’écritures unitones, de lecture de vos écritures et d’écriture suivant les lectures.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. Les clients en dehors de la session effectuant des écritures verront la cohérence éventuelle.Clients outside of the session performing writes will see eventual consistency.

  • Préfixe cohérent : les mises à jour retournées contiennent un préfixe de toutes les mises à jour, sans interruption.Consistent prefix: Updates that are returned contain some prefix of all the updates, with no gaps. Le niveau de cohérence Préfixe cohérent garantit que les lectures ne voient jamais les écritures non ordonnées.Consistent prefix consistency level guarantees that reads never see out-of-order writes.

  • Eventual (Éventuel) : Il n’existe aucune garantie de classement pour les lectures.Eventual: There's no ordering guarantee for reads. En l’absence d’autres écritures, les réplicas finissent par converger.In the absence of any further writes, the replicas eventually converge.

Niveaux de cohérence – Exemple du baseballConsistency levels explained through baseball

Prenons comme exemple un scénario de match de base-ball.Let's take a baseball game scenario as an example. Imaginez une séquence d’écritures représentant le score d’un match de base-ball.Imagine a sequence of writes that represent the score from a baseball game. Le score par manche est décrit dans le document Replicated data consistency through baseball (Cohérence des données répliquées - Exemple du baseball).The inning-by-inning line score is described in the Replicated data consistency through baseball paper. Ce match de baseball hypothétique est actuellement au milieu de sa septième manche.This hypothetical baseball game is currently in the middle of the seventh inning. Il s’agit de la pause de la septième manche.It's the seventh-inning stretch. Les visiteurs perdent avec un score de 2 à 5 comme indiqué ci-dessous :The visitors are behind with a score of 2 to 5 as shown below:

11 22 33 44 55 66 77 88 99 PointsRuns
VisiteursVisitors 00 00 11 00 11 00 00 22
LocauxHome 11 00 11 11 00 22 5.5

Un conteneur Azure Cosmos conserve les totaux des points des visiteurs et des équipes locales.An Azure Cosmos container holds the run totals for the visitors and home teams. Lorsque le match est en cours, il se peut que les clients lisent des scores différents à cause des différentes garanties de lecture.While the game is in progress, different read guarantees might result in clients reading different scores. Le tableau suivant répertorie l’ensemble complet des scores qui pourraient être renvoyés par la lecture des scores des visiteurs et des locaux, en fonction des cinq garanties de cohérence.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. Le score des visiteurs est répertorié en premier.The visitors' score is listed first. Les différentes valeurs de retour possibles sont séparées par des virgules.Different possible return values are separated by commas.

Niveau de cohérenceConsistency level Score (Visiteurs, Locaux)Scores (Visitors, Home)
FortStrong 2-52-5
Obsolescence limitéeBounded staleness Scores obsolètes (d’une manche tout au plus) : 2-3, 2-4, 2-5Scores that are at most one inning out of date: 2-3, 2-4, 2-5
SessionSession
  • Pour l’auteur : 2-5For the writer: 2-5
  • Pour toute personne autre que l’auteur : 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
  • Après lecture de 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
Préfixe cohérentConsistent 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
ÉventuelEventual 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

Documentation supplémentaireAdditional reading

Pour en savoir plus sur les concepts de cohérence, lisez les articles suivants :To learn more about consistency concepts, read the following articles:

Étapes suivantesNext steps

Pour en savoir plus sur les niveaux de cohérence dans Azure Cosmos DB, lisez les articles suivants :To learn more about consistency levels in Azure Cosmos DB, read the following articles: