Change Feed der Cosmos DB

Die Azure Cosmos DB ist eine Cloud-basierte Datenbank mit nativer NoSQL-Unterstützung. Azure Cosmos DB wurde von Grund auf für eine globale Verteilung über beliebig viele Azure-Regionen und horizontale Skalierbarkeit konzipiert. Die Daten können in die Regionen repliziert werden, in der auch die Benutzer der Anwendung die Daten benötigen.

Eine weitere Besonderheit von Azure Cosmos DB ist die native Unterstützung von mehreren Modellen für NoSQL-APIs. Dazu gehören Azure Cosmos DB API für MongoDB (Dokumentendatenmodell), Gremlin-API (Graphen), Cassandra-API (Schlüssel-Wert) und die Tabellen-API (Spalte-Familie mit Azure Table Storage). U. a. dadurch ist die Datenbank für eine große Anzahl von Anwendungen und Anwendungsfälle geeignet.

Die Geschwindigkeit und die mögliche regionale Verteilung der Datenbank ermöglicht eine schnelle Verarbeitung der Anfragen an die Datenbank. Durch die gewonnene Skalierbarkeit und durch die Unterstützung von mehreren Datenbank-APIs gibt es für die Azure Cosmos DB viele Anwendungsfälle im Bereich Web, Mobile, Gaming und IoT.

Wenn man eine hohe Anzahl an Daten (x > Milliarden) pro Tag zu geschickt bekommt (z.B. durch IoT-Sensoren), muss man dafür sorgen, dass die Daten verarbeitet werden und das am besten ohne Verzögerung. Mit Hilfe der Azure Cosmos DB und einem Feature namens „Change Feed“ kann man diese Herausforderung mit vergleichsweise geringem Aufwand meistern (https://docs.microsoft.com/en-us/azure/cosmos-db/change-feed).

Abbildung 1 Change Feed (Eigene Darstellung)

Durch eine Konfiguration in der Datenbank, kann man bestimmen, dass für Änderungen in einem Container ein Trigger ausgelöst wird, welcher weitere Logik ausführt. Damit können die Daten von Sensoren ungefiltert und nicht normalisiert zuerst in der Azure Cosmos DB gespeichert werden und über den Change Feed in weitere Datenbanken oder Streaming Apps weitergereicht werden. Da der Change Feed sich alle Änderungen ab dem Erstellen des Containers/Tabelle speichert, kann man durch ein nachträgliches Aktivieren des Features die Möglichkeit nutzen, um Änderungen des Inhalts an weitere angeschlossene Systeme zu reichen.