Mark Aslan Kuschels Blog

SQL, Business Intelligence, Microsoft, .Net

Change Data Capture in SQL-Server Denali

Ende letzten Jahres haben Microsoft und Attunity vereinbart die Change Data Capture (CDC) Technologie von Attunity in den neuen SQL Server einfließen zu lassen (Pressemeldung von Attunity).  Microsoft wird somit die seit SQL Server 2008 vorhandene CDC Technologie um eine neue Ergänzen oder Ablösen, Grund genug dieses genauer unter die Lupe zu nehmen.

Arbeitsweise des CDC auf LogFile Basis

Eine CDC Technologie ermöglicht es in nahezu Echtzeit Veränderungen an einer Datenbank festzustellen, um dann diese veränderten Daten in eine andere Datenbank zu kopieren. Ein klassischer Anwendungsfall für die Verwendung von CDC ist der Aufbau von Data Warehouses, da so statt sehr langläufiger ETL-Prozesse, in kurzen Abständen kleine Datenmengen geladen werden können. So kann das Data Warehouse deutlich aktueller gehalten werden und die Last auf die Vorsysteme verteilt sich gleichmäßig. Ebenso kann CDC zur Auditierung genutzt werden, um Datensatzänderungen zu dokumentieren.

Oftmals wird CDC jedoch durch das Verwenden von Triggern implementiert, was eine permanent erhöhte Last und verringerte Performance in den Vorsystemen zur Folge hat. Die in SQL Server 2008 bereits integrierte, sowie die von Microsoft lizensierte Attunity-CDC Technologie basieren auf der Analyse von Datenbankprotokolldateien. Dies hat den Vorteil, dass dies außerhalb der Transaktionsklammer im Datenbankmanagementsystem erfolgt, weshalb Schreibvorgänge wie üblich abgeschlossen werden können. Erst das geschriebene Datenbankprotokoll wird zur Auswertung herangezogen, während dieses Prozesses können in der Datenbank wieder weitere Änderungen erfolgen.

Abgrenzung zum bisher im SQL Server integrierten CDC

Technisch gesehen sind bis zu diesem Punkt die bereits vorhandene Technologie sowie die von Attunity entwickelte identisch. Die Attunity-Lösung bietet im wesentlichen folgende Vorteile

  • Sie wird als Windows Dienst außerhalb des SQL-Servers ausgeführt und ist abwärtskompatibel bis SQL-Server 2000
  • Beliebige Editionen von SQL-Server werden unterstützt
  • Auf dem Server, dessen Daten überwacht werden sollen, muss nichts installiert werden
  • Es werden sogar weitere Systeme als Datenquelle, oder Ziel, unterstützt wie Oracle, oder DB2
  • Integration in SSIS mit dem Business Intelligence Development Studio

Die Architektur ermöglicht es somit direkt eine Vielzahl von Systemen anzubinden und könnte einem so manche Entwicklung von ETL Paketen ersparen. Ebenso ist der letzte Punkt interessant für jeden BI Entwickler im Microsoft Umfeld.

Das CDC von Attunity

Durch einen Download der Demoversion von CDC für SSIS kann sich bereits jetzt ein Einblick verschafft werden, wie die Technologie in Denali aussehen könnte.

Nach der Installation lässt sich über Visual Studio 2008 in einem Integration Services Projekt die Definition eines CDC Dienstes erstellen. Dies geschieht über einen neuen Kontextmenüeintrag “Attunity SQL-Server CDC” im Integration Services Projekt. Der Eintrag “Configure CDC Service” startet einen Assistenten, der den Entwickler durch die Einzelnen Schritte führt.
12
Im ersten Schritt wird die Datenquelle definiert, die überwacht werden soll. Schritt zwei ist das Angeben von Parametern, wie einem Port, des zu erstellenden CDC Dienstes. Der CDC-Prozess wird als Windows Dienst auf den späteren ETL Server erstellt werden, für die Entwicklung erstellt der Assistent auch eine Instanz dieses Dienstes auf dem Entwicklungsrechner bereit.
3456
Als nächstes werden die zu überwachenden Tabellen ausgewählt, in denen der CDC Dienst Änderungen auswertet. Der Assistent generiert nun ein SQL-Skript, das auf dem Datenbankserver ausgeführt werden muss, um CDC lauffähig zu bekommen.
Zum Schluss wird überprüft, ob alle Operationen geklappt haben und der Dienst lauffähig ist.

78
Nun ist der Dienst eingerichtet. Als nächstes können mit einem weiteren Wizard über den Eintrag “Generate CDC Packages” SSIS Pakete generiert werden. Der Wizard fragt zuerst nach einem Connection String für die Zieldatenbank und fordert den Benutzer dann auf ein Mapping auf Zieltabellen zu erstellen bzw. diese ggf. sogar noch zu erstellen. Der Mapping Dialog zeigt dabei übersichtlich die Eigenschaften der Datenfelder, wie Typ, Länge, oder NULL-Fähigkeit an. Werden besonders viele Tabellen durch CDC verwaltet ist es sinnvoll im nächsten Schritt Tabellengruppen festzulegen. Zum Schluss besteht noch die Auswahlmöglichkeit ein Paket zum Vollständigen und eines zum Inkrementellen Laden zu erstellen.
1112

Ein Blick auf die Pakete zeigt von Attunity eigens entwickelte ControlFlow-Elemente, welche zur Synchronisierung mit dem CDC Dienst dienen. Interessanter ist der Einblick in die Datenfluss Elemente. Das initiale Laden wird hier schlicht mit einer OLE DB Quelle sowie mit einem OLE DB Ziel vorgenommen, wobei zuvor die Daten im Ziel mittels eines T-SQL-Statements abgelöscht wurden. Der inkrementelle Ladevorgang enthält Attunity-eigne Datenflusselemente, welche über den CDC-Dienst Änderungen aus den Protokolldaten auslesen und dann in der Zieltabelle entsprechend verarbeiten.

1716imageimage

Fazit

Das Produkt ist vielversprechend und deckt Szenarien ab, zu denen der SQL Server aktuell nicht in der Lage ist. Jedoch stellt sich die Frage, wie Microsoft die Lizensierung handhaben wird. Bisher ist Change Data Capture nur in der Enterprise- und Datacenter-Edition verfügbar und bietet nicht die Möglichkeit SQL Server niedrigerer Editionen einzubeziehen. Es ist daher durchaus denkbar, dass der CDC Host mindestens über eine SQL Server Denali Enterprise Edition verfügen muss, damit dieses Feature für andere Datenbanksysteme genutzt werden kann.

Dieser Artikel wurde auch im Business Intelligence Blog der PTSGroup AG veröffentlicht