Definition Was ist Debezium?

Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Debezium ist ein Open Source Framework für Change Data Capture (CDC). Es erfasst Änderungen in einer Datenbank und stellt sie in Form von Event-Streams anderen Anwendungen zur Verfügung. Die Verbindung zu den Datenbanken und deren Überwachung ist über Konnektoren realisiert. Es sind Konnektoren für zahlreiche verschiedene Datenbankmanagementsysteme verfügbar.

Firmen zum Thema

(Bild: © aga7ta - stock.adobe.com)

Debezium ist der Name eines Open Source Frameworks für Change Data Capture (CDC). Es handelt sich um eine aus verschiedenen Komponenten und Services bestehende verteilte Plattform, die Änderungen in Datenbanken erfasst und sie in Form von Event-Streams anderen Anwendungen bereitstellt. Gewöhnlich kommt Debezium zusammen mit Apache Kafka und Kafka Connect zum Einsatz, aber auch ein Standalone-Einsatz ist möglich. Über die bereitgestellten Events können andere Anwendungen auf Veränderungen der Daten einer Datenbank reagieren wie Indizes aktualisieren oder parallele Datenbestände updaten. Das kontinuierliche Monitoring der Datenbanken ist über Konnektoren realisiert.

Debezium ist fehlertolerant, schnell und beeinflusst die Performance der überwachten Datenbank kaum. Das Open Source Framework arbeitet mit vielen verschiedenen Datenbanken und Datenbankmanagementsystemen zusammen. Derzeit werden MySQL, MongoDB, PostgreSQL, Oracle, SQL Server, Cassandra, Db2 und Vitess unterstützt. Debezium steht unter Apache-2.0-Lizenz. Name und Logo sind Marken von Red Hat. Aktuelle Versionen der Software sind (Stand August 2021) Debezium Version 1.5 (Stable), Debezium Version 1.6 (Latest Stable) und Debezium Version 1.7 (Development).

Allgemeines zu Change Data Capture (CDC)

Der Begriff Change Data Capture, abgekürzt CDC, beschreibt Konzepte und Methoden, Datenquellen kontinuierlich zu überwachen, Veränderungen der Daten zu erfassen und diese Informationen so aufzubereiten und bereitzustellen, dass sie von anderen Services und Anwendungen genutzt werden können. Datenänderungen können Löschungen, Neueintragungen oder Datenaktualisierungen sein. Typische Anwendungsbereiche sind Datenbanken, Big Data und Data Warehouses. CDC stellt die erfassten Änderungen in Form von asynchronen Events zur Verfügung. Die Events liefern Informationen über den vorherigen und den aktuellen Zustand des veränderten Datensatzes sowie Metadaten wie Zeitstempel. Debezium ist ein CDC-Framework, das die benötigte Software für Change Data Capture bereitstellt.

Architektur und Funktionsweise von Debezium

Das Architekturkonzept von Debezium ist fehlertolerant und basiert auf einem verteilten Systeme aus verschiedenen Services und Komponenten. Überwachungsprozesse, Konnektoren und Event-Streaming lassen sich auf verschiedene Systeme verteilt betreiben. Damit Events bei Problemen mit einzelnen Systemen nicht verloren gehen, sind Replikations- und Aufzeichnungsmechanismen vorgesehen. Debezium arbeitet mit dem sogenannten Log-basierten Change Data Capture, das als Ausgangsinformation für Datenveränderungen die Transaktionslogs der Datenbanken verwendet.

In der Regel kommt Debezium zusammen mit der verteilten Streaming-Plattform Apache Kafka und Kafka Connect zum Einsatz. Kafka übernimmt im Debezium-Framework die Aufgabe, Streams in Echtzeit zu verarbeiten, den Datenaustausch zu organisieren und Replikationen durchzuführen. Die Quellkonnektoren von Debezium liefern die erkannten Änderungen der Datenbanken nach Kafka. Jeder Konnektor ist für das Monitoring eines Datenbank-Servers zuständig. In Upstream-Richtung lesen andere Anwendungen (Consumer) die Kafka-Events aus und verarbeiten diese in der gewünschten Form. Ein Debezium-System besteht aus einem Cluster von mehreren Kafka-Brokern. Die Debezium-Konnektoren sind Clustern von Kafka Connect Services zugeordnet. Die Anzahl an Kafka-Brokern und Clustern hängt von der Menge der zu verarbeitenden Events, der Anzahl der zu überwachenden Datenbanktabellen und der Menge an Consumern ab.

Der Ablauf der Erfassung einer Datenbankänderung und des Streamings eines Events erfolgt in mehreren Schritten. Werden Datenänderungen in eine Datenbank geschrieben, wird das Transaction-Log-File der Datenbank aktualisiert. Debezium monitort diesen Vorgang und erfasst sofort alle Veränderungen. In einem nächsten Schritt erzeugt Debezium einen Kafka Record mit der erkannten Datenänderung und publiziert ihn nach Kafka. Dort steht er den Consumern zur Verfügung.

Debezium muss nicht zusammen mit Kafka eingesetzt werden. Es besteht die Möglichkeit, Debezium-Konnektoren in Anwendungen standalone zu integrieren. Die Anwendungen erhalten auf diese Weise direkten Monitoring-Zugang zu einer Datenbank und können auf Datenveränderungen ohne Kafka-Streaming reagieren. Nachteil der Standalone-Methode ist, dass das System weniger fehlertolerant ist und die Funktionen sowie die Skalierbarkeit limitiert sind.

Anwendungsmöglichkeiten von Debezium

Change Data Capture mit dem Debezium-Framework bietet zahlreiche Anwendungsmöglichkeiten. Es lässt sich überall dort einsetzen, wo eine Anwendung direkt auf eine Veränderung des Datenbestands einer Datenbank reagieren soll. Die bereitgestellten Events lassen sich für verschiedene Zwecke nutzen. Beispielsweise lassen sich Caches, Indizes oder parallele Datenbestände aktualisieren. Typische Anwendungsfälle sind:

  • Realisierung eines mit der Quelldatenbank konsistenten Datenspeichers
  • Erstellen von lokalen Datenkopien
  • Datensynchronisation
  • Aktualisierung des Caches
  • Daten zwischen Microservices propagieren
  • Aufbau eines Volltextsuchindex
  • Paralleles Schreiben von Daten in mehrere Datenbanken
  • Datenbank-Sharing
  • Datenaggregation in einem Data Warehouse
  • Nahtlose Migration von Datenbanken und Datenbeständen
  • Streaming von Datenbankaktualisierungen an mehrere unterschiedliche Anwendungen, ohne diesen direkten Zugriff auf die Datenbanken zu gewähren

(ID:47551814)

Über den Autor