Datenbankänderungen in Echtzeit verfolgen und erfassen, um Datensynchronisierung, Replikation und Streaming-Pipelines zu ermöglichen.
Change Data Capture (CDC) ist eine Datenintegrationstechnik, die Änderungen auf Zeilenebene in einem Dataset, wie Einfügungen (Inserts), Aktualisierungen (Updates) und Löschungen (Deletes), identifiziert und aufzeichnet. Anstatt ganze Tabellen wiederholt zu extrahieren, erfasst CDC nur die geänderten Datensätze und wendet sie auf nachgelagerte Systeme an. Dieser inkrementelle Ansatz sorgt dafür, dass Analyseplattformen, operative Anwendungen und Machine-Learning-Pipelines mit aktuellen Informationen abgeglichen bleiben, ohne die Kosten oder Verzögerungen vollständiger Aktualisierungen.
Herkömmliche Batch-Pipelines basieren auf periodischen Ingestionsaufträgen, die vollständige Scans durchführen oder große Datasets neu laden. Diese Workflows sind einfach und kostengünstig, aber bei der Scale ineffizient, da sie Latenz hinzufügen und unveränderte Daten wiederholt verarbeiten. CDC begegnet diesen Einschränkungen, indem es kontinuierlich Änderungen durch Mechanismen wie Transaktionsprotokolle, Trigger, Zeitstempel oder native Change-Feeds erkennt, was es Data-Lakehouse-Architektur -Plattformen ermöglicht, mit aktuelleren Daten und reduziertem Rechenaufwand zu arbeiten.
Innerhalb einer ETL-Pipeline ist CDC der Mechanismus, der nur die Daten extrahiert, die sich seit dem letzten Ladevorgang geändert haben. Anstatt geplante Extraktionen ganzer Tabellen auszuführen, erfasst CDC neue oder geänderte Zeilen, sobald sie in der Quelldatenbank auftreten. Indem nur die aus Protokollen, Triggern oder Snapshot-Deltas erfassten Änderungsereignisse verarbeitet werden, kann ein inkrementeller Stream gebildet werden, der die fortlaufende Entwicklung des Datensatzes durch Extract, Transform, and Load (ETL)-Prozesse darstellt.
Sobald Ereignisse in die Pipeline gelangen, übernimmt der ETL-Prozess, wobei Bereinigung, Anreicherung oder Validierung für jeden geänderten Datensatz und nicht für den gesamten Datensatz ausgeführt werden. Der letzte Ladeschritt wendet nur diese inkrementellen Updates auf die Zieltabelle oder das Repository an, was zu einer schlanken, kontinuierlichen Erfassung führt. Dieser Ansatz reduziert die E/A und sorgt dafür, dass nachgelagerte Systeme eng mit der Quelle abgeglichen bleiben.
Durch die Ermöglichung der kontinuierlichen Extraktion, Transformation und des Ladens modernisiert CDC den ETL-Prozess von einem batchorientierten Workflow zu einer Echtzeit-Pipeline. Analytics, Dashboards und Machine-Learning-Pipelines spiegeln dank Streaming Analytics die neuesten Daten konsistent wider, ohne auf langlaufende Jobs oder Wartungsfenster angewiesen zu sein.
Moderne Datenökosysteme sind auf den Fluss zeitnaher und genauer Informationen zwischen operativen Systemen, Analyseplattformen und Pipelines für maschinelles Lernen angewiesen. In Umgebungen wie E-Commerce, Bankwesen oder Logistik ändern sich die Daten ständig, da durch Aktionen wie Käufe, Profilaktualisierungen oder Bestandsanpassungen neue Daten erstellt werden. Ohne CDC bleiben diese Aktualisierungen in den Quellsystemen isoliert bis zum nächsten Batch-ETL-Job, was dazu führen kann, dass Dashboards, Berichte und Modelle auf veralteten Datensätzen beruhen.
CDC löst dieses Problem, indem es eine Echtzeit-Synchronisierung ermöglicht, die alle verbundenen Systeme auf dieselbe einzige Quelle der Wahrheit („Single Source of Truth“) ausrichtet.
Dieser Prozess unterstützt auch Migrationen ohne Ausfallzeiten, was ein wesentlicher Bestandteil der Cloud-Modernisierung ist. Anstatt Schreibvorgänge einzufrieren oder riskante Umstellungen durchzuführen, repliziert CDC kontinuierlich Änderungen zwischen alten und neuen Systemen, um nahtlose Migrationen zu ermöglichen.
Während herkömmliche ETL-Pipelines für viele Analyse-Workloads weiterhin von zentraler Bedeutung sind, funktionieren sie ganz anders als CDC. ETL verschiebt Daten typischerweise in geplanten Batches, wie stündlich, nächtlich oder in einem anderen festen Intervall. Jede Ausführung extrahiert Daten aus dem Quellsystem, transformiert sie und lädt sie erneut in nachgelagerte Plattformen, die von Databricks Data Engineering unterstützt werden. Dieses Modell ist vorhersagbar, kann aber Latenz verursachen und erfordert, dass das System ganze Tabellen oder große Partitionen scannt, selbst wenn sich nur ein kleiner Teil der Datensätze geändert hat.
Indem Änderungen erfasst werden, sobald sie auftreten, beseitigt CDC die Lücke zwischen der Datenänderung im Quellsystem und ihrer Verfügbarkeit für Analytics oder den Betrieb.
Die Bedeutung von CDC wird noch deutlicher, wenn man vergleicht, wie CDC und ETL die Datenverschiebung handhaben. Während herkömmliches ETL oft auf vollständige Tabellenscans oder Massen-Neuladungen angewiesen ist, überträgt CDC nur inkrementelle Änderungen. Dies reduziert den Rechenaufwand erheblich und verbessert die Gesamteffizienz Ihrer Datenpipeline.
Batch-ETL ist ebenfalls auf Wartungsfenster angewiesen, um konsistente Lesevorgänge zu gewährleisten. CDC beseitigt diese Abhängigkeit, indem es Änderungen erfasst, ohne die normale Datenbankaktivität zu unterbrechen. Dadurch eignet sich CDC gut für Systeme, die hochaktuelle Daten benötigen, wie Echtzeit-Dashboards, Empfehlungs-Engines oder Analytics. ETL eignet sich jedoch weiterhin für große historische Backfills oder periodische Transformationen, und zusammen können CDC und ETL eine komplementäre Ingestionsstrategie in modernen Architekturen bilden.
CDC ermöglicht einen kontinuierlichen und zuverlässigen Datenfluss über Data Warehouses, Lakehouses und Streaming-Plattformen hinweg. Da jede Änderung in der Reihenfolge ihres Auftretens erfasst wird, bleiben Dashboards und Anwendungen mit den operativen Systemen synchronisiert. CDC unterstützt auch die Auditierbarkeit und Governance, indem es eine klare Aufzeichnung der Datenentwicklung bewahrt, was eine zentrale Anforderung für regulierte Branchen wie das Finanz- und Gesundheitswesen ist, insbesondere bei der Implementierung von Migrationsstrategien vom Data Warehouse zum Lakehouse.
CDC und SCD erfüllen unterschiedliche Rollen innerhalb einer Datenpipeline. CDC ist für das Erkennen und Extrahieren von Änderungen auf Zeilenebene aus einem Quellsystem verantwortlich, während SCD bestimmt, wie diese Änderungen im Zielsystem gespeichert werden.
Wenn CDC eine Änderung identifiziert, z. B. wenn ein Kunde seine Adresse aktualisiert, überschreibt SCD Typ 1 den vorhandenen Datensatz, da historische Werte nicht benötigt werden. SCD Typ 2 erstellt stattdessen einen neuen versionierten Datensatz mit Start- und Endzeitstempeln, um den vollständigen Verlauf zu bewahren. Mit anderen Worten: CDC liefert die inkrementellen Änderungsereignisse; SCD wendet die Regeln an, die festlegen, wie diese Ereignisse dargestellt werden, entweder als aktuelle Zustands-Snapshots oder als historische Zeitleisten.
Unternehmen können CDC auf verschiedene Weisen implementieren, abhängig von ihrer System-Performance, Komplexität und ihren Geschäftsanforderungen. Die gängigsten Methoden, die Unternehmen nutzen, erkennen Änderungen auf unterschiedliche Weise.
Logbasiertes CDC: Dieser Prozess liest direkt aus Datenbank-Transaktionsprotokollen wie MySQL-Binlog, PostgreSQL-WAL oder Oracle-Redo-Logs. Da dieser Prozess auf Datenbankebene statt auf der Ebene von Live-Tabellenabfragen arbeitet, minimiert er die Auswirkungen auf Produktionssysteme und erfasst dennoch alle Einfüge-, Aktualisierungs- und Löschvorgänge in Echtzeit. Frameworks wie Debezium und die Integration von Apache Kafka verwenden diese Methode, um zuverlässige Datenströme mit hohem Volumen bereitzustellen.
Trigger-basiertes CDC: Diese Methode verwendet Datenbank-Trigger oder Stored Procedures, um Änderungen in Schattentabellen aufzuzeichnen. Obwohl dies einen geringen Schreib-Overhead mit sich bringt, bietet es eine präzise Steuerung und kann benutzerdefinierte Logik oder Transformationen beinhalten, was für regulierte Workloads nützlich sein kann.
Abfragebasiertes CDC: Diese Methode identifiziert geänderte Datensätze mithilfe von Timestamps oder Versionsnummern. Sie ist einfach und eignet sich gut für kleinere Systeme oder Altsysteme, kann aber Löschvorgänge übersehen und bei Scale weniger effizient sein.
Sobald Änderungen vom System erfasst wurden, definieren SCD-Muster (Slowly Changing Dimensions), wie sie angewendet werden. Dies geschieht auf zwei verschiedene Arten:
SCD Typ 1 überschreibt bestehende Datensätze, um nur die aktuellste Version beizubehalten. Dies eignet sich hervorragend für Korrekturen oder unkritische Aktualisierungen, wie z. B. die Korrektur eines falsch geschriebenen Kundennamens oder die Aktualisierung der E-Mail-Adresse eines Benutzers. In Spark Declarative Pipelines kann dies mit nur wenigen Zeilen Code konfiguriert werden, während Lakeflow die Sequenzierung, Abhängigkeiten und außerplanmäßige Ereignisse automatisch handhabt.
SCD Typ 2 bewahrt den vollständigen Verlauf mit automatischer Verwaltung der Spalten _START_AT und _END_AT und unterstützt Audits und zeitbasierte Analysen mit ACID-Transaktionen mit Delta Lake, wodurch sichergestellt wird, dass frühere Zustände für die Analyse verfügbar bleiben. Dies ist ideal für Tasks wie die Nachverfolgung der Adresse eines Kunden im Zeitverlauf, das Monitoring von Produktpreisänderungen oder die Pflege von Prüfpfaden für die Compliance.
Durch die Kombination von CDC-Methoden mit Spark Declarative Pipelines können Benutzer wartungsarme, produktionsreife CDC-Pipelines erstellen, die sowohl in Batch- als auch in Streaming-Umgebungen skalierbar sind.