Change Data Capture
Bei Change Data Capture, kurz CDC, handelt es sich um ein Software Design Pattern, das zur Datenintegration zwischen einer Datenbank und deren Datenquellen zum Einsatz kommt.Um eine zuverlässige, konsistente und aktuelle Datenhaltung innerhalb einer Datenbank zu gewährleisten, ist es notwendig Datenänderungen unmittelbar zu erkennen und darauf zu reagieren.
Das CDC-Pattern dient dazu, die Änderungen an den Datensätzen zu verfolgen und Folgeaktionen einzuleiten.
Ansätze zur Umsetzung des CDC
Ein Software Pattern dient dazu einen Vorgang oder eine Funktionalität innerhalb eines Systems sprachlich zu beschreiben. Im Falle von CDC ist es die Erkennung und Nachverfolgung von Datenänderungen. Wie diese Funktionen umgesetzt werden, wird dem Entwickler einer Datenbank oder eines Datenbankmanagementsystems selbst überlassen. Zu den klassischen Umsetzungen von CDC gehören die folgenden.
Zeitstempel erfassen
Ein einfacher Weg die Änderung eines Datensatzes anzuzeigen und zu prüfen, ist die Speicherung eines Änderungsdatums am Datensatz selbst. Dies wird durch die Erweiterung einer Tabelle, um eine Datumsspalte z. B. last_update oder updated_at, ermöglicht. Die Abbildung T (rechts oben) zeigt den Aufbau und das Ergebnis bei einer Zeitstempelerfassung, wenn ein Datensatz geändert wird.
Versionierung und Statusinformationen
Die Änderung an einem Datensatz kann auch durch eine Versionsnummer, die als zusätzliche Spalte mitgeführt wird, kenntlich gemacht werden. Wie in Abbildung V (rechts unten) zu sehen, kann die Versionsnummer in einer gesonderten Verwaltungstabelle hinterlegt werden, um den neuesten Stand und ggf. weitere Informationen zum Änderungszeitpunkt und -grund zu erfassen. Ein weiterer, verbreiteter Indikator ist das sogenannte Flag (Datentyp Boolean), das eine Änderung des Datensatzes bezogen auf eine bestimmte Angabe oder ganz allgemein eine Änderung anzeigt.
Trigger und Ereignisse
Sollen umfangreiche Aktionen bei der Erkennung einer Änderung durchgeführt werden, ist dies meist nur programmatisch zu lösen. Hierfür kommen häufig Datenbanktrigger zum Einsatz, die bei einer Insert-, Update- oder Delete-Operation auf einer Tabelle eine Aktion, z. B. das Schreiben eines Logs, auslösen oder im Sinne der referenziellen Integrität Aktualisierungen an Referenzdatensätzen vornehmen.
CDC oder SCD im Data Warehouse einsetzen?
Bei der Entwicklung von Data Warehouse Systemen ist die Nachvollziehbarkeit und Aktualität der gespeicherten Daten eine Kernfunktionalität. Bei der Implementierung der Datenänderungsprozesse hat sich das Slowly Changing Dimension (SDC) Verfahren des Typ 2 etabliert.
Mit diesem wird gewährleistet, dass die referenzielle Integrität der Datensätze durch eine Änderung oder Aktualisierung nicht verloren geht und die Daten auch historisch (rückwirkend) ausgewertet werden können. Dies ist möglich, da bei der Aktualisierung der Daten die vorherigen Informationen im Datensatz nicht gelöscht, sondern mit einem Gültigkeitszeitraum versehen werden (siehe Abb. 2), in dem diese gültig waren. Der neue, aktuelle Wert wird in einem neuen Datensatz angelegt. Dadurch gehen keine Informationen verloren und Änderungen können jederzeit nachvollzogen werden.
Die klassischen Change Data Capture-Ansätze können dies nicht immer gewährleisten und sehen dies im Pattern auch nicht speziell vor. Bei der Implementierung eines CDC Verfahrens muss daher spezifisch für das jeweilige Datenmodell und die hinterlegten Integritätsregeln ein Ablauf zur Änderungserkennung und -behandlung programmiert werden.