Wijzigingenfeed in Azure Cosmos DB
VAN toepassing op:
SQL API
CASSANDRA-API
Gremlin API Azure Cosmos DB-
API voor MongoDb
Wijzigingenfeed in Azure Cosmos DB is een permanente record van wijzigingen in een container in de volgorde waarin ze plaatsvinden. Ondersteuning voor de wijzigingenfeed in Azure Cosmos DB gebeurt door te luisteren naar een Azure Cosmos DB-container voor wijzigingen. Als output verschijnt er vervolgens een gesorteerde lijst met gewijzigde documenten op volgorde van wijziging. De persistente wijzigingen kunnen asynchroon en incrementeel worden verwerkt en de uitvoer kan worden gedistribueerd over een of meer consumenten voor parallelle verwerking.
Meer informatie over ontwerppatronen voor de wijzigingsfeed.
Ondersteunde API's en client-SDK's
Deze functie wordt momenteel ondersteund door de volgende Azure Cosmos DB API's en client-SDK's.
| Stuurprogramma's voor client | SQL API | Azure Cosmos DB API voor Cassandra | Azure Cosmos DB-API voor MongoDB | Gremlin-API | Table-API |
|---|---|---|---|---|---|
| .NET | Ja | Ja | Ja | Ja | Nee |
| Java | Ja | Ja | Ja | Ja | Nee |
| Python | Ja | Ja | Ja | Ja | Nee |
| Node/JS | Ja | Ja | Ja | Ja | Nee |
Wijzigingsfeed en verschillende bewerkingen
Vandaag ziet u alle invoegingen en updates in de wijzigingenfeed. U kunt de wijzigingsfeed niet filteren op een specifiek type bewerking. Een mogelijk alternatief is het toevoegen van een 'zachte markering' aan het item voor updates en filteren op basis van die markering bij het verwerken van items in de wijzigingenfeed.
Op dit moment worden door de wijzigingsfeed geen verwijderlogboekgegevens bij de logboeken weergegeven. 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 met de naam 'verwijderd' en instellen op 'true' en een TTL instellen voor het item, zodat het automatisch kan worden verwijderd. U kunt de wijzigingenfeed voor historische items lezen (de meest recente wijziging die overeenkomt met het item, het bevat geen tussenliggende wijzigingen), bijvoorbeeld items die vijf jaar geleden zijn toegevoegd. U kunt de wijzigingsfeed lezen tot aan de oorsprong van uw container, maar als een item wordt verwijderd, wordt het verwijderd uit de wijzigingsfeed.
Sorteer de volgorde van items in de wijzigingsfeed
Wijzigingenfeeditems worden in de volgorde van de wijzigingstijd weergegeven. Deze sorteer volgorde wordt gegarandeerd per logische partitiesleutel.
Consistentieniveau
Tijdens het gebruik van de wijzigingenfeed op het consistentieniveau Uiteindelijk, kunnen er dubbele gebeurtenissen zijn tussen volgende leesbewerkingen voor wijzigingenfeeds (de laatste gebeurtenis van één leesbewerking wordt weergegeven als de eerste van de volgende).
Feed wijzigen in Azure Cosmos-accounts voor meerdere regio's
Als in een Azure Cosmos-account voor meerdere regio's een failover wordt uitgevoerd voor een schrijfregio, werkt de wijzigingsfeed voor de handmatige failoverbewerking en is deze aaneengesloten.
Feed en Time to Live wijzigen (TTL)
Als een TTL-eigenschap (Time to Live) voor een item is ingesteld op -1, blijft de wijzigingsfeed voor altijd bestaan. Als de gegevens niet worden verwijderd, blijven deze in de wijzigingsfeed.
Feed en _etag, _lsn of _ts
De _etag is intern en u mag er niet afhankelijk van zijn, omdat deze op elk gewenst moment kan veranderen. _ts is een tijdstempel voor wijzigen of maken. U kunt deze _ts voor chronologische vergelijking. _lsn is een batch-id die alleen wordt toegevoegd voor de wijzigingsfeed; deze vertegenwoordigt de transactie-id. Veel items hebben mogelijk dezelfde _lsn. ETag in FeedResponse verschilt van de _etag die u op het item ziet. _etag is een interne id en wordt gebruikt voor gelijktijdigheidsbeheer. De _etag vertelt over de versie van het item, terwijl de eigenschap ETag wordt gebruikt voor het sequeneren van de feed.
Werken met de wijzigingsfeed
U kunt werken met de wijzigingsfeed met behulp van de volgende opties:
- De wijzigingsfeed gebruiken met Azure Functions
- Wijzigingsfeed gebruiken met de verwerker van de wijzigingsfeed
De wijzigingsfeed is beschikbaar voor elke logische partitiesleutel in de container en kan worden gedistribueerd over een of meer consumenten voor parallelle verwerking, zoals wordt weergegeven in de onderstaande afbeelding.
Functies van de wijzigingsfeed
De feed Wijzigen is standaard ingeschakeld voor alle Azure Cosmos-accounts.
U kunt uw inrichtende doorvoer gebruiken om de wijzigingsfeed te lezen, 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 invoeg- en bijvoegbewerkingen voor items in de container. U kunt verwijderen vastleggen door de vlag 'soft-delete' in te stellen in uw items (bijvoorbeeld documenten) in plaats van de verwijder. 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 verwijderingen 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 is opgenomen in het wijzigingslogboek. Tussenliggende wijzigingen zijn mogelijk niet beschikbaar.
Elke wijziging die is opgenomen in het wijzigingslogboek wordt exact één keer weergegeven in de wijzigingsfeed en de clients moeten de controlepuntlogica beheren. Als u de complexiteit van het beheren van controlepunten wilt voorkomen, biedt de verwerker van de wijzigingsfeed automatische controlepunten en 'ten minste één keer'-semantiek. met behulp van de wijzigingsfeed met de verwerker van de wijzigingsfeed.
De wijzigingenfeed wordt gesorteerd op volgorde van wijziging binnen elke logische partitiesleutelwaarde. Er is geen gegarandeerde volgorde voor de partitiesleutelwaarden.
Wijzigingen kunnen vanaf elk tijdstip worden gesynchroniseerd. Er is geen vaste bewaarperiode voor gegevens waarvoor wijzigingen beschikbaar zijn.
Wijzigingen zijn parallel beschikbaar voor alle logische partitiesleutels van een Azure Cosmos-container. Op deze manier kunnen wijzigingen van grote containers parallel worden verwerkt door meerdere consumenten.
Toepassingen kunnen meerdere wijzigingsfeeds tegelijk aanvragen voor dezelfde container. ChangeFeedOptions.StartTime kan worden gebruikt om een eerste beginpunt te bieden. Bijvoorbeeld, om te zoeken naar het vervolg-token dat overeenkomt met een bepaalde kloktijd. Het ContinuationToken, indien opgegeven, heeft voorrang op de waarden StartTime en StartFromBeginning. De precisie van ChangeFeedOptions.StartTime is ~5 sec.
Wijzigingsfeed in API's voor Cassandra en MongoDB
De functionaliteit van de wijzigingsfeed wordt weergegeven als wijzigingsstroom in de MongoDB-API en Query met predicaat in Cassandra-API. Zie Change streams in the Azure Cosmos DB API for MongoDB (Stromen wijzigen in de api voor MongoDB) voor meer informatie over de implementatiedetails voor mongoDB-API.
Systeemeigen Apache Cassandra biedt change data capture (CDC), een mechanisme voor het markeren van specifieke tabellen voor archivering, evenals het afwijzen van schrijfingen naar deze tabellen zodra een configureerbare grootte op schijf voor het CDC-logboek is bereikt. De functie wijzigingenfeed in Azure Cosmos DB API voor Cassandra verbetert de mogelijkheid om via CQL query's uit te voeren op de wijzigingen met predicaat. Zie de feed Change in de Azure Cosmos DB API voor Cassandra voor meer informatie over de implementatiedetails.
Volgende stappen
U kunt nu doorgaan met meer informatie over de wijzigingsfeed in de volgende artikelen: