© best_vector/Shutterstock.com
SSIS Change Data Capture for SQL Server

Because Change happens …


In den letzten Jahren sind die Datenvolumen in Unternehmen massiv angewachsen. Zeitgleich werden die Zeitfenster, in denen Ladeprozesse stattfinden können, immer kürzer. Die Anforderungen an Echtzeitdaten werden im Gegensatz dazu aber immer größer. Dies stellt die IT vor immer größere Herausforderungen, speziell bei Prozessen wie dem Beladen eines DWH. Eine Lösung hierfür ist Change Data Capture, die wir in diesem Artikel näher beschreiben möchten.

Wenn durch wachsende Datenmengen die Ladezeiten immer länger werden, liegt es nahe, dass durch eine Reduzierung der Datenmengen die Ladezeiten wieder verkleinert werden können. Dies können wir am besten erreichen, wenn wir nur noch die Daten laden, die sich seit dem letzten Ladezyklus verändert haben. Daten, die sich im Quellsystem nicht verändert haben, brauchen in Zukunft nicht mehr geladen werden. Um geänderte Datensätze im Quellsystem zu erkennen, werden seit Längerem bereits unterschiedliche Methoden wie z. B. Logfunktionalitäten auf Anwendungsebene, Bitmasken, Zeitstempel / Versionsnummern auf Zeilenebene oder Trigger eingesetzt.

Logfunktionalitäten auf der Anwendungsebene, die Insert, Updates oder auch Deletes in einer gesonderten Tabelle speichern, erfordern in der Regel einen hohen zusätzlichen Entwicklungsaufwand, erzeugen unnötige Transaktionen und vervielfachen das eigentliche Datenvolumen im Quellsystem. Hinzu kommt, dass die Implementierungen entsprechender Funktionalitäten von Anfang an mit implementiert werden müssen. Eine nachträgliche Implementierung ist häufig nur mit erhöhtem Entwicklungsaufwand verbunden, in den meisten Fällen jedoch gar nicht möglich.

Über Trigger lassen sich entsprechende Funktionalitäten nachträglich auf der Datenbankebene implementieren, aber auch hier werden unnötige zusätzliche Transaktionen erzeugt, die das Quellsystem extra belasten und so die Performance massiv beeinflussen können.

Eine der wahrscheinlich am häufigsten eingesetzten Lösungen ist die Verwendung von Zeitstempeln, die häufig in CreatedOn- oder ModifiedOn-Feldern abgelegt werden. Aber auch hier gilt, dass eine entsprechende Funktionalität bereits in der Datenbank in jeder Tabelle implementiert sein muss. Bei Fremdsystemen und Legacy-Systemen sind entsprechende Spalten häufig nicht vorhanden und können auch nicht unbedingt hinzugefügt werden.

Change Data Capture

Eine Lösung, die sich nachträglich ohne nennenswerte Beeinflussung der Performance implementieren lässt, ist das bereits mit SQL Server 2008 e...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang