Konsistenzebenen in Azure Cosmos DBConsistency levels in Azure Cosmos DB

Verteilte Datenbanken, die auf Replikation angewiesen sind, um Hochverfügbarkeit, niedrige Latenzzeiten oder beides sicherzustellen, bilden den grundlegenden Kompromiss zwischen Lesekonsistenz und Verfügbarkeit, Latenz sowie Durchsatz.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. Die meisten kommerziell verfügbaren verteilten Datenbanken verlangen von Entwicklern, dass sie zwischen den beiden extremen Konsistenzmodellen wählen: starke Konsistenz und letztliche Konsistenz.Most commercially available distributed databases ask developers to choose between the two extreme consistency models: strong consistency and eventual consistency. Die Linearisierbarkeit oder das Modell für starke Konsistenz ist der Goldstandard in Sachen Datenprogrammierbarkeit.The linearizability or the strong consistency model is the gold standard of data programmability. Es wird jedoch teuer durch hohe Wartezeit (im stabilen Zustand) bzw. durch geringere Verfügbarkeit (im Fall eines Ausfalls) erkauft.But it adds a price of higher latency (in steady state) and reduced availability (during failures). Auf der anderen Seite bietet die letztliche Konsistenz eine höhere Verfügbarkeit und bessere Leistung, erschwert jedoch die Programmierung von Anwendungen erheblich.On the other hand, eventual consistency offers higher availability and better performance, but makes it hard to program applications.

Azure Cosmos DB bietet für die Datenkonsistenz nicht nur diese beiden Extreme, sondern ein ganzes Spektrum von Auswahlmöglichkeiten.Azure Cosmos DB approaches data consistency as a spectrum of choices instead of two extremes. Die starke und die letztliche Konsistenz bilden die beiden Enden des Spektrums, aber dazwischen gibt es viele weitere Konsistenzoptionen.Strong consistency and eventual consistency are at the ends of the spectrum, but there are many consistency choices along the spectrum. Entwickler können mit diesen Optionen eine genaue Auswahl treffen und differenzierte Kompromisse in Bezug auf Hochverfügbarkeit und Leistung eingehen.Developers can use these options to make precise choices and granular tradeoffs with respect to high availability and performance.

Mit Azure Cosmos DB können Entwickler aus fünf klar definierten Konsistenzmodellen für das Konsistenzspektrum auswählen.With Azure Cosmos DB, developers can choose from five well-defined consistency models on the consistency spectrum. Dabei handelt es sich um die folgenden Modelle (von der stärksten bis zur schwächsten Option): starke Konsistenz, begrenzte Veraltung, Sitzungskonsistenz, Präfixkonsistenz und letztliche Konsistenz.From strongest to more relaxed, the models include strong, bounded staleness, session, consistent prefix, and eventual consistency. Die Modelle sind klar definiert und intuitiv und können für spezifische reale Szenarien verwendet werden.The models are well-defined and intuitive and can be used for specific real-world scenarios. Jedes Modell ermöglicht Verfügbarkeits- und Leistungskompromisse und wird durch SLAs abgesichert.Each model provides availability and performance tradeoffs and is backed by the SLAs. In der folgenden Abbildung sind die verschiedenen Konsistenzebenen als Spektrum dargestellt.The following image shows the different consistency levels as a spectrum.

Konsistenz als Spektrum

Die Konsistenzebenen sind regionsunabhängig und für alle Vorgänge garantiert, unabhängig von der Region, in der die Lese- und Schreibvorgänge verarbeitet werden, der Anzahl der mit Ihrem Azure Cosmos-Konto verbundenen Regionen und davon, ob Ihr Konto mit einer oder mehreren Schreibregionen konfiguriert ist.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.

Geltungsbereich der LesekonsistenzScope of the read consistency

Die Lesekonsistenz gilt für einen einzelnen Lesevorgang innerhalb eines Partitionsschlüsselbereichs bzw. einer logischen Partition.Read consistency applies to a single read operation scoped within a partition-key range or a logical partition. Ein Lesevorgang kann durch einen Remoteclient oder eine gespeicherte Prozedur ausgelöst werden.The read operation can be issued by a remote client or a stored procedure.

Konfigurieren der StandardkonsistenzebeneConfigure the default consistency level

Sie können die Standardkonsistenzebene für Ihr Azure Cosmos-Konto jederzeit konfigurieren.You can configure the default consistency level on your Azure Cosmos account at any time. Die für Ihr Konto konfigurierte Standardkonsistenzebene gilt für alle Azure Cosmos-Datenbanken und -Container in diesem Konto.The default consistency level configured on your account applies to all Azure Cosmos databases and containers under that account. Bei allen in einem Container oder einer Datenbank ausgeführten Lesevorgängen und Abfragen wird standardmäßig die angegebene Konsistenzebene verwendet.All reads and queries issued against a container or a database use the specified consistency level by default. Weitere Informationen finden Sie unter Konfigurieren der Standardkonsistenzebene.To learn more, see how to configure the default consistency level.

Garantien in Zusammenhang mit KonsistenzebenenGuarantees associated with consistency levels

Die von Azure Cosmos DB bereitgestellten umfassenden SLAs garantieren, dass 100 Prozent aller Leseanforderungen die Konsistenzgarantie für jede von Ihnen ausgewählte Konsistenzebene erfüllen.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. Eine Leseanforderung erfüllt die Konsistenz-SLA, wenn alle Konsistenzgarantien der Konsistenzebene erfüllt werden.A read request meets the consistency SLA if all the consistency guarantees associated with the consistency level are satisfied. Die genauen Definitionen der fünf Konsistenzebenen in Azure Cosmos DB – unter Verwendung der TLA+-Spezifikationssprache – finden Sie im GitHub-Repository 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.

Im Folgenden wird die Semantik der fünf Konsistenzebenen beschrieben:The semantics of the five consistency levels are described here:

  • Starke Konsistenz: Starke Konsistenz bietet garantierte Linearisierbarkeit.Strong: Strong consistency offers a linearizability guarantee. Linearisierbarkeit bedeutet die gleichzeitige Verarbeitung von Anforderungen.Linearizability refers to serving requests concurrently. Die Lesevorgänge geben garantiert die neueste Version eines Elements zurück, für die ein Commit ausgeführt wurde.The reads are guaranteed to return the most recent committed version of an item. Einem Client wird nie ein partieller Schreibvorgang bzw. ein Schreibvorgang, für den kein Commit ausgeführt wurde, angezeigt.A client never sees an uncommitted or partial write. Benutzer haben immer die Garantie, dass sie den neuesten Schreibvorgang lesen, für den ein Commit ausgeführt wurde.Users are always guaranteed to read the latest committed write.

  • Begrenzte Veraltung (Bounded staleness) : Die Lesevorgänge berücksichtigen immer die Garantie der Präfixkonsistenz.Bounded staleness: The reads are guaranteed to honor the consistent-prefix guarantee. Lesevorgänge bleiben höchstens „K“ Versionen (d. h. Updates) eines Elements oder um ein durch „T“ definiertes Zeitintervall hinter Schreibvorgängen zurück.The reads might lag behind writes by at most "K" versions (i.e., "updates") of an item or by "T" time interval. Wenn Sie also die begrenzte Veraltung auswählen, kann die Veraltung auf zwei Arten konfiguriert werden:In other words, when you choose bounded staleness, the "staleness" can be configured in two ways:

    • Anhand der Anzahl von Versionen (K) des ElementsThe number of versions (K) of the item
    • Anhand des Zeitintervalls (T) zwischen Lese- und SchreibvorgängenThe time interval (T) by which the reads might lag behind the writes

    Begrenzte Veraltung bietet eine vollständige globale Reihenfolge außer innerhalb des „Veraltungsfensters“.Bounded staleness offers total global order except within the "staleness window." Die monotonen Lesegarantien bestehen innerhalb einer Region sowohl innerhalb als auch außerhalb des Veraltungszeitfensters.The monotonic read guarantees exist within a region both inside and outside the staleness window. Die starke Konsistenz weist die gleiche Semantik auf wie die begrenzte Veraltung.Strong consistency has the same semantics as the one offered by bounded staleness. Das Veraltungszeitfenster ist gleich Null (0).The staleness window is equal to zero. Die begrenzte Veraltung wird auch als „Linearisierbarkeit mit Zeitverzögerung“ bezeichnet.Bounded staleness is also referred to as time-delayed linearizability. Wenn ein Client Lesevorgänge in einer Region ausführt, die Schreibvorgänge akzeptiert, bietet die begrenzte Veraltung die gleichen Garantien wie die starke Konsistenz.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.

  • Sitzung (Session) : Die Lesevorgänge in einer einzelnen Clientsitzung berücksichtigen immer folgende Garantien: Präfixkonsistenz (sofern es sich um eine einzelne Schreibsitzung handelt), monotone Lesevorgänge, monotone Schreibvorgänge, Lesen der eigenen Schreibvorgänge, Schreibvorgänge folgen Lesevorgängen.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. Clients außerhalb der Sitzung, die Schreibvorgänge ausführen, erreichen auch irgendwann Konsistenz.Clients outside of the session performing writes will see eventual consistency.

  • Präfixkonsistenz: Die zurückgegebenen Updates enthalten ein bestimmtes Präfix aller Updates ohne Lücken.Consistent prefix: Updates that are returned contain some prefix of all the updates, with no gaps. Die konsistente Präfixkonsistenzebene garantiert, dass für Lesevorgänge niemals Schreibvorgänge in falscher Reihenfolge angezeigt werden.Consistent prefix consistency level guarantees that reads never see out-of-order writes.

  • Letztlich (Eventual) : Es gibt keine Reihenfolgengarantie für Lesevorgänge.Eventual: There's no ordering guarantee for reads. Wenn keine weiteren Schreibvorgänge vorhanden sind, konvergieren die Replikate schließlich.In the absence of any further writes, the replicas eventually converge.

Konsistenzebenen – erläutert am Beispiel BaseballConsistency levels explained through baseball

Wir verwenden hier das Szenario eines Baseballspiels als Beispiel.Let's take a baseball game scenario as an example. Stellen Sie sich eine Sequenz von Schreibvorgängen vor, die den Punktestand eines Baseballspiels darstellen.Imagine a sequence of writes that represent the score from a baseball game. Das Ergebnis eines Baseballspiels mit den Punkteständen für jedes Inning wird im Dokument Erläuterung der Konsistenz replizierter Daten anhand von Baseball beschrieben.The inning-by-inning line score is described in the Replicated data consistency through baseball paper. Dieses hypothetische Baseballspiel befindet sich aktuell in der Mitte des siebten Innings.This hypothetical baseball game is currently in the middle of the seventh inning. Der Seventh-inning stretch wird durchgeführt.It's the seventh-inning stretch. Die Gastmannschaft liegt mit 2:5 im Rückstand (wie unten dargestellt).The visitors are behind with a score of 2 to 5 as shown below:

11 22 33 44 55 66 77 88 99 RunsRuns
GästeVisitors 00 00 11 00 11 00 00 22
HeimHome 11 00 11 11 00 22 55

Ein Azure Cosmos-Container enthält die Gesamtanzahl von Runs des Gast- und des Heimteams.An Azure Cosmos container holds the run totals for the visitors and home teams. Während das Spiel läuft, können verschiedene Lesegarantien dazu führen, dass Clients verschiedene Punktestände lesen.While the game is in progress, different read guarantees might result in clients reading different scores. In der folgenden Tabelle sind sämtliche Punktestände aufgelistet, die durch Lesen der Punktestände des Gast- und des Heimteams mit jeder der fünf Konsistenzgarantien zurückgegeben werden können.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. Die Punkte der Gastmannschaft werden zuerst aufgeführt.The visitors' score is listed first. Die verschiedenen möglichen Rückgabewerte werden durch Kommas getrennt.Different possible return values are separated by commas.

KonsistenzebeneConsistency level Punktestände (Gäste, Heim)Scores (Visitors, Home)
Starke KonsistenzStrong 2-52-5
Begrenzte VeraltungBounded staleness Punktestände, die mindestens ein Inning alt sind: 2-3, 2-4, 2-5Scores that are at most one inning out of date: 2-3, 2-4, 2-5
SitzungskonsistenzSession
  • Für den Writer: 2-5For the writer: 2-5
  • Für alle anderen (außer dem 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
  • Nach dem Lesen von 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äfixkonsistenzConsistent 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
Letztliche KonsistenzEventual 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

Zusätzliche LektüreAdditional reading

In folgenden Ressourcen erfahren Sie mehr über Konsistenzkonzepte:To learn more about consistency concepts, read the following articles:

Nächste SchritteNext steps

Lesen Sie die folgenden Artikel, um mehr über die Konsistenzebenen in Azure Cosmos DB zu erfahren:To learn more about consistency levels in Azure Cosmos DB, read the following articles: