Typy konfliktów i zasady rozwiązywania problemów w przypadku korzystania z wielu regionów zapisu

DOTYCZY: Nosql Mongodb Cassandra Gremlin Tabeli

Zasady rozwiązywania konfliktów i konfliktów mają zastosowanie, jeśli konto usługi Azure Cosmos DB jest skonfigurowane z wieloma regionami zapisu.

W przypadku kont usługi Azure Cosmos DB skonfigurowanych z wieloma regionami zapisu konflikty aktualizacji mogą wystąpić, gdy składniki zapisywania jednocześnie aktualizują ten sam element w wielu regionach. Konflikty aktualizacji mogą mieć następujące trzy typy:

  • Konflikty wstawiania: te konflikty mogą wystąpić, gdy aplikacja jednocześnie wstawia dwa lub więcej elementów z tym samym unikatowym indeksem w co najmniej dwóch regionach. Na przykład ten konflikt może wystąpić z właściwością ID.

  • Konflikty zastępowania: te konflikty mogą wystąpić, gdy aplikacja aktualizuje ten sam element jednocześnie w co najmniej dwóch regionach.

  • Konflikty usuwania: te konflikty mogą wystąpić, gdy aplikacja jednocześnie usuwa element w jednym regionie i aktualizuje go w innym regionie.

Zasady rozwiązywania konfliktów

Usługa Azure Cosmos DB oferuje elastyczny mechanizm oparty na zasadach umożliwiający rozwiązywanie konfliktów zapisu. Możesz wybrać spośród dwóch zasad rozwiązywania konfliktów w kontenerze usługi Azure Cosmos DB:

  • Ostatni zapis wygrywa (LWW): ta zasada rozpoznawania domyślnie używa właściwości sygnatury czasowej zdefiniowanej przez system. Jest on oparty na protokole zegara synchronizacji czasowej. Jeśli używasz interfejsu API dla NoSQL, możesz określić dowolną inną niestandardową właściwość liczbową (np. własne pojęcie znacznika czasu) do użycia na potrzeby rozwiązywania konfliktów. Niestandardowa właściwość liczbowa jest również określana jako ścieżka rozwiązywania konfliktów.

    Jeśli co najmniej dwa elementy powodują konflikt operacji wstawiania lub zamieniania, element o najwyższej wartości ścieżki rozwiązywania konfliktów staje się zwycięzcą. System określa zwycięzcę, jeśli wiele elementów ma tę samą wartość liczbową dla ścieżki rozwiązywania konfliktów. Wszystkie regiony będą zbieżne z pojedynczym zwycięzcą i trafią do tej samej wersji zatwierdzonego elementu. Gdy występują konflikty usuwania, usunięta wersja zawsze wygrywa konflikty wstawiania lub zastępowania. Ten wynik występuje niezależnie od wartości ścieżki rozwiązywania konfliktów.

    Uwaga

    Ostatnie zapisy wins to domyślne zasady rozwiązywania konfliktów i używają sygnatury _ts czasowej dla następujących interfejsów API: SQL, MongoDB, Cassandra, Gremlin i Table. Niestandardowa właściwość liczbowa jest dostępna tylko dla interfejsu API dla noSQL.

    Aby dowiedzieć się więcej, zobacz przykłady korzystające z zasad rozwiązywania konfliktów LWW.

  • Niestandardowe: te zasady rozwiązywania są przeznaczone do semantyki zdefiniowanej przez aplikację na potrzeby uzgadniania konfliktów. Po ustawieniu tych zasad w kontenerze usługi Azure Cosmos DB należy również zarejestrować procedurę składowaną scalania. Ta procedura jest wywoływana automatycznie, gdy konflikty są wykrywane w ramach transakcji bazy danych na serwerze. System zapewnia dokładnie jednokrotną gwarancję wykonania procedury scalania w ramach protokołu zobowiązania.

    Jeśli skonfigurujesz kontener przy użyciu opcji niestandardowego rozwiązywania i nie można zarejestrować procedury scalania w kontenerze lub procedura scalania zgłasza wyjątek w czasie wykonywania, konflikty są zapisywane w kanale informacyjnym konfliktów. Następnie aplikacja musi ręcznie rozwiązać konflikty w kanale informacyjnym konfliktów. Aby dowiedzieć się więcej, zobacz przykłady używania niestandardowych zasad rozwiązywania i używania kanału informacyjnego konfliktów.

    Uwaga

    Niestandardowe zasady rozwiązywania konfliktów są dostępne tylko dla kont interfejsu API noSQL i można je ustawić tylko w czasie tworzenia. Nie można ustawić niestandardowych zasad rozpoznawania dla istniejącego kontenera.

Następne kroki

Dowiedz się, jak skonfigurować zasady rozwiązywania konfliktów: