Poziomy spójności w usłudze Azure Cosmos DBConsistency levels in Azure Cosmos DB

Rozproszonych baz danych, które opierają się na replikację, wysoką dostępność, małe opóźnienia lub obu, należy podstawowych zależnościami między spójności odczytu, a dostępność, opóźnienia i przepływności.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. Najbardziej komercyjnie dostępne bazy danych umożliwiają deweloperom wybór między dwoma ekstremalnymi modelami spójności : silną spójnością i spójnością ostateczną .Most commercially available distributed databases ask developers to choose between the two extreme consistency models: strong consistency and eventual consistency. Model linearizability lub silna spójność jest standardem dla programowania danych.The linearizability or the strong consistency model is the gold standard of data programmability. Jednak dodaje cenę o wyższym opóźnieniu (w stanie stałym) i ograniczoną dostępność (podczas niepowodzeń).But it adds a price of higher latency (in steady state) and reduced availability (during failures). Z drugiej strony spójność ostateczna zapewnia wyższą dostępność i lepszą wydajność, ale utrudnia Programowanie aplikacji.On the other hand, eventual consistency offers higher availability and better performance, but makes it hard to program applications.

Wyjaśnienie pojęcia spójności danych jako liczne opcje zamiast dwoma skrajnymi poziomami zbliża się do usługi Azure Cosmos DB.Azure Cosmos DB approaches data consistency as a spectrum of choices instead of two extremes. Ścisła spójność i ostateczna spójność znajdują się na końcu spektrum, ale istnieje wiele opcji spójności w spektrum.Strong consistency and eventual consistency are at the ends of the spectrum, but there are many consistency choices along the spectrum. Deweloperzy mogą korzystać z tych opcji, aby wybierać precyzyjne i szczegółowe kompromisy w odniesieniu do wysokiej dostępności i wydajności.Developers can use these options to make precise choices and granular tradeoffs with respect to high availability and performance.

Usługa Azure Cosmos DB deweloperzy mogą wybierać pięć dokładnie zdefiniowanych modeli spójności na spektrum spójności.With Azure Cosmos DB, developers can choose from five well-defined consistency models on the consistency spectrum. Z najsilniejszych do bardziej swobodnych modeli zalicza się silne, ograniczonenieaktualność, sesję, spójny prefiksi spójność ostateczną .From strongest to more relaxed, the models include strong, bounded staleness, session, consistent prefix, and eventual consistency. Modele są dobrze zdefiniowane i intuicyjne i mogą być używane w określonych rzeczywistych scenariuszach.The models are well-defined and intuitive and can be used for specific real-world scenarios. Każdy model zapewnia wady dostępności i wydajności i jest obsługiwany przez umowy SLA.Each model provides availability and performance tradeoffs and is backed by the SLAs. Na poniższej ilustracji przedstawiono różne poziomy spójności jako spektrum.The following image shows the different consistency levels as a spectrum.

Spójność o szerokim zakresie funkcji

Poziomy spójności to region-niezależny od i są gwarantowane dla wszystkich operacji niezależnie od regionu, w którym są obsługiwane odczyty i zapisy, liczbę regionów skojarzonych z kontem usługi Azure Cosmos lub czy Twoje konto jest skonfigurowane z użyciem jednego lub wiele regionów zapisu.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.

Zakres spójności odczytuScope of the read consistency

Kondycja spójności odczytu mają zastosowanie do jednej operacji odczytu, o określonym zakresie w ramach zakresu klucza partycji lub partycji logicznej.Read consistency applies to a single read operation scoped within a partition-key range or a logical partition. Operacja odczytu mogą być wystawiane przez klienta zdalnego lub procedury składowanej.The read operation can be issued by a remote client or a stored procedure.

Konfigurowanie domyślnego poziomu spójnościConfigure the default consistency level

W dowolnym momencie można skonfigurować domyślny poziom spójności na Twoim koncie usługi Azure Cosmos.You can configure the default consistency level on your Azure Cosmos account at any time. Domyślny poziom spójności skonfigurowany na Twoim koncie ma zastosowanie do wszystkich baz danych i kontenerów usługi Azure Cosmos w ramach tego konta.The default consistency level configured on your account applies to all Azure Cosmos databases and containers under that account. Wszystkie operacje odczytu i zapytania względem kontenera lub bazę danych domyślnie używają poziomu spójności określony.All reads and queries issued against a container or a database use the specified consistency level by default. Aby dowiedzieć się więcej, zobacz temat jak skonfigurować domyślny poziom spójności.To learn more, see how to configure the default consistency level.

Gwarancje skojarzone z poziomów spójnościGuarantees associated with consistency levels

Kompleksowe umowy SLA, udostępniane przez usługi Azure Cosmos DB gwarancji, że 100 procent żądań odczytu spełnia gwarancję spójności dla dowolnego poziomu spójności, że wybrano.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. Żądania odczytu spełnia spójności umowy SLA, jeśli spełnione są wszystkie gwarancje spójności skojarzone z poziomu spójności.A read request meets the consistency SLA if all the consistency guarantees associated with the consistency level are satisfied. Precyzyjne definicje pięciu poziomów spójności w Azure Cosmos DB przy użyciu języka specyfikacji TLA + są dostępne w repozytorium 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.

Semantyka poziomów spójności pięć są opisane poniżej:The semantics of the five consistency levels are described here:

  • Silne: Silna spójność oferuje gwarancję linearizability.Strong: Strong consistency offers a linearizability guarantee. Linearizability odwołuje się do obsługi żądań współbieżnie.Linearizability refers to serving requests concurrently. Operacje odczytu mają gwarancję do zwrócenia zatwierdzone najbardziej aktualną wersję elementu.The reads are guaranteed to return the most recent committed version of an item. Klient nigdy nie widzi zapisu niezatwierdzone lub jego część.A client never sees an uncommitted or partial write. Użytkownicy są zawsze gwarantowane odczyt najnowsza wersja zatwierdzone/zapis.Users are always guaranteed to read the latest committed write.

  • Powiązananieaktualność: Odczyty są gwarantowane do przestrzegania gwarancji o spójnym prefiksie.Bounded staleness: The reads are guaranteed to honor the consistent-prefix guarantee. Odczyty mogą być opóźnione w stosunku do zapisu o największej liczbie "K" (np. "aktualizacje") elementu lub interwału czasu "T" .The reads might lag behind writes by at most "K" versions (i.e., "updates") of an item or by "T" time interval. Innymi słowy, w przypadku wybrania ograniczonej nieodświeżoności, "nieaktualność" można skonfigurować na dwa sposoby:In other words, when you choose bounded staleness, the "staleness" can be configured in two ways:

    • Liczba wersji (K) elementuThe number of versions (K) of the item
    • Przedział czasu (T), przez który odczyty mogą być opóźnione za zapisemThe time interval (T) by which the reads might lag behind the writes

    Powiązana nieaktualność oferty całkowitej globalnej kolejności z wyjątkiem w ramach "okno nieaktualność."Bounded staleness offers total global order except within the "staleness window." Istnieje monotoniczny gwarancje odczytu w regionie wewnątrz lub na zewnątrz okna nieaktualność.The monotonic read guarantees exist within a region both inside and outside the staleness window. Silna spójność ma taką samą semantykę jak ta, która jest oferowana przez ograniczony czas nieodświeżony.Strong consistency has the same semantics as the one offered by bounded staleness. Okno nieaktualność jest równa zero.The staleness window is equal to zero. Powiązana nieaktualność jest również określany jako atomowych opóźnione czasu.Bounded staleness is also referred to as time-delayed linearizability. Gdy klient wykonuje operacje odczytu w obrębie regionu akceptującego zapisy, gwarancje wynikające z podanej nieodświeżonej spójności są identyczne z tymi gwarancjami przez silną spójność.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.

  • Sesja: W ramach jednej sesji klienta zagwarantowane jest przestrzeganie spójnego prefiksu (przy założeniu pojedynczej sesji "składnika zapisywania"), monotoniczny odczytów, monotoniczny zapisów, odczytów i zapisów, a ponadto gwarantuje zapis do odczytu.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. Klienci poza sesją wykonującą operacje zapisu będą widzieli ostateczną spójność.Clients outside of the session performing writes will see eventual consistency.

  • Spójny prefiks: Zwrócone aktualizacje zawierają niektóre prefiksy wszystkich aktualizacji bez przerw.Consistent prefix: Updates that are returned contain some prefix of all the updates, with no gaps. Spójny poziom spójności prefiksu gwarantuje, że odczyty nigdy nie są wyświetlane.Consistent prefix consistency level guarantees that reads never see out-of-order writes.

  • Ostateczne: Nie ma gwarancji porządkowania dla operacji odczytu.Eventual: There's no ordering guarantee for reads. W przypadku braku dalszy zapis replik ostatecznie zbiegają się.In the absence of any further writes, the replicas eventually converge.

Poziomy spójności baseballuConsistency levels explained through baseball

Jako przykład Weźmy mecz scenariusz gier.Let's take a baseball game scenario as an example. Wyobraź sobie sekwencji operacji zapisu, które reprezentują wynik z baseballu.Imagine a sequence of writes that represent the score from a baseball game. Ocena linii inning przez inning jest opisana w replikowane spójności danych przy użyciu mecz papieru.The inning-by-inning line score is described in the Replicated data consistency through baseball paper. Ta hipotetyczny baseballu jest obecnie w trakcie inning siódmego.This hypothetical baseball game is currently in the middle of the seventh inning. Jest stretch inning — siódmego.It's the seventh-inning stretch. Odwiedzający znajdują się za wynikami od 2 do 5, jak pokazano poniżej:The visitors are behind with a score of 2 to 5 as shown below:

11 22 33 44 55 66 77 88 99 PrzebiegiRuns
GościeVisitors 00 00 11 00 11 00 00 22
Strona głównaHome 11 00 11 11 00 22 55

Kontener usługi Azure Cosmos przechowuje podsumowania przebiegów dla odwiedzających i zespołów domowych.An Azure Cosmos container holds the run totals for the visitors and home teams. Gra w trakcie, różnych odczytu gwarancje może prowadzić do odczytywania różne wyniki klientom.While the game is in progress, different read guarantees might result in clients reading different scores. W poniższej tabeli wymieniono kompletny zestaw wyników, które mogą być zwrócone przez odczytywanie odwiedzających i macierzystego wyniki z każdym gwarancje spójności pięć.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. Osoby odwiedzające wynik jest wymienione jako pierwsze.The visitors' score is listed first. Różne możliwe wartości zwracane są oddzielone przecinkami.Different possible return values are separated by commas.

Poziom spójnościConsistency level Wyniki (Goście, dom)Scores (Visitors, Home)
SilneStrong 2 – 52-5
Powiązana nieaktualnośćBounded staleness Wyniki, które są co najwyżej jedną inningą: 2-3, 2-4, 2-5Scores that are at most one inning out of date: 2-3, 2-4, 2-5
SesjiSession
  • Dla składnika zapisywania: 2 – 5For the writer: 2-5
  • Dla wszystkich osób poza modułem zapisywania: 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 i 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
  • Po przeczytaniu 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
Spójny prefiksConsistent prefix 0-0, 0 – 1, 1-1, 1 – 2, 1 – 3, 2 i 3, 2 – 4, 2 – 50-0, 0-1, 1-1, 1-2, 1-3, 2-3, 2-4, 2-5
OstatecznaEventual 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 i 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

Materiały uzupełniająceAdditional reading

Aby dowiedzieć się więcej na temat pojęć spójności, przeczytaj następujące artykuły:To learn more about consistency concepts, read the following articles:

Kolejne krokiNext steps

Aby dowiedzieć się więcej na temat poziomów spójności w usłudze Azure Cosmos DB, przeczytaj następujące artykuły:To learn more about consistency levels in Azure Cosmos DB, read the following articles: