Kanál změn ve službě Azure Cosmos DB
PLATÍ pro: rozhraní
SQL api
rozhraní API CASSANDRA
Gremlin API Azure Cosmos DB API
pro MongoDB
Kanál změn ve službě Azure Cosmos DB je trvalý záznam změn kontejneru v pořadí, ve kterým došlo. Podpora kanálu změn ve službě Azure Cosmos DB funguje díky naslouchání změnám kontejneru Azure Cosmos. Výstupem je pak seznam změněných dokumentů v pořadí podle času úprav. Trvalé změny lze zpracovat asynchronně a přírůstkově a výstup může být distribuován mezi jednoho nebo více konzumentů pro paralelní zpracování.
Přečtěte si další informace o vzorech návrhu kanálu změn.
Podporovaná rozhraní API a klientské sdk
Tuto funkci aktuálně podporují následující rozhraní API služby Azure Cosmos DB a klientské sady SDK.
| Klientské ovladače | SQL ROZHRANÍ API | Rozhraní API služby Azure Cosmos DB pro Cassandra | Rozhraní API služby Azure Cosmos DB pro MongoDB | Rozhraní Gremlin API | Rozhraní Table API |
|---|---|---|---|---|---|
| .NET | Yes | Yes | Yes | Yes | No |
| Java | Yes | Yes | Yes | Yes | No |
| Python | Yes | Yes | Yes | Yes | No |
| Node/JS | Yes | Yes | Yes | Yes | No |
Kanál změn a různé operace
V současné době se v kanálu změn zobrazí všechny vložení a aktualizace. Kanál změn nemůžete filtrovat pro konkrétní typ operace. Jednou z možných alternativ je přidání "softwarové značky" k položce pro aktualizace a filtrování na základě toho při zpracování položek v kanálu změn.
Kanál změn v současné době nepřikládá odstranění do protokolu. Podobně jako v předchozím příkladu můžete k odstraněných položkám přidat změkčnou značku. Do položky můžete například přidat atribut s názvem Odstraněno, nastavit ho na hodnotu true a nastavit hodnotu TTL pro položku tak, aby ji bylo možné automaticky odstranit. Můžete si přečíst kanál změn historických položek (poslední změna odpovídající položce, nezahrnuje přechodné změny), například položky přidané před pěti lety. Kanál změn můžete přečíst až do původu kontejneru, ale pokud dojde k odstranění položky, odebere se z kanálu změn.
Řazení položek v kanálu změn
Položky kanálu změn jsou v pořadí podle času jejich úpravy. Toto pořadí řazení je zaručené pro každý klíč logického oddílu.
Úroveň konzistence
Při využívání kanálu změn na úrovni konzistence Typu Případná může mezi následnými operacemi čtení kanálu změn doprovávat duplicitní události (poslední událost jedné operace čtení se zobrazí jako první z dalších).
Kanál změn v účtech Azure Cosmos ve více oblastech
Pokud u účtu Azure Cosmos ve více oblastech dojde k převzetí služeb při selhání oblasti zápisu, kanál změn bude fungovat v rámci operace ručního převzetí služeb při selhání a bude souvislé.
Kanál změn a TTL (Time to Live)
Pokud je u položky nastavená vlastnost TTL (Time to Live) na hodnotu -1, kanál změn se trvale zachová. Pokud se data odstraní, zůstanou v kanálu změn.
Kanál změn a _etag, _lsn nebo _ts
Formát _etag interní a neměli byste na něj mít závislost, protože se může kdykoli změnit. _ts je úprava nebo časové razítko vytvoření. K chronologickému _ts můžete použít následující funkce. _lsn je ID dávky, které se přidá jenom pro kanál změn. představuje ID transakce. Mnoho položek může mít stejné _lsn. ETag on FeedResponse se liší od _etag, které se u položky zobrazí. _etag je interní identifikátor a používá se pro řízení souběžnosti. Vlastnost _etag informace o verzi položky, zatímco vlastnost ETag se používá k sekvencování informačního kanálu.
Práce s kanálem změn
S kanálem změn můžete pracovat s následujícími možnostmi:
Kanál změn je k dispozici pro každý klíč logického oddílu v rámci kontejneru a může být distribuován mezi jednoho nebo více konzumentů pro paralelní zpracování, jak je znázorněno na obrázku níže.
Funkce kanálu změn
Kanál změn je ve výchozím nastavení povolený pro všechny účty Cosmos Azure.
Zřízenou propustnost můžete použít ke čtení z kanálu změn stejně jako u jakékoli jiné operace Azure Cosmos DB v jakékoli oblasti přidružené k vaší databázi Azure Cosmos.
Kanál změn obsahuje operace vložení a aktualizace položek v rámci kontejneru. Odstranění můžete zachytit nastavením příznaku "soft-delete" v rámci položek (například dokumentů) místo odstranění. Případně můžete pro položky s funkcí TTL nastavit konečnou dobu vypršení platnosti. Například 24 hodin a použití hodnoty této vlastnosti k zachycení odstranění. S tímto řešením musíte změny zpracovat v kratším časovém intervalu, než je doba vypršení platnosti TTL.
Do protokolu změn je zahrnuta pouze nejnovější změna dané položky. Přechodné změny nemusí být k dispozici.
Každá změna zahrnutá v protokolu změn se v kanálu změn zobrazí přesně jednou a klienti musí spravovat logiku kontrolních bodů. Pokud se chcete vyhnout složitosti správy kontrolních bodů, procesor kanálu změn poskytuje automatické vytváření kontrolních bodů a sémantiku "aspoň jednou". použití kanálu změn s procesorem kanálu změn.
Kanál změn se seřadí podle pořadí úprav v rámci každé hodnoty klíče logického oddílu. Hodnoty klíče oddílu nemají zaručené pořadí.
Změny je možné synchronizovat z libovolného bodu v čase, což znamená, že neexistuje žádná pevná doba uchovávání dat, po kterou jsou změny k dispozici.
Změny jsou k dispozici paralelně pro všechny klíče logických oddílů kontejneru azure Cosmos oddílu. Tato funkce umožňuje paralelní zpracování změn z velkých kontejnerů více spotřebiteli.
Aplikace mohou požádat o více kanálů změn ve stejném kontejneru současně. ChangeFeedOptions.StartTime lze použít k poskytnutí počátečního bodu. Pokud například chcete najít pokračovací token odpovídající danému času hodin. Pokud je zadaný token continuationToken, má přednost před hodnotami StartTime a StartFromBeginning. Přesnost ChangeFeedOptions.StartTime je ~5 sekund.
Kanál změn v rozhraních API pro Cassandra a MongoDB
Funkce kanálu změn se predikuje jako datový proud změn v rozhraní MongoDB API a dotazování s predikátem v rozhraní API Cassandra. Další informace o podrobnostech implementace rozhraní MongoDB API najdete v tématu Změna datových proudů v rozhraní API služby Azure Cosmos DB pro MongoDB.
Nativní Apache Cassandra poskytuje zachytávání dat změn (CDC), mechanismus pro označení konkrétních tabulek pro archivaci a zamítnutí zápisů do těchto tabulek po dosažení konfigurovatelné velikosti na disku pro protokol CDC. Funkce kanálu změn v rozhraní API služby Azure Cosmos DB pro Cassandra vylepšuje možnost dotazovat se na změny pomocí predikátu prostřednictvím jazyka CQL. Další informace o podrobnostech implementace najdete v tématu Kanál změn v rozhraní API služby Azure Cosmos DB pro Cassandra.
Další kroky
Teď můžete pokračovat a získat další informace o kanálu změn v následujících článcích: