Freigeben über


Änderungsfeed in Azure Cosmos DB

Der Änderungsfeed in Azure Cosmos DB ist ein beständiger Datensatz von Änderungen an einem Container in der Reihenfolge, in der die Änderungen vorgenommen werden. 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.

Weitere Informationen finden Sie unter Ändern von Feedentwurfsmustern in Azure Cosmos DB.

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 Table PostgreSQL
.NET Symbol, das angibt, dass dieses Feature im .NET SDK für die API für NoSQL unterstützt wird Symbol, das angibt, dass dieses Feature im .NET SDK für die API für Apache Cassandra unterstützt wird Symbol, das angibt, dass dieses Feature im .NET SDK für die API für MongoDB unterstützt wird Symbol, das angibt, dass dieses Feature im .NET SDK für die API für Apache Gremlin unterstützt wird Symbol, das angibt, dass dieses Feature im .NET SDK für die API für Table unterstützt wird Symbol, das angibt, dass dieses Feature im .NET SDK für die API für PostgreSQL unterstützt wird
Java Symbol, das angibt, dass dieses Feature im Java SDK für die API für NoSQL unterstützt wird Symbol, das angibt, dass dieses Feature im Java SDK für die API für Apache Cassandra unterstützt wird Symbol, das angibt, dass dieses Feature im Java SDK für die API für MongoDB unterstützt wird Symbol, das angibt, dass dieses Feature im Java SDK für die API für Apache Gremlin unterstützt wird Symbol, das angibt, dass dieses Feature im Java SDK für die API für Table unterstützt wird Symbol, das angibt, dass dieses Feature im Java SDK für die API für PostgreSQL unterstützt wird
Python Symbol, das angibt, dass dieses Feature im Python SDK für die API für NoSQL unterstützt wird Symbol, das angibt, dass dieses Feature im Python SDK für die API für Apache Cassandra unterstützt wird Symbol, das angibt, dass dieses Feature im Python SDK für die API für MongoDB unterstützt wird Symbol, das angibt, dass dieses Feature im Python SDK für die API für Apache Gremlin unterstützt wird Symbol, das angibt, dass dieses Feature im Python SDK für die API für Table nicht unterstützt wird Symbol, das angibt, dass dieses Feature im Python SDK für die API für PostgreSQL nicht unterstützt wird
Node/JavaScript Symbol, das angibt, dass dieses Feature im JavaScript SDK für die API für NoSQL unterstützt wird Symbol, das angibt, dass dieses Feature im JavaScript SDK für die API für Apache Cassandra unterstützt wird Symbol, das angibt, dass dieses Feature im JavaScript SDK für die API für MongoDB unterstützt wird Symbol, das angibt, dass dieses Feature im JavaScript SDK für die API für Apache Gremlin unterstützt wird Symbol, das angibt, dass dieses Feature im JavaScript SDK für die API für Table nicht unterstützt wird Symbol, das angibt, dass dieses Feature im JavaScript SDK für die API für PostgreSQL nicht unterstützt wird

Verwenden des Änderungsfeeds

Sie können mit dem Änderungsfeed arbeiten, indem Sie die folgenden Optionen verwenden:

Der Änderungsfeed ist für Partitionsschlüsselbereiche eines Azure Cosmos DB-Containers verfügbar. Dadurch kann sie über einen oder mehrere Verbraucher verteilt werden, um parallel zu verarbeiten, wie in der folgenden Abbildung dargestellt.

Diagramm, das die verteilte Verarbeitung des Azure Cosmos DB-Änderungsfeeds zeigt.

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 für alle Azure Cosmos DB-Konten standardmäßig aktiviert.

  • Es gibt mehrere Änderungsfeedmodi, von denen einige zusätzliche Konfiguration erfordern, um sie zu aktivieren.

  • 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 unter Ändern des Feedprozessors in Azure Cosmos DB.

  • Ä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 mithilfe eines beliebigen Modus im selben Container gleichzeitig 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. Elemente, die im Rahmen eines Transaktionsbatches, einer gespeicherten Prozedur oder einer Massenmodusanforderung geschrieben wurden, weisen die gleiche Änderungszeit auf, und Änderungen innerhalb dieses Bereichs können in beliebiger Reihenfolge übermittelt werden.

Hinweis

Für Konten mit Schreibzugriff in mehreren Regionen gibt es zwei Zeitstempel:

  • Die Serverepochenzeit, zu der der Datensatz in der lokalen Region geschrieben wurde. Diese wird als _ts aufgezeichnet.
  • Die Epochenzeit, zu der das Nichtvorhandensein eines Konflikts bestätigt wurde oder der Konflikt in der Hubregion für diesen Datensatz aufgelöst wurde. Diese wird als crts aufgezeichnet.

Änderungsfeedelemente werden in der Reihenfolge angezeigt, die von crts aufgezeichnet wird.

Ä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 am selben 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 stehen zwei Änderungsfeedmodi zur Verfügung: der neueste Versionsmodus und alle Versionen und Löschmodus . 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 wird, wird es aus dem Änderungsfeed entfernt. Weitere Informationen finden Sie im Änderungsfeed-Modus der neusten 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 (Anforderungseinheiten) für jede Anforderung. Verwenden Sie Azure Monitor, um den RU-Verbrauch des Änderungsfeeds zu messen. Weitere Informationen finden Sie unter Überwachen des Durchsatzes oder der Anforderungseinheitsnutzung eines Vorgangs.

Nächste Schritte

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