Sdílet prostřednictvím


Změna režimů kanálu ve službě Azure Cosmos DB

PLATÍ PRO: NoSQL

Azure Cosmos DB nabízí dva režimy kanálu změn. Každý režim nabízí stejné základní funkce. Mezi rozdíly patří operace zachycené v informačním kanálu, metadata, která jsou k dispozici pro každou změnu, a dobu uchovávání změn. Kanál změn můžete využívat v různých režimech napříč několika aplikacemi pro stejný kontejner Azure Cosmos DB tak, aby vyhovoval požadavkům jednotlivých úloh. Jednotlivé aplikace kanálu změn je možné nakonfigurovat pouze pro čtení kanálu změn v jednom režimu. Využívání kanálu změn v jednom režimu nezakazuje využívání kanálu změn v jiném režimu v jiné aplikaci.

Poznámka:

Máte nějaký názor na režimy kanálu změn? Chceme to slyšet! Zpětnou vazbu můžete sdílet přímo s technickým týmem služby Azure Cosmos DB: cosmoschangefeed@microsoft.com

Nejnovější režim kanálu změn verzí

Nejnovější režim verze je trvalý záznam změn provedených u položek z vytváření a aktualizací. V kontejneru získáte nejnovější verzi každé položky. Pokud se například vytvoří položka a pak se aktualizuje před přečtením kanálu změn, zobrazí se v kanálu změn pouze aktualizovaná verze. Odstranění se nezachytí jako změny a po odstranění položky už nebude v informačním kanálu k dispozici. Režim kanálu změn nejnovější verze je ve výchozím nastavení povolený a je kompatibilní se všemi účty služby Azure Cosmos DB s výjimkou rozhraní API pro tabulky a rozhraní API for PostgreSQL. Tento režim byl dříve výchozím způsobem využívání kanálu změn.

Všechny verze a odstraní režim kanálu změn (Preview)

Všechny verze a režim odstranění (Preview) jsou trvalým záznamem všech změn položek z operací vytvoření, aktualizace a odstranění. Získáte záznam o každé změně položek v pořadí, v jakém k ní došlo, včetně přechodných změn položky mezi čtením kanálu změn. Pokud se například vytvoří a aktualizuje položka před přečtením kanálu změn, zobrazí se v kanálu změn jak verze vytvoření, tak aktualizace položky. Pokud chcete číst z kanálu změn ve všech verzích a v režimu odstraňování, musíte mít nakonfigurované průběžné zálohování pro účet služby Azure Cosmos DB. Zapnutí průběžného zálohování vytvoří všechny verze a odstraní kanál změn. Při použití tohoto režimu kanálu změn můžete číst pouze změny, ke kterým došlo během období průběžného zálohování. Tento režim je kompatibilní pouze s účty Azure Cosmos DB for NoSQL. Přečtěte si další informace o tom, jak si zaregistrovat verzi Preview.

Případy použití kanálu změn

Nejnovější režim verze nabízí snadný způsob, jak zpracovat změny v reálném čase i historické změny položek v kontejneru s možností vrátit se k změnám od začátku kontejneru.

Pro tento režim jsou vhodné následující scénáře:

  • Migrace celého kontejneru do sekundárního umístění

  • Možnost znovu zpracovat změny od začátku kontejneru.

  • Zpracování změn položek v kontejneru, které jsou výsledkem operací vytváření a aktualizace v reálném čase

  • Úlohy, které nepotřebují zachytit odstranění nebo přechodné změny mezi čtením.

Funkce jednotlivých režimů

Kromě společných funkcí ve všech režimech kanálu změn má každý režim kanálu změn následující charakteristiky:

  • Kanál změn obsahuje operace vložení a aktualizace provedené u položek v kontejneru.

  • Tento režim kanálu změn se neodstraní. Odstranění můžete zachytit tak, že v položkách nastavíte příznak obnovitelného odstranění, místo abyste je odstranili přímo. Můžete například přidat atribut do položky volanou deleted s hodnotou truea pak nastavit hodnotu TTL (Time to Live) položky. Kanál změn ho zachytí jako aktualizaci a položka se po vypršení platnosti hodnoty TTL automaticky odstraní. Alternativně můžete nastavit konečné období vypršení platnosti položek pomocí funkce TTL. V tomto řešení musíte změny zpracovat v kratším časovém intervalu, než je doba vypršení platnosti hodnoty TTL.

  • Do kanálu změn je zahrnuta pouze nejnovější změna konkrétní položky. Přechodné změny nemusí být dostupné.

  • Po odstranění položky už není v kanálu změn k dispozici.

  • Změny je možné synchronizovat z libovolného bodu v čase a neexistuje žádná pevná doba uchovávání dat, pro kterou jsou změny k dispozici.

  • Kanál změn nemůžete filtrovat pro konkrétní typ operace. Jednou z možných alternativ je přidání "měkké značky" u položky pro aktualizace a filtrování na základě značky při zpracování položek v kanálu změn.

  • Výchozí bod pro čtení kanálu změn může být od začátku kontejneru, od bodu v čase, od "nyní" nebo z konkrétního kontrolního bodu. Přesnost času zahájení je přibližně pět sekund.

Práce s kanálem změn

Každý režim je kompatibilní s různými metodami čtení kanálu změn pro každý jazyk.

Pomocí následujících způsobů můžete využívat změny z kanálu změn v nejnovějším režimu verzí:

Metoda pro čtení kanálu změn .NET Java Python Node.js
Model vyžádání změn kanálu změn Ano Ano Ano Yes
Procesor kanálu změn Ano Ano No Ne
Trigger Služby Azure Functions Ano Ano Ano Yes

Parsování objektu odpovědi

V nejnovějším režimu verze je výchozí objekt odpovědi pole položek, které se změnily. Každá položka obsahuje standardní metadata pro libovolnou položku služby Azure Cosmos DB včetně _etag a _tss přidáním nové vlastnosti . _lsn

Formát _etag je interní a neměli byste na něm záviset, protože se může kdykoli změnit. _ts je úprava nebo časové razítko vytvoření. Můžete použít _ts pro chronologické porovnání. _lsn je ID dávky, které je přidáno pouze pro kanál změn, který představuje ID transakce. Mnoho položek může mít stejné _lsn.

ETag položka FeedResponse se liší od _etag položky, kterou vidíte. _etag je interní identifikátor a používá se k řízení souběžnosti. Vlastnost _etag představuje verzi položky, zatímco ETag vlastnost se používá k sekvencování informačního kanálu.

Další kroky

Další informace o kanálu změn najdete v následujících článcích: