Dela via


Ändringsflöde i Azure Cosmos DB

GÄLLER FÖR: NoSQL MongoDB Kassandra Gremlin

Ändringsflödet i Azure Cosmos DB är en beständig post med ändringar i en container i den ordning ändringarna 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.

Mer information finns i Designmönster för ändringsflöde i Azure Cosmos DB.

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
.NÄT Ikon som anger att den här funktionen stöds i .NET SDK för API:et för NoSQL. Ikon som anger att den här funktionen stöds i .NET SDK för API:et för Apache Cassandra. Ikon som anger att den här funktionen stöds i .NET SDK för API:et för MongoDB. Ikon som anger att den här funktionen stöds i .NET SDK för API:et för Apache Gremlin. Ikon som anger att den här funktionen inte stöds i .NET SDK för API:et för tabell. Ikon som anger att den här funktionen inte stöds i .NET SDK för API:et för PostgreSQL.
Java Ikon som anger att den här funktionen stöds i Java SDK för API:et för NoSQL. Ikon som anger att den här funktionen stöds i Java SDK för API:et för Apache Cassandra. Ikon som anger att den här funktionen stöds i Java SDK för API:et för MongoDB. Ikon som anger att den här funktionen stöds i Java SDK för API:et för Apache Gremlin. Ikon som anger att den här funktionen inte stöds i Java SDK för API:et för tabell. Ikon som anger att den här funktionen inte stöds i Java SDK för API:et för PostgreSQL.
python Ikon som anger att den här funktionen stöds i Python SDK för API:et för NoSQL. Ikon som anger att den här funktionen stöds i Python SDK för API:et för Apache Cassandra. Ikon som anger att den här funktionen stöds i Python SDK för API:et för MongoDB. Ikon som anger att den här funktionen stöds i Python SDK för API:et för Apache Gremlin. Ikon som anger att den här funktionen inte stöds i Python SDK för API:et för tabell. Ikon som anger att den här funktionen inte stöds i Python SDK för API:et för PostgreSQL.
Nod/JavaScript Ikon som anger att den här funktionen stöds i JavaScript SDK för API:et för NoSQL. Ikon som anger att den här funktionen stöds i JavaScript SDK för API:et för Apache Cassandra. Ikon som anger att den här funktionen stöds i JavaScript SDK för API:et för MongoDB. Ikon som anger att den här funktionen stöds i JavaScript SDK för API:et för Apache Gremlin. Ikon som anger att den här funktionen inte stöds i JavaScript SDK för API:et för tabell. Ikon som anger att den här funktionen inte stöds i JavaScript SDK för API:et för PostgreSQL.

Arbeta med ändringsflöde

Du kan arbeta med ändringsflödet 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 följande bild.

Diagram som visar distribuerad bearbetning av Azure Cosmos DB-ändringsflödet.

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ödet är aktiverat som standard för alla Azure Cosmos DB-konton.

  • Det finns flera ändringsflödeslägen, varav vissa kräver extra 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 Ändringsflödesprocessor i Azure Cosmos DB.

  • Ä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 med valfritt läge på 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ödets objekt kommer i ordning efter ändringens tid. Den här sorteringsordningen garanteras per partitionsnyckel och det finns ingen garanterad ordning över partitionsnyckelvärdena. Objekt som skrivs inom omfånget för en transaktionsbatch, lagrad procedur eller masslägebegäran har samma ändringstid, och förändringar inom det omfånget kan levereras i valfri ordning.

Kommentar

För skrivkonton i flera regioner finns det två tidsstämplar:

  • Den serverepoktiden då posten skrevs i den lokala regionen. Detta registreras som _ts.
  • Den tidpunkt i epokformat när det bekräftades att det inte fanns någon konflikt eller när konflikten löstes i hubbregionen för den aktuella posten. Detta registreras som crts.

Ändringsflödesobjekt kommer i den ordning som registreras av crts.

Ä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 växlar över fungerar ändringsflödet under 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 komma att tas bort i läget för den senaste versionen om det har skett en senare ändring 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. För mer information, se det senaste versionsändringsflödesläget.

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 logg för varje ändring av objekt i den ordning det inträffade, inklusive mellanliggande ändringar av ett objekt som uppstod mellan tillfällen då ändringsflödet läses av. 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. Se artikeln om alla versioner och borttagningslägen av ändringsflödet för att läsa mer, inklusive hur du registrerar dig för 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 som fråga med villkor 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 leasingcontainerns etablerat dataflöde och begärandenheter (RUs) för varje begäran. Använd Azure Monitor för att mäta RU-förbrukningen för ändringsflödet. För mer information, se Hur man övervakar genomströmning eller användning av begärandeenheter för en åtgärd.

Nästa steg

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