Principy zápisů do více oblastí ve službě Azure Cosmos DB

PLATÍ PRO: NoSQL MongoDB Cassandra Gremlin Tabulka

Nejlepším způsobem, jak dosáhnout téměř nulového výpadku ve scénáři částečného nebo celkového výpadku, kdy není potřeba zaručit konzistenci čtení, je nakonfigurovat účet pro zápisy do více oblastí. Tento článek popisuje klíčové koncepty, které je potřeba vědět při konfiguraci účtu pro zápis do více oblastí.

Oblast centra

V účtu databáze pro zápis do více oblastí se dvěma nebo více oblastmi se první oblast, ve které byl váš účet vytvořen, nazývá "centrální" oblast. Všechny ostatní oblasti, které se pak přidají do účtu, se nazývají "satelitní" oblasti. Pokud je oblast centra odebrána z účtu, další oblast v pořadí, ve které byly přidány, se automaticky vybere jako oblast centra.

Všechny zápisy přicházející do satelitních oblastí jsou kvorum potvrzené v místní oblasti a potom se později odešlou do oblasti centra pro řešení konfliktů asynchronně. Jakmile zápis přejde do oblasti centra a vyřeší se konflikt, stane se "potvrzeným" zápisem. Do té doby se nazývá "nezávazný" zápis nebo "nepotvrzený" zápis. Všechny zápisy obsluhované z oblasti centra se okamžitě stanou potvrzeným zápisem.

Principy časových razítek

Jedním z hlavních rozdílů v účtu pro zápis do více oblastí je přítomnost dvou hodnot časového razítka serveru spojených s každou entitou. První je epocha serveru, ve které byla entita napsána v této oblasti. Toto časové razítko je k dispozici v účtech pro zápis do jedné oblasti i účty pro zápis do více oblastí. Druhá hodnota časového razítka serveru je přidružená k epochě, kdy byla potvrzena absence konfliktu, nebo byl konflikt vyřešen v oblasti centra. Potvrzený nebo konflikt vyřešený zápis má přiřazené časové razítko řešení konfliktů (crts), zatímco nepotvrzené nebo nezávazné zápis nemá crts. Ve službě Cosmos DB jsou nastavené serverem dvě časová razítka. Primární rozdíl spočívá v tom, jestli je konfigurace oblasti účtu single-write nebo multi-write.

Časové razítko Význam Při zveřejnění
_ts Epocha serveru, ve které byla entita napsána. Vždy vystavená všemi rozhraními API pro čtení a dotazování
crts Epocha, kdy byl vyřešen konflikt s více zápisy, nebo byla potvrzena absence konfliktu. V případě konfigurace oblasti s více zápisy toto časové razítko definuje pořadí změn pro průběžné zálohování a kanál změn:

  • Používá se k vyhledání počátečního času pro žádosti kanálu změn.
  • Používá se jako pořadí řazení pro odpověď kanálu změn.
  • Slouží k řazení zápisů pro průběžné zálohování.
  • Zálohování protokolů zachycuje pouze potvrzené nebo konfliktní vyřešené zápisy, a proto výsledek obnovení průběžné zálohy vrací pouze potvrzené zápisy.
Vystavené v reakci na žádosti kanálu změn a pouze v případech, kdy požadavek povolí "Nový model drátu". Toto je výchozí nastavení pro všechny verze a odstraní režim kanálu změn.

Další kroky

Dále si můžete přečíst následující články: