Wybieranie właściwego poziomu spójności

Ukończone

Każdy z modeli spójności może służyć do konkretnych rzeczywistych scenariuszy. Każda z nich zapewnia precyzyjne kompromisy w zakresie dostępności i wydajności oraz jest wspierana przez kompleksowe umowy SLA. Poniższe proste zagadnienia ułatwiają wybór w wielu typowych scenariuszach.

Konfigurowanie domyślnego poziomu spójności

Domyślny poziom spójności na koncie usługi Azure Cosmos DB można skonfigurować w dowolnym momencie. Domyślny poziom spójności skonfigurowany na koncie ma zastosowanie do wszystkich baz danych i kontenerów usługi Azure Cosmos DB w ramach tego konta. Wszystkie operacje odczytu i zapytania wystawione względem kontenera lub bazy danych domyślnie używają określonego poziomu spójności.

Spójność odczytu ma zastosowanie do pojedynczej operacji odczytu o zakresie w ramach partycji logicznej. Operację odczytu można wydać przez klienta zdalnego lub procedurę składowaną.

Gwarancje związane z poziomami spójności

Usługa Azure Cosmos DB gwarantuje, że 100 procent żądań odczytu spełnia gwarancję spójności wybranego poziomu spójności. Dokładne definicje pięciu poziomów spójności w usłudze Azure Cosmos DB przy użyciu języka specyfikacji TLA+ znajdują się w repozytorium GitHub azure-cosmos-tla .

Silna spójność

Silna spójność zapewnia gwarancję operacji atomowych. Linearyzność odnosi się do współbieżnej obsługi żądań. Operacje odczytu mają gwarancję zwrócenia najnowszej zatwierdzonej wersji elementu. Klient nigdy nie widzi niezatwierdzonego lub częściowego zapisu. Użytkownicy zawsze mają gwarancję odczytu najnowszego zatwierdzonego zapisu.

Powiązana nieaktualność

W przypadku spójności powiązanej nieaktualności odczyty są gwarantowane do przestrzegania gwarancji spójnych prefiksów. Odczyty mogą opóźniać zapisy przez co najwyżej "K" wersje (czyli "aktualizacje") elementu lub według przedziału czasu "T", w zależności od tego, która z nich zostanie osiągnięta jako pierwsza. Innymi słowy, po wybraniu powiązanej nieaktualności można skonfigurować "nieaktualność" na dwa sposoby:

  • Liczba wersji elementu (K)
  • Odczyty interwału czasu (T) mogą być opóźniane za zapisami

W przypadku pojedynczego konta regionu minimalna wartość K i T to 10 operacji zapisu lub 5 sekund. W przypadku kont obejmujących wiele regionów minimalna wartość K i T wynosi 100 000 operacji zapisu lub 300 sekund.

Spójność sesji

Spójność sesji gwarantuje, że w ramach jednej sesji klienta odczyty są zgodne z prefiksem, odczytami monotonicznymi, monotonicznymi zapisami, odczytami i zapisami po zapisach. Zakłada się, że jedna sesja "zapisywania" lub udostępnianie tokenu sesji dla wielu składników zapisywania.

Spójny prefiks

W spójnym prefiksie aktualizacje wprowadzone jako zapisy pojedynczego dokumentu widzą spójność ostateczną. Aktualizacje wykonane jako partia w ramach transakcji, są zwracane spójne z transakcją, w której zostały zatwierdzone. Operacje zapisu w ramach transakcji wielu dokumentów są zawsze widoczne razem.

Załóżmy, że dwie operacje zapisu są wykonywane w dokumentach Doc 1 i Doc 2 w transakcjach T1 i T2. Gdy klient wykonuje odczyt w dowolnej repliki, użytkownik widzi dokument "Doc 1 v1 i Doc 2 v1" lub "Doc 1 v2 i Doc 2 v2", ale nigdy "Doc 1 v1 i Doc 2 v2" lub "Doc 1 v2 i Doc 2 v1" dla tej samej operacji odczytu lub zapytania.

Spójność ostateczna

W przypadku spójności ostatecznej nie ma gwarancji porządkowania odczytów. W przypadku braku jakichkolwiek dalszych zapisów repliki staną się ostatecznie zbieżne.

Spójność ostateczna jest najsłabszą formą spójności, ponieważ klient może odczytać wartości starsze niż te, które odczytał wcześniej. Spójność ostateczna jest idealnie dostosowana do sytuacji, w której aplikacja nie wymaga żadnych gwarancji związanych z kolejnością. Przykłady obejmują liczbę komentarzy Retweets, Likes lub nonthreaded