Ändringsflöde i Azure Cosmos DB

GÄLLER FÖR: Nosql Mongodb Cassandra Gremlin

Ändringsflöde i Azure Cosmos DB är en beständig post med ändringar i en container i den ordning de sker. Stödet för ändringsflöde i Azure Cosmos DB fungerar genom att lyssna efter ändringar på en Azure Cosmos DB-container. Funktionen returnerar sedan den sorterade listan över dokument som ändrats i den ordning de ändrades. De beständiga ändringarna kan bearbetas asynkront och inkrementellt, och utdata kan distribueras över en eller flera konsumenter för parallell bearbetning.

Läs mer om designmönster för ändringsflöde.

API:er och klient-SDK:er som stöds

Funktionen för ändringsflöde stöds för närvarande i följande Azure Cosmos DB SDK:er.

Klientdrivrutiner NoSQL Apache Cassandra MongoDB Apache Gremlin Tabell PostgreSQL
.NET Icon indicating that this feature is supported in the .NET SDK for the API for NoSQL. Icon indicating that this feature is supported in the .NET SDK for the API for Apache Cassandra. Icon indicating that this feature is supported in the .NET SDK for the API for MongoDB. Icon indicating that this feature is supported in the .NET SDK for the API for Apache Gremlin. Icon indicating that this feature is not supported in the .NET SDK for the API for Table. Icon indicating that this feature is not supported in the .NET SDK for the API for PostgreSQL.
Java Icon indicating that this feature is supported in the Java SDK for the API for NoSQL. Icon indicating that this feature is supported in the Java SDK for the API for Apache Cassandra. Icon indicating that this feature is supported in the Java SDK for the API for MongoDB. Icon indicating that this feature is supported in the Java SDK for the API for Apache Gremlin. Icon indicating that this feature is not supported in the Java SDK for the API for Table. Icon indicating that this feature is not supported in the Java SDK for the API for PostgreSQL.
Python Icon indicating that this feature is supported in the Python SDK for the API for NoSQL. Icon indicating that this feature is supported in the Python SDK for the API for Apache Cassandra. Icon indicating that this feature is supported in the Python SDK for the API for MongoDB. Icon indicating that this feature is supported in the Python SDK for the API for Apache Gremlin. Icon indicating that this feature is not supported in the Python SDK for the API for Table. Icon indicating that this feature is not supported in the Python SDK for the API for PostgreSQL.
Nod/JavaScript Icon indicating that this feature is supported in the JavaScript SDK for the API for NoSQL. Icon indicating that this feature is supported in the JavaScript SDK for the API for Apache Cassandra. Icon indicating that this feature is supported in the JavaScript SDK for the API for MongoDB. Icon indicating that this feature is supported in the JavaScript SDK for the API for Apache Gremlin. Icon indicating that this feature is not supported in the JavaScript SDK for the API for Table. Icon indicating that this feature is not supported in the JavaScript SDK for the API for PostgreSQL.

Arbeta med ändringsflöde

Du kan arbeta med ändringsflöde med hjälp av följande alternativ:

Ändringsflöde är tillgängligt för partitionsnyckelintervall i en Azure Cosmos DB-container. På så sätt kan den distribueras över en eller flera konsumenter för parallell bearbetning enligt bilden nedan.

Distributed processing of Azure Cosmos DB change feed

Kommentar

Partitionsnyckelintervall mappas till fysiska partitioner när du använder ändringsflödesprocessorn och FeedRanges när du använder pull-modellen.

Funktioner i ändringsflöde

  • Ändringsflöde är aktiverat som standard för alla Azure Cosmos DB-konton.

  • Det finns flera ändringsflödeslägen, varav vissa kräver ytterligare konfiguration för att aktivera.

  • Du kan använda ditt etablerade dataflöde för att läsa från ändringsflödet, precis som andra Azure Cosmos DB-åtgärder, i någon av de regioner som är associerade med ditt Azure Cosmos DB-konto.

  • Ändringsflödet innehåller infognings- och uppdateringsåtgärder som gjorts för objekt i containern. Om du använder alla versioner och tar bort läget (förhandsversion) får du även ändringar från borttagningsåtgärder och TTL-förfallodatum.

  • Varje ändring visas exakt en gång i ändringsflödet och klienterna måste hantera kontrollpunktslogik. Om du vill undvika komplexiteten i att hantera kontrollpunkter tillhandahåller ändringsflödesprocessorn automatisk kontrollpunkts- och "minst en gång"-semantik. Mer information finns i artikeln använda ändringsflöde med ändringsflödesprocessor .

  • Ändringar är tillgängliga parallellt för partitionsnyckelintervall i en Azure Cosmos DB-container. Med den här funktionen kan flera konsumenter bearbeta ändringar från stora containrar parallellt.

  • Program kan begära flera ändringsflöden i samma container samtidigt.

  • Startpunkten för ändringsflöde kan anpassas och olika alternativ är tillgängliga för varje läge.

Sorteringsordning för objekt i ändringsflöde

Ändringsflödesobjekt kommer i ordning efter ändringstiden. Den här sorteringsordningen garanteras per partitionsnyckel och det finns ingen garanterad ordning över partitionsnyckelvärdena.

Ändringsflöde i Azure Cosmos DB-konton i flera regioner

I ett Azure Cosmos DB-konto i flera regioner är ändringar i en region tillgängliga i alla regioner. Om en skrivregion redundansväxlar fungerar ändringsflödet i den manuella redundansåtgärden och är sammanhängande. För konton med flera skrivregioner finns det ingen garanti för när ändringar kommer att vara tillgängliga. Inkommande ändringar i samma dokument kan tas bort i senaste versionsläge om en senare ändring har gjorts i en annan region och alla ändringar registreras i alla versioner och borttagningsläge.

Ändra flödeslägen

Det finns två tillgängliga ändringsflödeslägen : det senaste versionsläget och alla versioner och borttagningsläge. Läget som ändringsflödet läss i avgör vilka åtgärder som ändringar samlas in från och vilka metadata som är tillgängliga för varje ändring. Det går att använda ändringsflödet i olika lägen i flera program för samma Azure Cosmos DB-container.

Senaste versionsläge

I senaste ändringsflödesläget ser du den senaste ändringen från en infogning eller uppdatering för alla objekt i flödet, och feeden är tillgänglig under containerns livslängd. Det finns ingen indikation på om en viss ändring kommer från en infogning eller en uppdateringsåtgärd och borttagningar inte registreras. Ändringar kan läsas från vilken tidpunkt som helst så långt tillbaka som containerns ursprung. Men om ett objekt tas bort tas det bort från ändringsflödet. Mer information finns i den senaste artikeln om ändringsflödesläge för version.

Alla versioner och borttagningsläge (förhandsversion)

Med alla versioner och borttagningsläge kan du se alla ändringar i objekt från skapar, uppdateringar och borttagningar. Du får en post för varje ändring av objekt i den ordning det inträffade, inklusive mellanliggande ändringar i ett objekt mellan ändringsflödesläsningar. Om du vill läsa från ändringsflödet i alla versioner och borttagningsläge måste du ha kontinuerliga säkerhetskopior konfigurerade för ditt Azure Cosmos DB-konto, vilket skapar Azure Cosmos DBs alla versioner och tar bort ändringsflödet. I det här läget kan du bara läsa ändringar som har inträffat under den kontinuerliga säkerhetskopieringsperiod som konfigurerats för kontot. Mer information finns i artikeln om ändringsflödesläge för alla versioner och borttagningar, inklusive hur du registrerar dig i förhandsversionen.

Ändringsflöde i API:er för Cassandra och MongoDB

Funktionen för ändringsflöde visas som ändringsström i API för MongoDB och Fråga med predikat i API för Cassandra. Mer information om implementeringsinformation för API för MongoDB finns i Ändra strömmar i Azure Cosmos DB API för MongoDB.

Native Apache Cassandra tillhandahåller CDC (Change Data Capture), en mekanism för att flagga specifika tabeller för arkivering och avvisa skrivningar till dessa tabeller när en konfigurerbar storlek på disken för CDC-loggen har nåtts. Funktionen för ändringsflöde i Azure Cosmos DB för Apache Cassandra förbättrar möjligheten att köra frågor mot ändringarna med predikat via CQL. Mer information om implementeringsinformation finns i Ändringsflöde i Azure Cosmos DB för Apache Cassandra.

Mäta enhetsförbrukning för ändringsflödesbegäran

Ändringsfeeden är tillgänglig i varje container oavsett om den används. Den enda kostnaden för ändringsflödet är lånecontainerns etablerade dataflöde och RU:er för varje begäran. Använd Azure Monitor för att mäta ru-förbrukningen (request unit) för ändringsflödet. Mer information finns i övervaka dataflödes- eller begärandeenhetsanvändning i Azure Cosmos DB.

Nästa steg

Nu kan du fortsätta med att lära dig mer om ändringsflöde i följande artiklar: