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. Als u de wijzigingenfeed in de ene modus gebruikt, kunt u de wijzigingenfeed niet gebruiken in een andere modus in een andere toepassing.
Notitie
Hebt u feedback over de modi voor wijzigingenfeeds? 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 nieuwste versiemodus is een permanente record van wijzigingen die zijn aangebracht in items van maken 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 worden wijzigingenfeed 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.
Use cases voor wijzigingenfeed
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.
Realtime verwerking van wijzigingen in items in een container die het gevolg is van het maken en bijwerken van bewerkingen.
Workloads die geen verwijderingen of tussenliggende wijzigingen tussen leesbewerkingen hoeven vast te leggen.
Functies van elke modus
Naast de algemene functies in alle modi voor wijzigingenfeeds heeft elke wijzigingsfeedmodus de volgende kenmerken:
De wijzigingenfeed bevat invoeg- en updatebewerkingen die worden aangebracht in items in de container.
In deze modus van de wijzigingenfeed worden geen verwijderingen vastgelegd. U kunt verwijderingen vastleggen door een vlag voor voorlopig verwijderen in te stellen in uw items in plaats van ze rechtstreeks te verwijderen. U kunt bijvoorbeeld een kenmerk toevoegen in het item
deleted
met de waardetrue
en 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 wijzigingenfeed | Ja | Ja | Ja | Ja |
Wijzigingenfeedprocessor | Ja | Ja | No | Nr. |
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 _lsn
hebben.
ETag
is FeedResponse
anders dan het _etag
item dat u ziet. _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: