Udostępnij za pośrednictwem


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

DOTYCZY: NoSQL MongoDB Kasandra Gremlin Stół

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ą być następującymi trzema typami:

  • Konflikty wstawiania: te konflikty mogą wystąpić, gdy aplikacja jednocześnie wstawia dwa lub więcej elementów z tym samym indeksem unikatowym 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 w celu rozwiązywania konfliktów zapisu. Możesz wybrać z dwóch zasad rozwiązywania konfliktów w kontenerze usługi Azure Cosmos DB:

  • Ostatnie zapisy wins (LWW): te zasady rozwiązywania domyślnie używają właściwości znacznika czasu zdefiniowanego 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ż nazywana ścieżką rozwiązywania konfliktów.

    Jeśli co najmniej dwa elementy powodują konflikt operacji wstawiania lub zastępowania, 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 kończą się tą samą wersją zatwierdzonego elementu. Gdy występują konflikty usuwania, usunięta wersja zawsze wygrywa konflikty wstawiania lub zastępowania. Ten wynik występuje bez względu na wartość ścieżki rozwiązywania konfliktów.

    Uwaga

    Ostatnie zapisywanie wins to domyślne zasady rozwiązywania konfliktów i używają znacznika _ts czasu 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 raz gwarancję wykonania procedury scalania w ramach protokołu zobowiązania.

    Jeśli skonfigurujesz kontener przy użyciu niestandardowej opcji rozpoznawania 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życia niestandardowych zasad rozwiązywania problemów i sposobu używania kanału informacyjnego konfliktów.

    Uwaga

    Niestandardowe zasady rozwiązywania konfliktów są dostępne tylko dla interfejsu API dla kont 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: