Sdílet prostřednictvím


Typy konfliktů a zásady řešení při použití více oblastí zápisu

PLATÍ PRO: NoSQL MongoDB Cassandra Skřítek Stůl

Konflikty a zásady řešení konfliktů platí, pokud je váš účet služby Azure Cosmos DB nakonfigurovaný s více oblastmi zápisu.

Pro účty Azure Cosmos DB nakonfigurované s více oblastmi zápisu může dojít ke konfliktům aktualizací, když zapisovače současně aktualizují stejnou položku ve více oblastech. Konflikty aktualizací můžou mít následující tři typy:

  • Konflikty vložení: K těmto konfliktům může dojít, když aplikace současně vloží dvě nebo více položek se stejným jedinečným indexem ve dvou nebo více oblastech. K tomuto konfliktu může například dojít u vlastnosti ID.

  • Konflikty nahrazení: K těmto konfliktům může dojít, když aplikace aktualizuje stejnou položku současně ve dvou nebo více oblastech.

  • Konflikty odstranění: K těmto konfliktům může dojít, když aplikace současně odstraní položku v jedné oblasti a aktualizuje ji v jiné oblasti.

Zásady řešení konfliktů

Azure Cosmos DB nabízí flexibilní mechanismus řízený zásadami pro řešení konfliktů zápisu. V kontejneru Azure Cosmos DB můžete vybrat ze dvou zásad řešení konfliktů:

  • Poslední zápis wins (LWW):: Tato zásada řešení ve výchozím nastavení používá vlastnost časového razítka definovanou systémem. Je založen na protokolu hodin synchronizace času. Pokud používáte rozhraní API pro NoSQL, můžete pro řešení konfliktů zadat jakoukoli jinou vlastní číselnou vlastnost (např. vlastní pojem časového razítka). Vlastní číselná vlastnost se také označuje jako cesta řešení konfliktů.

    Pokud dojde ke konfliktu dvou nebo více položek při operacích vložení nebo nahrazení, položka s nejvyšší hodnotou cesty řešení konfliktů se stane vítězem. Systém určí vítěze, pokud má více položek stejnou číselnou hodnotu pro cestu řešení konfliktů. Všechny oblasti budou konvergovat k jednomu vítězi a skončí se stejnou verzí potvrzené položky. Pokud dojde ke konfliktům odstranění, odstraněná verze vždy získá konflikty vložení nebo nahrazení. K tomuto výsledku dochází bez ohledu na hodnotu cesty řešení konfliktů.

    Poznámka:

    Poslední zápis wins je výchozí zásada řešení konfliktů a používá časové razítko _ts pro následující rozhraní API: SQL, MongoDB, Cassandra, Gremlin a Table. Vlastní číselná vlastnost je k dispozici pouze pro rozhraní API pro NoSQL.

    Další informace najdete v příkladech , které používají zásady řešení konfliktů LWW.

  • Vlastní: Tato zásada řešení je určená pro sémantiku definovanou aplikací pro odsouhlasení konfliktů. Když nastavíte tuto zásadu v kontejneru Azure Cosmos DB, musíte také zaregistrovat uloženou proceduru sloučení. Tento postup se automaticky vyvolá při zjištění konfliktů v rámci databázové transakce na serveru. Systém poskytuje přesně jednou záruku pro provádění procesu sloučení v rámci protokolu závazku.

    Pokud kontejner nakonfigurujete s možností vlastního řešení a v kontejneru se nepodaří zaregistrovat proceduru sloučení nebo při slučovacím postupu dojde za běhu k výjimce, konflikty se zapíšou do informačního kanálu konfliktů. Vaše aplikace pak musí konflikty vyřešit ručně v informačním kanálu konfliktů. Další informace najdete v příkladech použití vlastních zásad řešení a použití informačního kanálu konfliktů.

    Poznámka:

    Vlastní zásady řešení konfliktů jsou dostupné jenom pro účty API pro NoSQL a dají se nastavit jenom při vytváření. U existujícího kontejneru není možné nastavit vlastní zásady řešení.

Další kroky

Zjistěte, jak nakonfigurovat zásady řešení konfliktů: