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 hodnotoutrue
a 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 _ts
s 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: