Wybieranie właściwego poziomu spójnościChoose the right consistency level

Rozproszone bazy danych opierają się na replikacji w celu zapewnienia wysokiej dostępności, małych opóźnień lub obu — zasadniczego kompromisu między spójnością odczytu a dostępnością, czasem oczekiwania i przepływności.Distributed databases relying 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. Azure Cosmos DB pozwala deweloperom wybierać spośród pięciu dobrze zdefiniowanych modeli spójności: silnej, ograniczonej nieodświeżoności, sesji, spójnego prefiksu i ostateczności.Azure Cosmos DB allows developers to choose among the five well-defined consistency models: strong, bounded staleness, session, consistent prefix and eventual. Każdy z tych modeli spójności jest dobrze zdefiniowany, intuicyjny i może być używany w określonych rzeczywistych scenariuszach.Each of these consistency models is well-defined, intuitive and can be used for specific real-world scenarios. Każdy z pięciu modeli spójności zapewnia precyzyjne wady dostępności i wydajności . są one obsługiwane przez kompleksową umowy SLA.Each of the five consistency models provide precise availability and performance tradeoffs and are backed by comprehensive SLAs. Poniższe proste zagadnienia ułatwią wybór w wielu typowych scenariuszach.The following simple considerations will help you make the right choice in many common scenarios.

Interfejs API SQL i interfejs API tabelSQL API and Table API

Jeśli aplikacja jest skompilowana przy użyciu interfejsu API SQL lub interfejs API tabel, należy wziąć pod uwagę następujące kwestie:Consider the following points if your application is built using SQL API or Table API:

  • W przypadku wielu rzeczywistych scenariuszy spójność sesji jest optymalna i jest to zalecana opcja.For many real-world scenarios, session consistency is optimal and it's the recommended option. Aby uzyskać więcej informacji, zobacz, jak zarządzać tokenem sesji dla aplikacji.For more information, see, How-to manage session token for your application.

  • Jeśli aplikacja wymaga silnej spójności, zaleca się użycie ograniczonego poziomu spójności.If your application requires strong consistency, it is recommended that you use bounded staleness consistency level.

  • Jeśli potrzebujesz bardziej rygorystycznych gwarancji spójności niż podane przez spójność sesji i opóźnienie jednej cyfry milisekund dla operacji zapisu, zalecamy użycie ograniczonego poziomu spójności.If you need stricter consistency guarantees than the ones provided by session consistency and single-digit-millisecond latency for writes, it is recommended that you use bounded staleness consistency level.

  • Jeśli aplikacja wymaga spójności ostatecznej, zaleca się używanie spójnego poziomu spójności prefiksu.If your application requires eventual consistency, it is recommended that you use consistent prefix consistency level.

  • Jeśli potrzebujesz mniej rygorystycznych gwarancji spójności niż podane przez spójność sesji, zaleca się używanie spójnego poziomu spójności prefiksu.If you need less strict consistency guarantees than the ones provided by session consistency, it is recommended that you use consistent prefix consistency level.

  • Jeśli potrzebujesz najwyższej dostępności i najmniejszego opóźnienia, użyj poziomu spójności ostatecznej.If you need the highest availability and the lowest latency, then use eventual consistency level.

  • Jeśli potrzebujesz jeszcze wyższej trwałości danych bez utraty wydajności, możesz utworzyć niestandardowy poziom spójności w warstwie aplikacji.If you need even higher data durability without sacrificing performance, you can create a custom consistency level at the application layer. Aby uzyskać więcej informacji, zobacz jak zaimplementować synchronizację niestandardową w aplikacjach.For more information see, How-to implement custom synchronization in your applications.

Interfejsy API Cassandra, MongoDB i GremlinCassandra, MongoDB, and Gremlin APIs

Gwarancje spójności w programieConsistency guarantees in practice

W tym przypadku często można uzyskać silniejsze gwarancje spójności.In practice, you may often get stronger consistency guarantees. Gwarancje spójności operacji odczytu odnoszą się do aktualności i kolejności żądanego stanu bazy danych.Consistency guarantees for a read operation correspond to the freshness and ordering of the database state that you request. Spójność odczytu jest związana z porządkowaniem i propagacją operacji zapisu/aktualizacji.Read-consistency is tied to the ordering and propagation of the write/update operations.

  • Gdy poziom spójności jest ustawiony na nieaktualność, Cosmos dB gwarantuje, że klienci zawsze odczytują wartość poprzedniego zapisu z opóźnieniem ograniczonym przez okno przestarzałe.When the consistency level is set to bounded staleness, Cosmos DB guarantees that the clients always read the value of a previous write, with a lag bounded by the staleness window.

  • Gdy poziom spójności jest ustawiony na silnie, okno nieodświeżone jest równoważne zeru, a klienci mają gwarancję odczytu najnowszej zatwierdzonej wartości operacji zapisu.When the consistency level is set to strong, the staleness window is equivalent to zero, and the clients are guaranteed to read the latest committed value of the write operation.

  • W przypadku pozostałych trzech poziomów spójności okno przestarzałe jest w dużym stopniu zależne od obciążenia.For the remaining three consistency levels, the staleness window is largely dependent on your workload. Na przykład, jeśli nie ma żadnych operacji zapisu w bazie danych, operacja odczytu zmożliwością, sesjalub spójne prefiksy mogą dać te same wyniki co operacja odczytu o silnym poziomie spójności.For example, if there are no write operations on the database, a read operation with eventual, session, or consistent prefix consistency levels is likely to yield the same results as a read operation with strong consistency level.

Jeśli Twoje konto usługi Azure Cosmos jest skonfigurowane z poziomem spójności innym niż silna spójność, można sprawdzić prawdopodobieństwo, że klienci mogą uzyskać mocne i spójne odczyty dla obciążeń, patrząc na metrykę probabilistically z Nieodświeżoną (PBS).If your Azure Cosmos account is configured with a consistency level other than the strong consistency, you can find out the probability that your clients may get strong and consistent reads for your workloads by looking at the Probabilistically Bounded Staleness (PBS) metric. Ta Metryka jest dostępna w Azure Portal, aby dowiedzieć się więcej, zobacz monitorowanie metryki probabilistically ograniczonej (PBS).This metric is exposed in the Azure portal, to learn more, see Monitor Probabilistically Bounded Staleness (PBS) metric.

Probabilistyczne ograniczone nieaktualność pokazuje, jak to jest spójność ostateczna.Probabilistic bounded staleness shows how eventual is your eventual consistency. Ta Metryka zawiera szczegółowe informacje o tym, jak często można uzyskać większą spójność niż poziom spójności skonfigurowany obecnie na koncie usługi Azure Cosmos.This metric provides an insight into how often you can get a stronger consistency than the consistency level that you have currently configured on your Azure Cosmos account. Innymi słowy, można zobaczyć prawdopodobieństwo (mierzone w milisekundach), aby uzyskać silnie spójne odczyty dla kombinacji regionów zapisu i odczytu.In other words, you can see the probability (measured in milliseconds) of getting strongly consistent reads for a combination of write and read regions.

Następne krokiNext steps

Przeczytaj więcej na temat poziomów spójności w następujących artykułach:Read more about the consistency levels in the following articles: