Wijzigingenfeed in Azure Cosmos DB

VAN TOEPASSING OP: Nosql MongoDB Cassandra Gremlin

Wijzigingenfeed in Azure Cosmos DB is een permanente record van wijzigingen in een container in de volgorde waarin ze plaatsvinden. Wijzigingenfeed-ondersteuning in Azure Cosmos DB-taken door te luisteren naar een Azure Cosmos DB-container voor alle 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 wijzigingenfeeds.

Ondersteunde API's en client-SDK's

De functie voor wijzigingenfeeds wordt momenteel ondersteund in de volgende Azure Cosmos DB SDK's.

Clientstuurprogramma's NoSQL Apache Cassandra MongoDB Apache Gremlin Tabel PostgreSQL
.NET Pictogram dat aangeeft dat deze functie wordt ondersteund in de .NET SDK voor de API voor NoSQL. Pictogram dat aangeeft dat deze functie wordt ondersteund in de .NET SDK voor de API voor Apache Cassandra. Pictogram dat aangeeft dat deze functie wordt ondersteund in de .NET SDK voor de API voor MongoDB. Pictogram dat aangeeft dat deze functie wordt ondersteund in de .NET SDK voor de API voor Apache Gremlin. Pictogram dat aangeeft dat deze functie niet wordt ondersteund in de .NET SDK voor de API voor Table. Pictogram dat aangeeft dat deze functie niet wordt ondersteund in de .NET SDK voor de API voor PostgreSQL.
Java Pictogram dat aangeeft dat deze functie wordt ondersteund in de Java SDK voor de API voor NoSQL. Pictogram dat aangeeft dat deze functie wordt ondersteund in de Java SDK voor de API voor Apache Cassandra. Pictogram dat aangeeft dat deze functie wordt ondersteund in de Java SDK voor de API voor MongoDB. Pictogram dat aangeeft dat deze functie wordt ondersteund in de Java SDK voor de API voor Apache Gremlin. Pictogram dat aangeeft dat deze functie niet wordt ondersteund in de Java SDK voor de API voor Table. Pictogram dat aangeeft dat deze functie niet wordt ondersteund in de Java SDK voor de API voor PostgreSQL.
Python Pictogram dat aangeeft dat deze functie wordt ondersteund in de Python SDK voor de API voor NoSQL. Pictogram dat aangeeft dat deze functie wordt ondersteund in de Python SDK voor de API voor Apache Cassandra. Pictogram dat aangeeft dat deze functie wordt ondersteund in de Python SDK voor de API voor MongoDB. Pictogram dat aangeeft dat deze functie wordt ondersteund in de Python SDK voor de API voor Apache Gremlin. Pictogram dat aangeeft dat deze functie niet wordt ondersteund in de Python SDK voor de API voor Table. Pictogram dat aangeeft dat deze functie niet wordt ondersteund in de Python SDK voor de API voor PostgreSQL.
Node/JavaScript Pictogram dat aangeeft dat deze functie wordt ondersteund in de JavaScript SDK voor de API voor NoSQL. Pictogram dat aangeeft dat deze functie wordt ondersteund in de JavaScript SDK voor de API voor Apache Cassandra. Pictogram dat aangeeft dat deze functie wordt ondersteund in de JavaScript SDK voor de API voor MongoDB. Pictogram dat aangeeft dat deze functie wordt ondersteund in de JavaScript SDK voor de API voor Apache Gremlin. Pictogram dat aangeeft dat deze functie niet wordt ondersteund in de JavaScript SDK voor de API voor Table. Pictogram dat aangeeft dat deze functie niet wordt ondersteund in de JavaScript SDK voor de API voor PostgreSQL.

Werken met wijzigingenfeed

U kunt met de volgende opties werken met de wijzigingenfeed:

Wijzigingenfeed is beschikbaar voor partitiesleutelbereiken van een Azure Cosmos DB-container. Hierdoor kan het worden gedistribueerd over een of meer consumenten voor parallelle verwerking, zoals wordt weergegeven in de onderstaande afbeelding.

Gedistribueerde verwerking van azure Cosmos DB-wijzigingenfeed

Notitie

Partitiesleutelbereiken worden toegewezen aan fysieke partities wanneer u de wijzigingenfeedprocessor gebruikt en FeedRanges wanneer u het pull-model gebruikt.

Functies van wijzigingenfeed

  • Wijzigingenfeed is standaard ingeschakeld voor alle Azure Cosmos DB-accounts.

  • Er zijn meerdere modi voor wijzigingenfeeds, waarvan sommige extra configuratie vereisen om in te schakelen.

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

  • De wijzigingenfeed bevat invoeg- en updatebewerkingen die zijn aangebracht in items in de container. Als u alle versies gebruikt en de modus voor verwijderen (preview) gebruikt, krijgt u ook wijzigingen van verwijderingsbewerkingen en TTL-vervaldatums.

  • Elke wijziging wordt precies eenmaal weergegeven in de wijzigingenfeed en de clients moeten de controlepuntlogica beheren. Als u de complexiteit van het beheren van controlepunten wilt voorkomen, biedt de wijzigingenfeedprocessor automatische controlepunten en semantiek ten minste één keer. Zie het artikel over het gebruik van de wijzigingenfeed met de verwerker van wijzigingenfeeds voor meer informatie.

  • Wijzigingen zijn parallel beschikbaar voor partitiesleutelbereiken van een Azure Cosmos DB-container. Met deze mogelijkheid kunnen meerdere consumenten wijzigingen van grote containers parallel verwerken.

  • Toepassingen kunnen meerdere wijzigingenfeeds tegelijk op dezelfde container aanvragen.

  • Het beginpunt voor de wijzigingenfeed kan worden aangepast en er zijn verschillende opties beschikbaar voor elke modus.

Sorteervolgorde van items in wijzigingenfeed

Wijzigingenfeeditems komen in de volgorde van hun wijzigingstijd. Deze sorteervolgorde wordt gegarandeerd per partitiesleutel en er is geen gegarandeerde volgorde tussen de waarden van de partitiesleutel.

Notitie

Voor schrijfaccounts voor meerdere regio's zijn er twee tijdstempels:

  • De tijdsperiode van de server waarop de record is geschreven in de lokale regio. Dit wordt vastgelegd als _ts.
  • Het tijdstip waarop het ontbreken van een conflict is bevestigd, of het conflict is opgelost in de hubregio voor die record. Dit wordt vastgelegd als crts.

Wijzigingenfeeditems worden geleverd in de volgorde die is vastgelegd door crts.

Wijzigingenfeed in Azure Cosmos DB-accounts voor meerdere regio's

In een Azure Cosmos DB-account met meerdere regio's zijn wijzigingen in één regio beschikbaar in alle regio's. Als een failover van een schrijfregio wordt uitgevoerd, werkt de wijzigingenfeed tijdens de handmatige failoverbewerking en is deze aaneengesloten. Voor accounts met meerdere schrijfregio's is er geen garantie dat wijzigingen beschikbaar zijn. Binnenkomende wijzigingen in hetzelfde document kunnen worden verwijderd in de meest recente versiemodus als er een recentere wijziging in een andere regio is, en alle wijzigingen worden vastgelegd in alle versies en de modus Voor verwijderen.

Feedmodi wijzigen

Er zijn twee modi voor wijzigingenfeeds beschikbaar: de nieuwste versiemodus en alle versies en de modus Voor verwijderen. De modus waarin de wijzigingenfeed wordt gelezen, bepaalt vanaf welke bewerkingen wijzigingen worden vastgelegd en welke metagegevens beschikbaar zijn voor elke wijziging. Het is mogelijk om de wijzigingenfeed in verschillende modi te gebruiken in meerdere toepassingen voor dezelfde Azure Cosmos DB-container.

Meest recente versiemodus

In de nieuwste versie van de wijzigingsfeedmodus ziet u de meest recente wijziging van een invoeg- of update voor alle items in de feed en is de feed beschikbaar voor de levensduur van de container. Er is geen indicatie of een bepaalde wijziging afkomstig is van een invoeg- of updatebewerking, en verwijderingen worden niet vastgelegd. Wijzigingen kunnen vanaf elk moment worden gelezen tot aan de oorsprong van uw container. Als een item echter wordt verwijderd, wordt het verwijderd uit de wijzigingenfeed. Zie het artikel over de nieuwste versie van de wijzigingenfeedmodus voor meer informatie.

Alle versies en verwijdermodus (preview)

Met alle versies en verwijderingsmodus kunt u alle wijzigingen in items zien van 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 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, waarmee alle versies van Azure Cosmos DB's worden gemaakt en wijzigingenfeeds worden verwijderd. In deze modus kunt u alleen wijzigingen lezen die zijn opgetreden binnen de continue back-upperiode die is geconfigureerd voor het account. Zie het artikel over alle versies en het verwijderen van de wijzigingsfeedmodus voor meer informatie, inclusief hoe u zich kunt inschrijven in de preview.

Wijzigingenfeed in API's voor Cassandra en MongoDB

De functionaliteit van de wijzigingenfeed wordt weergegeven als wijzigingsstroom in API voor MongoDB en Query met predicaat in API voor Cassandra. Zie de wijzigingenstromen in de Azure Cosmos DB-API voor MongoDB voor meer informatie over de implementatiedetails voor API voor MongoDB.

Systeemeigen Apache Cassandra biedt change data capture (CDC), een mechanisme voor het markeren van specifieke tabellen voor archivering en het weigeren van schrijfbewerkingen naar die tabellen zodra een configureerbare grootte voor het CDC-logboek is bereikt. De functie voor wijzigingenfeeds in Azure Cosmos DB voor Apache Cassandra verbetert de mogelijkheid om query's uit te voeren op de wijzigingen met predicaat via CQL. Zie Wijzigingenfeed in Azure Cosmos DB voor Apache Cassandra voor meer informatie over de implementatiedetails.

Verbruik van aanvraageenheden voor wijzigingenfeeds meten

De wijzigingenfeed is beschikbaar in elke container, ongeacht of deze wordt gebruikt. De enige kosten voor de wijzigingenfeed zijn de ingerichte doorvoer en RU's van de leasecontainer voor elke aanvraag. Gebruik Azure Monitor om het verbruik van de aanvraageenheid (RU) van de wijzigingenfeed te meten. Zie het gebruik van doorvoer- of aanvraageenheden bewaken in Azure Cosmos DB voor meer informatie.

Volgende stappen

U kunt nu verdergaan met meer informatie over wijzigingenfeed in de volgende artikelen: