Dela via


Ändra flödeslägen i Azure Cosmos DB

GÄLLER FÖR: NoSQL

Azure Cosmos DB erbjuder två ändringsflödeslägen. Varje läge har samma kärnfunktioner. Skillnaderna omfattar de åtgärder som samlas in i flödet, de metadata som är tillgängliga för varje ändring och kvarhållningsperioden för ändringar. Du kan använda ändringsflödet i olika lägen i flera program för samma Azure Cosmos DB-container för att passa kraven för varje arbetsbelastning. Varje enskilt ändringsflödesprogram kan bara konfigureras för att läsa ändringsflöde i ett läge. Att använda ändringsflödet i ett läge hindrar dig inte från att använda ändringsflödet i ett annat läge i ett annat program.

Kommentar

Har du någon feedback om ändringsflödeslägen? Vi vill höra det! Dela gärna feedback direkt med Azure Cosmos DB:s utvecklingsteam: cosmoschangefeed@microsoft.com.

Senaste ändringsflödesläge för version

Det senaste versionsläget är en beständig post med ändringar som gjorts i objekt från skapar och uppdateringar. Du får den senaste versionen av varje objekt i containern. Om ett objekt till exempel skapas och sedan uppdateras innan du läser ändringsflödet visas endast den uppdaterade versionen i ändringsflödet. Borttagningar registreras inte som ändringar och när ett objekt tas bort är det inte längre tillgängligt i flödet. Det senaste läget för versionsändringsflöde är aktiverat som standard och är kompatibelt med alla Azure Cosmos DB-konton förutom API:et för tabell och API:et för PostgreSQL. Det här läget var tidigare standardsättet för att använda ändringsflödet.

Alla versioner och tar bort ändringsflödesläge (förhandsversion)

Alla versioner och borttagningsläge (förhandsversion) är en beständig post med alla ändringar i objekt från åtgärder för att skapa, uppdatera och ta bort. 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 ett objekt till exempel skapas och sedan uppdateras innan du läser ändringsflödet visas både skapa- och uppdateringsversionerna av objektet i ändringsflödet. 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. Om du aktiverar kontinuerliga säkerhetskopieringar skapas alla versioner och ändringsflödet tas bort. Du kan bara läsa ändringar som inträffat under den kontinuerliga säkerhetskopieringsperioden när du använder det här ändringsflödesläget. Det här läget är endast kompatibelt med Azure Cosmos DB för NoSQL-konton. Läs mer om hur du registrerar dig för förhandsversionen.

Användningsfall för ändringsflöde

Det senaste versionsläget är ett enkelt sätt att bearbeta både realtidsändringar och historiska ändringar av objekt i en container med möjlighet att gå tillbaka till ändringar från början av containern.

Följande är scenarier som passar bra för det här läget:

  • Migreringar av en hel container till en sekundär plats.

  • Möjlighet att bearbeta ändringar från början av containern.

  • Realtidsbearbetning av ändringar av objekt i en container till följd av skapande- och uppdateringsåtgärder.

  • Arbetsbelastningar som inte behöver samla in borttagningar eller mellanliggande ändringar mellan läsningar.

Funktioner i varje läge

Förutom de vanliga funktionerna i alla ändringsflödeslägen har varje ändringsflödesläge följande egenskaper:

  • Ändringsflödet innehåller infognings- och uppdateringsåtgärder som görs för objekt i containern.

  • Det här läget för ändringsflöde loggar inte borttagna. Du kan samla in borttagningar genom att ange en flagga för mjuk borttagning i dina objekt i stället för att ta bort dem direkt. Du kan till exempel lägga till ett attribut i objektet som heter deleted med värdet trueoch sedan ange TTL (Time to Live) för objektet. Ändringsflödet avbildar det som en uppdatering och objektet tas bort automatiskt när TTL upphör att gälla. Du kan också ange en begränsad förfalloperiod för dina objekt med hjälp av TTL-funktionen. Med den här lösningen måste du bearbeta ändringarna inom ett kortare tidsintervall än TTL-förfalloperioden.

  • Endast den senaste ändringen för ett visst objekt ingår i ändringsflödet. Mellanliggande ändringar kanske inte är tillgängliga.

  • När ett objekt tas bort är det inte längre tillgängligt i ändringsflödet.

  • Ändringar kan synkroniseras från vilken tidpunkt som helst och det finns ingen fast kvarhållningsperiod för data som ändringar är tillgängliga för.

  • Du kan inte filtrera ändringsflödet för en viss typ av åtgärd. Ett möjligt alternativ är att lägga till en "mjuk markör" för objektet för uppdateringar och filter baserat på markören när du bearbetar objekt i ändringsflödet.

  • Startpunkten för att läsa ändringsflödet kan vara från början av containern, från en tidpunkt, från "nu" eller från en specifik kontrollpunkt. Starttidens precision är cirka fem sekunder.

Arbeta med ändringsflödet

Varje läge är kompatibelt med olika metoder för att läsa ändringsflödet för varje språk.

Du kan använda följande sätt att använda ändringar från ändringsflödet i det senaste versionsläget:

Metod för att läsa ändringsfeed .NET Java Python Node.js
Pull-modell för ändringsflöde Ja Ja Ja Ja
Ändringsflödesprocessor Ja Ja Nej Nej
Azure Functions-utlösare Ja Ja Ja Ja

Parsa svarsobjektet

I det senaste versionsläget är standardsvarsobjektet en matris med objekt som har ändrats. Varje objekt innehåller standardmetadata för alla Azure Cosmos DB-objekt, inklusive _etag och _ts, med tillägg av en ny egenskap, _lsn.

Formatet _etag är internt och du bör inte vara beroende av det eftersom det kan ändras när som helst. _ts är en ändring eller en tidsstämpel för skapande. Du kan använda _ts för kronologisk jämförelse. _lsn är ett batch-ID som endast läggs till för ändringsflöde som representerar transaktions-ID:t. Många objekt kan ha samma _lsn.

ETagFeedResponse skiljer sig från du _etag ser på objektet. _etag är en intern identifierare och används för samtidighetskontroll. Egenskapen _etag representerar objektets version, medan egenskapen ETag används för att sekvensera flödet.

Nästa steg

Läs mer om ändringsflöde i följande artiklar: