Feed wijzigen in Azure Cosmos DB

VAN TOEPASSING OP: SQL API Cassandra API Gremlin API Azure Cosmos DB API voor MongoDB

Feed wijzigen in Azure Cosmos DB is een permanente record van wijzigingen in een container in de volgorde waarin deze zich voordoen. Voerondersteuning wijzigen in Azure Cosmos DB werkt door te luisteren naar een Azure Cosmos-container voor eventuele wijzigingen. Vervolgens wordt de gesorteerde lijst met documenten uitgevoerd die zijn gewijzigd in de volgorde waarin ze zijn gewijzigd. De aanhoudende wijzigingen kunnen asynchroon en stapsgewijs worden verwerkt en de uitvoer kan worden verdeeld over een of meer consumenten voor parallelle verwerking.

Meer informatie over het wijzigen van feedontwerppatronen.

Ondersteunde API's en client-SDK's

Deze functie wordt momenteel ondersteund door de volgende Azure Cosmos DB-API's en client-SDK's.

Client-stuurprogramma's SQL API Azure Cosmos DB's API voor Cassandra Azure Cosmos DB's API voor MongoDB Gremlin-API Tabel-API
.NET Ja Ja Ja Ja Nee
Java Ja Ja Ja Ja Nee
Python Ja Ja Ja Ja Nee
Knooppunt/JS Ja Ja Ja Ja Nee

Feed en verschillende bewerkingen wijzigen

Vandaag ziet u alle inserts en updates in de wijzigingsfeed. U kunt de wijzigingsfeed niet filteren voor een bepaald type bewerking. Een mogelijk alternatief is het toevoegen van een 'soft marker' aan het item voor updates en filteren op basis van dat bij het verwerken van items in de wijzigingsfeed.

Als u de feed wijzigt, worden verwijderde bestanden niet logboekt. Net als in het vorige voorbeeld kunt u een zachte markering toevoegen aan de items die worden verwijderd. U kunt bijvoorbeeld een kenmerk toevoegen aan het item 'verwijderd' en instellen op 'waar' en een TTL instellen voor het item, zodat het automatisch kan worden verwijderd. U kunt de wijzigingsfeed voor historische items lezen (de meest recente wijziging die betrekking heeft op het item, het bevat geen tussentijdse wijzigingen), bijvoorbeeld items die vijf jaar geleden zijn toegevoegd. U kunt de wijzigingsfeed zo ver terug lezen als de oorsprong van de container, maar als een item wordt verwijderd, wordt het verwijderd uit de wijzigingsfeed.

Volgorde van items sorteren in wijzigingsfeed

Voeritems wijzigen wordt in de volgorde van de wijzigingstijd weergegeven. Deze sorteerorder is gegarandeerd per logische partitietoets.

Consistentieniveau

Tijdens het consumeren van de wijzigingsfeed op een uiteindelijk consistentieniveau, kunnen er dubbele gebeurtenissen zijn tussen de volgende bewerkingen voor het lezen van feeds wijzigen (de laatste gebeurtenis van een leesbewerking wordt weergegeven als de eerste van de volgende).

Feed wijzigen in Azure Cosmos-accounts met meerdere regio's

Als in een Azure Cosmos-account met meerdere regio's een schrijfgebied mislukt, werkt de wijzigingsfeed voor de handmatige failoverbewerking en is deze aaneengesloten.

Feed en Time to Live (TTL) wijzigen

Als een TTL-eigenschap (Tijd om te leven) is ingesteld op een item op -1, blijft de wijzigingsfeed voor altijd bestaan. Als de gegevens niet worden verwijderd, blijven deze in de wijzigingsfeed staan.

Feed en _etag, _lsn of _ts

De _etag is intern en u moet er niet afhankelijk van zijn, omdat deze op elk gewenst moment kan worden gewijzigd. _ts is een wijziging of een tijdstempel voor het maken. U kunt een _ts gebruiken voor chronologische vergelijking. _lsn is een batch-id die alleen wordt toegevoegd voor feed wijzigen. het vertegenwoordigt de transactie-id. Veel items hebben mogelijk dezelfde _lsn. ETag op FeedResponse verschilt van de _etag die u op het item ziet. _etag is een interne id en wordt gebruikt voor gelijktijdigheidsbeheer. De _etag eigenschap vertelt over de versie van het item, terwijl de eigenschap ETag wordt gebruikt voor het sequencing van de feed.

Werken met feed wijzigen

U kunt met de feed wijzigen werken met de volgende opties:

Feed wijzigen is beschikbaar voor elke logische partitiesleutel in de container en kan worden verdeeld over een of meer consumenten voor parallelle verwerking, zoals wordt weergegeven in de onderstaande afbeelding.

Gedistribueerde verwerking van Azure Cosmos DB-wijzigingsfeed

Functies van de feed wijzigen

  • Feed wijzigen is standaard ingeschakeld voor alle Azure Cosmos-accounts.

  • U kunt de inrichtende doorvoer gebruiken om te lezen in de wijzigingsfeed, net als elke andere Azure Cosmos DB-bewerking, in een van de regio's die zijn gekoppeld aan uw Azure Cosmos-database.

  • De wijzigingsfeed bevat invoegbewerkingen en bijbewerkingen die zijn aangebracht in items in de container. U kunt verwijderen vastleggen door een 'soft-delete'-vlag in te stellen in uw items (bijvoorbeeld documenten) in plaats van verwijderen. U kunt ook een eindige verloopperiode instellen voor uw items met de TTL-mogelijkheid. Bijvoorbeeld 24 uur en de waarde van die eigenschap gebruiken om verwijderen vast te leggen. Met deze oplossing moet u de wijzigingen verwerken binnen een korter tijdsinterval dan de TTL-verloopperiode.

  • Alleen de meest recente wijziging voor een bepaald item wordt opgenomen in het wijzigingslogboek. Tussentijdse wijzigingen zijn mogelijk niet beschikbaar.

  • Elke wijziging in het wijzigingslogboek wordt exact één keer weergegeven in de wijzigingsfeed en de clients moeten de controlecontrolelogica beheren. Als u de complexiteit van het beheren van controlepunten wilt vermijden, biedt de verwerker van de wijzigingsfeed automatische controlecontrole en 'ten minste eenmaal' semantiek. met feed wijzigen met de feedprocessor wijzigen.

  • De wijzigingsfeed wordt gesorteerd op volgorde van wijziging binnen elke logische partitiesleutelwaarde. Er is geen gegarandeerde volgorde tussen de partitiesleutelwaarden.

  • Wijzigingen kunnen vanaf elk moment worden gesynchroniseerd, dat wil zeggen dat er geen vaste bewaarperiode is waarvoor wijzigingen beschikbaar zijn.

  • Wijzigingen zijn parallel beschikbaar voor alle logische partitietoetsen van een Azure Cosmos-container. Met deze mogelijkheid kunnen wijzigingen van grote containers parallel door meerdere consumenten worden verwerkt.

  • Toepassingen kunnen meerdere wijzigingsfeeds tegelijk aanvragen op dezelfde container. ChangeFeedOptions.StartTime kan worden gebruikt om een eerste beginpunt te geven. Als u bijvoorbeeld het vervolg-token wilt zoeken dat overeenkomt met een bepaalde kloktijd. De opgegeven ContinuationToken heeft voorrang op de waarden StartTime en StartFromBeginning. De precisie van ChangeFeedOptions.StartTime is ~5 sec.

Feed wijzigen in API's voor Cassandra en MongoDB

De feedfunctionaliteit wijzigen wordt weergegeven als change stream in MongoDB API en Query met predicaat in De Api van Cassandra. Zie de Streams wijzigen in de Azure Cosmos DB API voor MongoDBvoor meer informatie over de implementatiedetails voor MongoDB API.

Native Apache Cassandra biedt cdc (Change Data Capture), een mechanisme voor het markeren van specifieke tabellen voor archivering en het weigeren van schrijven naar die tabellen zodra een configureerbare grootte-op-schijf voor het CDC-logboek is bereikt. De wijzigingsfeedfunctie in Azure Cosmos DB API voor Cassandra verbetert de mogelijkheid om de wijzigingen op te vragen met predicaat via CQL. Zie Feed wijzigen in de Azure Cosmos DB API voor Cassandra voor meer informatie over de implementatiedetails.

Volgende stappen

U kunt nu verder gaan met meer informatie over het wijzigen van de feed in de volgende artikelen: