Ändringsflöde i Azure Cosmos DB
GÄLLER FÖR: NoSQL MongoDB Kassandra 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.
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 | ||||||
Java | ||||||
Python | ||||||
Nod/JavaScript |
Du kan arbeta med ändringsflöde med hjälp av följande alternativ:
- Använda ändringsflöde med Azure Functions
- Använda ändringsflöde med ändringsflödesprocessor
- Använda ändringsflöde med pull-modell
Ä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.
Anteckning
Partitionsnyckelintervall mappas till fysiska partitioner när du använder ändringsflödesprocessorn och FeedRanges
när du använder pull-modellen.
Ä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.
Ändringsflödesobjekt kommer i ordning efter ändringstiden. Den här sorteringsordningen garanteras per partitionsnyckel och det finns ingen garanterad ordning över partitionsnyckelvärdena.
Anteckning
För skrivkonton i flera regioner finns det två tidsstämplar:
- Den tid då posten skrevs i den lokala regionen. Detta registreras som
_ts
. - Den epok då frånvaron av en konflikt bekräftades eller konflikten löstes i hubbregionen för den posten. Detta registreras som
crts
.
Ändringsflödesobjekt kommer i den ordning som registreras av crts
.
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.
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.
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.
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.
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.
Ä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.
Nu kan du fortsätta med att lära dig mer om ändringsflöde i följande artiklar: