Delen via


Feedmodi wijzigen in Azure Cosmos DB

Van toepassing op: NoSQL

Azure Cosmos DB biedt twee modi voor wijzigingenfeeds. Elke modus biedt dezelfde kernfunctionaliteit. Verschillen zijn de bewerkingen die zijn vastgelegd in de feed, de metagegevens die beschikbaar zijn voor elke wijziging en de bewaarperiode van wijzigingen. U kunt de wijzigingenfeed in verschillende modi gebruiken voor meerdere toepassingen voor dezelfde Azure Cosmos DB-container om aan de vereisten van elke workload te voldoen. Elke afzonderlijke wijzigingsfeedtoepassing kan alleen worden geconfigureerd om de wijzigingenfeed in één modus te lezen. Het gebruiken van de wijzigingenfeed in de ene modus sluit niet uit dat u de wijzigingenfeed in een andere modus in een andere toepassing gebruikt.

Notitie

Heeft u feedback over de modi voor wijzigingsfeeds? We willen het horen! U kunt feedback rechtstreeks delen met het technische team van Azure Cosmos DB: cosmoschangefeed@microsoft.com.

Laatste versie van wijzigingenfeedmodus

De laatste versiemodus is een permanent verslag van wijzigingen die zijn gemaakt in items bij het creëren en bijwerken. U krijgt de nieuwste versie van elk item in de container. Als er bijvoorbeeld een item wordt gemaakt en vervolgens wordt bijgewerkt voordat u de wijzigingenfeed leest, wordt alleen de bijgewerkte versie weergegeven in de wijzigingenfeed. Verwijderingen worden niet vastgelegd als wijzigingen en wanneer een item wordt verwijderd, is het niet meer beschikbaar in de feed. De nieuwste versie van de wijzigingsfeedmodus is standaard ingeschakeld en is compatibel met alle Azure Cosmos DB-accounts, met uitzondering van de API voor Table en de API voor PostgreSQL. Deze modus was voorheen de standaard manier om de wijzigingenfeed te gebruiken.

Alle versies en verwijdert de wijzigingsfeedmodus (preview)

Alle versies en verwijderingsmodus (preview) is een permanente record van alle wijzigingen in items van bewerkingen voor maken, bijwerken en verwijderen. U krijgt een record van elke wijziging in items in de volgorde waarin deze is opgetreden, inclusief tussenliggende wijzigingen in een item tussen leesbewerkingen van wijzigingenfeeds. Als er bijvoorbeeld een item wordt gemaakt en vervolgens wordt bijgewerkt voordat u de wijzigingenfeed leest, worden zowel de create- als de updateversies van het item weergegeven in de wijzigingenfeed. Als u wilt lezen uit de wijzigingenfeed in alle versies en de modus Voor verwijderen, moet u doorlopende back-ups hebben geconfigureerd voor uw Azure Cosmos DB-account. Als u continue back-ups inschakelt, worden alle versies gemaakt en wordt de wijzigingenstroom verwijderd. U kunt alleen wijzigingen lezen die zijn opgetreden in de continue back-upperiode wanneer u deze wijzigingsfeedmodus gebruikt. Deze modus is alleen compatibel met Azure Cosmos DB voor NoSQL-accounts. Meer informatie over hoe u zich kunt registreren voor de preview.

Gebruiksscenario's voor veranderingsfeed

De nieuwste versiemodus biedt een eenvoudige manier om zowel realtime als historische wijzigingen in items in een container te verwerken met de mogelijkheid om vanaf het begin van de container terug te gaan naar wijzigingen.

Hier volgen scenario's die geschikt zijn voor deze modus:

  • Migraties van een hele container naar een secundaire locatie.

  • Mogelijkheid om wijzigingen vanaf het begin van de container opnieuw te verwerken.

  • Real-time verwerking van wijzigingen van items in een container als gevolg van het maken en bijwerken.

  • Workloads die geen verwijderingen of tussenliggende wijzigingen tussen het lezen hoeven vast te leggen.

Functies van elke modus

Naast de algemene functies in alle modi voor wijzigingenfeeds heeft elke wijzigingsfeedmodus de volgende kenmerken:

  • De wijzigingsfeed bevat invoeg- en updatebewerkingen aan items in de container.

  • In deze modus van de wijzigingenfeed worden geen verwijderingen vastgelegd. U kunt verwijderingen vastleggen door een "soft-delete" markering in te stellen op uw items in plaats van ze rechtstreeks te verwijderen. U kunt bijvoorbeeld een kenmerk toevoegen in het item deleted met de waarde trueen vervolgens een TTL (Time to Live) instellen voor het item. De wijzigingenfeed legt deze vast als een update en het item wordt automatisch verwijderd wanneer de TTL verloopt. U kunt ook een eindige verloopperiode voor uw items instellen met behulp van de TTL-functie. Met deze oplossing moet u de wijzigingen binnen een korter tijdsinterval verwerken dan de TTL-verloopperiode.

  • Alleen de meest recente wijziging voor een specifiek item wordt opgenomen in de wijzigingenfeed. Tussenliggende wijzigingen zijn mogelijk niet beschikbaar.

  • Wanneer een item wordt verwijderd, is het niet meer beschikbaar in de wijzigingenfeed.

  • Wijzigingen kunnen vanaf elk moment worden gesynchroniseerd en er is geen vaste gegevensretentieperiode waarvoor wijzigingen beschikbaar zijn.

  • U kunt de wijzigingenfeed niet filteren op een specifiek type bewerking. Een mogelijk alternatief is om een 'zachte markering' toe te voegen aan het item voor updates en filteren op basis van de markering wanneer u items in de wijzigingenfeed verwerkt.

  • Het beginpunt voor het lezen van de wijzigingenfeed kan afkomstig zijn van het begin van de container, vanaf een bepaald tijdstip, van 'nu' of van een specifiek controlepunt. De precisie van de begintijd is ongeveer vijf seconden.

Werken met de wijzigingenfeed

Elke modus is compatibel met verschillende methoden om de wijzigingenfeed voor elke taal te lezen.

U kunt de volgende manieren gebruiken om wijzigingen uit de wijzigingenfeed te gebruiken in de nieuwste versiemodus:

Methode voor het lezen van wijzigingenfeed .NET Java Python Node.js
Pull-model voor wijzigingsfeed Ja Ja Ja Ja
Processor voor wijzigingenfeed Ja Ja Nee Nee
Azure Functions-trigger Ja Ja Ja Ja

Het antwoordobject parseren

In de meest recente versiemodus is het standaardantwoordobject een matrix met items die zijn gewijzigd. Elk item bevat de standaardmetagegevens voor elk Azure Cosmos DB-item, inclusief _etag en _ts, met de toevoeging van een nieuwe eigenschap, _lsn.

De _etag indeling is intern en u moet er geen afhankelijkheid van nemen, omdat deze op elk gewenst moment kan worden gewijzigd. _ts is een wijzigings- of aanmaaktijdstempel. U kunt deze gebruiken _ts voor chronologische vergelijking. _lsn is een batch-id die alleen wordt toegevoegd voor de wijzigingenfeed die de transactie-id vertegenwoordigt. Veel items kunnen hetzelfde _lsnhebben.

ETag op FeedResponse is anders dan _etag dat u ziet op het item. _etag is een interne id en wordt gebruikt voor gelijktijdigheidscontrole. De _etag eigenschap vertegenwoordigt de versie van het item, terwijl de ETag eigenschap wordt gebruikt om de feed te orden.

Volgende stappen

Meer informatie over wijzigingenfeed vindt u in de volgende artikelen: