Änderungsfeed in Azure Cosmos DB

GILT FÜR: NoSQL MongoDB Cassandra Gremlin

Der Änderungsfeed in Azure Cosmos DB ist eine persistente Aufzeichnung der Änderungen an einem Container in der Reihenfolge ihres Auftretens. Zur Unterstützung des Änderungsfeeds in Azure Cosmos DB wird gelauscht, ob in einem Azure Cosmos DB-Container Änderungen auftreten. Anschließend wird die sortierte Liste von geänderten Dokumenten in der Reihenfolge ausgegeben, in der sie geändert wurden. Die persistenten Änderungen können asynchron und inkrementell verarbeitet werden, und die Ausgabe kann über einen oder mehrere Consumer für die Parallelverarbeitung verteilt werden.

Erfahren Sie mehr über Entwurfsmuster für Änderungsfeeds.

Unterstützte APIs und Client-SDKs

Das Änderungsfeedfeature wird derzeit in folgenden Azure Cosmos DB-SDKs unterstützt:

Clienttreiber NoSQL Apache Cassandra MongoDB Apache Gremlin Tabelle PostgreSQL
.NET Icon indicating that this feature is supported in the .NET SDK for the API for NoSQL. Icon indicating that this feature is supported in the .NET SDK for the API for Apache Cassandra. Icon indicating that this feature is supported in the .NET SDK for the API for MongoDB. Icon indicating that this feature is supported in the .NET SDK for the API for Apache Gremlin. Icon indicating that this feature is not supported in the .NET SDK for the API for Table. Icon indicating that this feature is not supported in the .NET SDK for the API for PostgreSQL.
Java Icon indicating that this feature is supported in the Java SDK for the API for NoSQL. Icon indicating that this feature is supported in the Java SDK for the API for Apache Cassandra. Icon indicating that this feature is supported in the Java SDK for the API for MongoDB. Icon indicating that this feature is supported in the Java SDK for the API for Apache Gremlin. Icon indicating that this feature is not supported in the Java SDK for the API for Table. Icon indicating that this feature is not supported in the Java SDK for the API for PostgreSQL.
Python Icon indicating that this feature is supported in the Python SDK for the API for NoSQL. Icon indicating that this feature is supported in the Python SDK for the API for Apache Cassandra. Icon indicating that this feature is supported in the Python SDK for the API for MongoDB. Icon indicating that this feature is supported in the Python SDK for the API for Apache Gremlin. Icon indicating that this feature is not supported in the Python SDK for the API for Table. Icon indicating that this feature is not supported in the Python SDK for the API for PostgreSQL.
Node/JavaScript Icon indicating that this feature is supported in the JavaScript SDK for the API for NoSQL. Icon indicating that this feature is supported in the JavaScript SDK for the API for Apache Cassandra. Icon indicating that this feature is supported in the JavaScript SDK for the API for MongoDB. Icon indicating that this feature is supported in the JavaScript SDK for the API for Apache Gremlin. Icon indicating that this feature is not supported in the JavaScript SDK for the API for Table. Icon indicating that this feature is not supported in the JavaScript SDK for the API for PostgreSQL.

Verwenden des Änderungsfeeds

Sie können den Änderungsfeed mit den folgenden Optionen verwenden:

Der Änderungsfeed ist für Partitionsschlüsselbereiche eines Azure Cosmos DB-Containers verfügbar. Dadurch kann er für eine parallele Verarbeitung über einen oder mehrere Consumer verteilt werden, wie in der folgenden Abbildung gezeigt wird.

Distributed processing of Azure Cosmos DB change feed

Hinweis

Partitionsschlüsselbereiche werden physischen Partitionen zugeordnet, wenn sie den Änderungsfeedprozessor verwenden, und FeedRanges zugeordnet, wenn Sie das Pullmodell verwenden.

Features des Änderungsfeeds

  • Der Änderungsfeed ist standardmäßig für alle Azure Cosmos DB-Konten aktiviert.

  • Es gibt mehrere Änderungsfeedmodi, von denen einige eine zusätzliche Konfiguration zur Aktivierung erfordern.

  • Sie können Ihren bereitgestellten Durchsatz in allen dem Azure Cosmos DB-Konto zugeordneten Regionen zum Lesen aus dem Änderungsfeed verwenden, so wie es auch bei allen anderen Azure Cosmos DB-Vorgängen möglich ist.

  • Der Änderungsfeed enthält Einfüge- und Aktualisierungsvorgänge, die an Elementen im Container durchgeführt wurden. Wenn Sie den Modus „Alle Versionen und Löschvorgänge“ (Vorschau) verwenden, erhalten Sie auch Änderungen aus Löschvorgängen und TTL-Ablaufvorgängen.

  • Jede Änderung wird im Änderungsfeed genau einmal angezeigt, und die Clients müssen die Logik der Prüfpunktausführung verwalten. Wenn Sie die Komplexität der Verwaltung von Prüfpunkten umgehen möchten, bietet der Änderungsfeedprozessor automatische Prüfpunktausführung und „Mindestens einmal“-Semantik. Weitere Informationen finden Sie im Artikel Verwenden des Änderungsfeeds mit dem Änderungsfeedprozessor.

  • Änderungen sind für Partitionsschlüsselbereiche eines Azure Cosmos DB-Containers parallel verfügbar. Dadurch können Änderungen aus umfangreichen Containern parallel von mehreren Consumern verarbeitet werden.

  • Anwendungen können mehrere Änderungsfeeds gleichzeitig für den gleichen Container anfordern.

  • Der Startpunkt für den Änderungsfeed kann angepasst werden, und für jeden Modus sind verschiedene Optionen verfügbar.

