Change Data Capture (CDC) ist ein Verfahren, um Änderungen in einer Datenbank (INSERT, UPDATE, DELETE) kontinuierlich zu erfassen und als Ereignisstrom an andere Systeme weiterzugeben. Statt Datenbestände periodisch neu zu vergleichen, „belauscht“ CDC das Transaktionsprotokoll der Datenbank und verwandelt jede einzelne Änderung in ein Ereignis.

Wie funktioniert log-basiertes CDC?

Die gebräuchlichste und robusteste Variante ist das log-basierte CDC: Der Connector liest das interne Änderungsprotokoll der Datenbank — bei PostgreSQL das Write-Ahead-Log (WAL), bei MySQL das Binary Log (Binlog), bei MongoDB das Oplog. Vorteile gegenüber Polling und Triggern: nahezu keine Zusatzlast auf der Quelldatenbank, keine verlorenen Änderungen (auch Löschungen werden erfasst) und die ursprüngliche Reihenfolge bleibt erhalten.

Einsatzgebiete

  • Cache- und Suchindex-Synchronisierung in Echtzeit
  • Befüllung von Data Warehouses und analytischen Systemen
  • Event-getriebene Architekturen: die Datenbank wird zur Ereignisquelle
  • Lösung des Dual-Write-Problems zusammen mit dem Transactional Outbox-Muster

Praxishinweise

Typische Implementierungen folgen dem Snapshot-then-Stream-Modell: Zuerst wird ein konsistenter Anfangs-Snapshot übertragen, danach laufen die laufenden Änderungen. Bei PostgreSQL bindet CDC eine Replication Slot an die Datenbank — wird der Konsument dauerhaft nicht gelesen, kann das Protokoll unbegrenzt wachsen und die Platte des Primärsystems füllen. Ein verbreitetes Werkzeug für log-basiertes CDC ist Debezium, das die Ereignisse an einen Message Broker wie Apache Kafka weiterreicht.

Verwandte Grundlagen: Event Sourcing, Eventual Consistency, Datenbank-Replikation.