Sortierreihenfolge der Elemente im Änderungsfeed

Elemente im Änderungsfeed sind in der Reihenfolge des Zeitpunkts ihrer letzten Änderung aufgeführt. Diese Sortierreihenfolge wird pro Partitionsschlüssel garantiert, aber es gibt keine garantierte Reihenfolge über alle Partitionsschlüsselwerte.

Änderungsfeed in Azure Cosmos DB-Konten mit mehreren Regionen

In einem Azure Cosmos DB-Konto mit mehreren Regionen sind Änderungen in einer Region in allen Regionen verfügbar. Wenn ein Failover für eine Schreibregion durchgeführt wird, funktioniert der Änderungsfeed über den manuellen Failovervorgang hinweg, und er ist zusammenhängend. Bei Konten mit mehreren Schreibregionen gibt es keine Garantie dafür, wann Änderungen verfügbar sind. Eingehende Änderungen an demselben Dokument können im Modus „Neueste Version“ gelöscht werden, wenn es eine neuere Änderung in einer anderen Region gab, und sämtliche Änderungen werden im Modus „Alle Versionen und Löschvorgänge“ erfasst.

Ändern der Feedmodi

Es gibt zwei Änderungsfeedmodi: den Modus „Neueste Version“ und den Modus „Alle Versionen und Löschvorgänge“. Der Modus, in dem der Änderungsfeed gelesen wird, bestimmt, aus welchen Vorgängen Änderungen erfasst werden und welche Metadaten für jede Änderung verfügbar sind. Es ist möglich, den Änderungsfeed in verschiedenen Modi bei mehreren Anwendungen für denselben Azure Cosmos DB-Container zu nutzen.

Modus „Neueste Version“

Im Änderungsfeedmodus „Neueste Version“ wird die neueste Änderung aus einem Einfüge- oder Aktualisierungsvorgang für alle Elemente im Feed angezeigt, und der Feed ist während der Lebensdauer des Containers verfügbar. Es gibt keinen Hinweis darauf, ob eine bestimmte Änderung aus einem Einfüge- oder einem Aktualisierungsvorgang stammt, und Löschvorgänge werden nicht erfasst. Änderungen können ab jedem beliebigen Zeitpunkt bis zum Ursprung Ihres Containers gelesen werden. Wenn ein Element jedoch gelöscht wurde, wird es aus dem Änderungsfeed entfernt. Weitere Informationen finden Sie im Artikel zum Änderungsfeedmodus „Neueste Version“.

Modus „Alle Versionen und Löschvorgänge“ (Vorschau)

Im Modus „Alle Versionen und Löschvorgänge“ können Sie sämtliche Änderungen an Elementen aus Erstellungen, Aktualisierungen und Löschvorgängen anzeigen. Sie erhalten einen Datensatz von jeder Änderung an Elementen in der Reihenfolge, in der sie vorgenommen wurde, einschließlich Zwischenänderungen an einem Element zwischen Lesevorgängen des Änderungsfeeds. Zum Lesen aus dem Änderungsfeed im Modus „Alle Versionen und Löschvorgänge“ müssen Sie fortlaufende Sicherungen für Ihr Azure Cosmos DB-Konto konfiguriert haben, wodurch der Azure Cosmos DB-Änderungsfeed „Alle Versionen und Löschvorgänge“ erstellt wird. In diesem Modus können Sie nur Änderungen lesen, die innerhalb des fortlaufenden Sicherungszeitraums vorgenommen wurden, der für das Konto konfiguriert wurde. Weitere Informationen, darunter die Registrierung in der Vorschau, finden Sie im Artikel zum Änderungsfeedmodus „Alle Versionen und Löschvorgänge“ .

Änderungsfeed in APIs für Cassandra und MongoDB

Die Funktionen des Änderungsfeeds werden in der API für MongoDB als Änderungsdatenstrom und in der API für Cassandra als Abfrage mit Prädikat verfügbar gemacht. Weitere Informationen zu den Implementierungsdetails für die API für MongoDB finden Sie unter Änderungsdatenströme in Azure Cosmos DB-API for MongoDB.

Natives Apache Cassandra bietet Change Data Capture (CDC). Hierbei handelt es sich um einen Mechanismus zum Markieren bestimmter Tabellen für die Archivierung sowie zum Ablehnen von Schreibvorgängen in diesen Tabellen, nachdem eine konfigurierbare Größe auf dem Datenträger für das CDC-Protokoll erreicht wurde. Der Änderungsfeed in Azure Cosmos DB for Apache Cassandra verbessert die Möglichkeit, die Änderungen mit Prädikaten über CQL abzufragen. Weitere Informationen zu den Implementierungsdetails finden Sie unter Änderungsfeed in Azure Cosmos DB for Apache Cassandra.

Messen des Verbrauchs von Anforderungseinheiten des Änderungsfeeds

Der Änderungsfeed ist in jedem Container verfügbar – unabhängig davon, ob er genutzt wird. Die einzigen Kosten für den Änderungsfeed sind der bereitgestellte Durchsatz des Leasecontainers und die RUs für jede Anforderung. Verwenden Sie Azure Monitor, um den Verbrauch von Anforderungseinheiten (RUs) des Änderungsfeeds zu messen. Weitere Informationen finden Sie unter Überwachen des Durchsatzes oder Anforderungseinheitsverbrauchs in Azure Cosmos DB.

Nächste Schritte

In den folgenden Artikeln erfahren Sie mehr über Änderungsfeeds: