Ein Einblick in die Datenübertragung mit IBM Change Data Capture (CDC) Replication

Wenn es um die Übertragung von Daten zwischen zwei Systemen geht, so fällt die Wahl schnell auf das Versenden von Files z.B. via SFTP. Dies ist zwar altbewährt, doch deckt es bei weitem nicht mehr die aktuellen Anforderungen an eine dynamische Schnittstelle ab.

Bereits relativ simple Anforderungen, wie das Erkennen von Löschungen können ohne Aktiv-Flags oder das Laden von Vollbeständen nicht erkannt werden. Selbst das Anpassen eines Files ist in der Regel mit sehr hohem Aufwand verbunden. Die Datenübertragung mittels IBM CDC stellt unter anderem genau für diese Probleme eine Lösung dar und bietet sogar die Möglichkeit von Realtime Anbindungen.

Funktionalität, Verwaltung und technische Anbindung

Zunächst stellt sich die Frage danach, wie diese Form der Datenübertragung funktioniert.

IBM CDC ist eine Datenübertragungssoftware, die auf dem Auslesen von Datenbanklogs basiert. DB-Änderungen, in Form von Updates, Inserts oder Löschungen werden erkannt, ausgelesen und an die angebundenen Ziele weitergeleitet.

 

 

Abbildung 1: Technische Übersicht der Komponenten von IBM CDC.  Quelle: https://www.ibm.com/support/knowledgecenter/en/SSTRGZ_11.4.0/com.ibm.cdcdoc.sysreq.doc/concepts/aboutcdc.html

Das technische Herz der Gesamtfunktionalität ist der Access Server. Hier werden Quell- und Zieldatenbanken angeschlossen und als solche definiert. Die Daten können zum einen zwischen homogenen Datenbanken als auch zwischen unterschiedlichen Systemen übertragen werden z.B. Oracle nach DB2. Da es möglich ist eine Datenbank als Dual (Quelle und Ziel) zu definieren, können auch System interne Replikationen ohne weiteres mit CDC umgesetzt werden.

Die Anbindung und damit das Auslesen der Information ist individuell gestaltbar. Die GUI von IBM CDC ist die Management Console. Hierüber werden über das Ansprechen des Access Servers die sog. Subscriptions und die darunter liegenden Mappings verwaltet. Über die Subscriptions wird angegeben zwischen welcher Quell- und Zieldatenbank Daten übertragen werden sollen. In diesem Zusammenhang definieren die Mappings, welche konkrete Quelltabelle ausgelesen wird. Dabei ist es sowohl möglich bereits vorhandene Tabellen zu befüllen, neue nach Vorlage der Quelltabelle zu erstellen als auch die Änderungen als Messages an Queues zu senden. Letzteres ist vor allem für Unternehmen interessant, die Technologien wie Apache Kafka nutzen wollen.

Zusätzlich bietet IBM CDC die Möglichkeit Filter auf die Quelltabelle anzuwenden und Fixwerte für Zielspalten zu definieren. Sog. Journal Control Fields dienen dazu z.B. den Zeitpunkt der Änderung, die Nutzer ID und den Typ der Änderung (Update, Insert, Delete oder Refresh) festzuhalten, um individuell auf alle Bedürfnisse einzugehen. Alle Anforderungen können im Laufe der Zeit ohne große Aufwände angepasst werden.

Das direkte Erkennen von Änderungen bietet hierbei eine effiziente Grundlage für Realtime Schnittstellen.

Des Weiteren ist es möglich neben der reinen Konfiguration, die Subscriptions zu überwachen und zu analysieren. Neben der Anzahl der übertragenen Datenmengen werden somit vor allem auch Fehler und Warnungen festgehalten, die zu einem Absturz des Abbildungsprozesses führen können.

Unterstützte Datenbanken

Die Nutzung von IBM CDC wird von einer Vielzahl von Datenbanken unterstützt. Die folgende Tabelle beinhaltet eine Gesamtübersicht der Quell- und Zieldatenbanken, welche die CDC Replication v.11.4 unterstützen:

Unterstütze QuelldatenbankenUnterstützte Zieldatenbanken
IBM® Db2® for Linux, UNIX and Windows (LUW)

IBM Db2 for i

IBM Db2 for z/OS®

IMS

Microsoft SQL Server

Oracle

Sybase 1

Informix® 1

Db2 on Cloud (formerly dashDB® for Transactions) 2

VSAM

PostgreSQL

Db2 Warehouse on Cloud (formerly dashDB for Analytics) 3

Db2 Warehouse (formerly dashDB Local) 3

MySQL

IBM Db2 for Linux, UNIX and Windows (LUW)

IBM Db2 for i

IBM Db2 for z/OS

IBM InfoSphere® DataStage®

Microsoft SQL Server

CDC Replication Engine for FlexRep

Netezza®

Oracle

Sybase 1

Informix 1

CDC Replication Engine for Event Server 1

IBM Cloudant®

Apache™ Hadoop

Apache Kafka

Db2 Warehouse on Cloud (formerly dashDB for Analytics)

Db2 on Cloud (formerly dashDB for Transactions) 2

Db2 Warehouse (formerly dashDB Local)

IBM MQ for z/OS (using Classic CDC for z/OS)

Teradata

Microsoft Azure SQL Database

Microsoft Azure SQL Database Managed Instance

IBM Integrated Analytics System

Quelle: https://www.ibm.com/support/knowledgecenter/en/SSTRGZ_11.4.0/com.ibm.cdcdoc.sysreq.doc/concepts/supportedsourceandtargets.html

Je nachdem welche Quell- oder Zieldatenbank angesprochen wird, können zum Teil zusätzliche oder nur eingeschränkte Funktionalitäten gegeben sein.

Ein Beispiel, bei dem die Funktionalität abweichen kann, ist die Durchführung eines Refresh, die Beladung eines Datenvollbestandes. Analog zur Fileanlieferung erwartet man hier in der Regel riesige Datenmengen, wodurch sich die Serverauslastung stark erhöhen kann. Eine Alternative hierfür ist der differential Refresh. Im Gegensatz zu einem Standard Refresh, bei dem die Zieltabelle zunächst geleert wird, werden bei einem differential Refresh Abweichungen zwischen Quell- und Zieltabelle erkannt und das Ziel somit an die Quelle angeglichen. Hierdurch ist es möglich die Anzahl der Anpassungen auf der Zieltabelle ggf. deutlich zu reduzieren. Unterstützt wird diese Funktion allerdings nicht von den folgenden Datenbanken:

  • CDC Replication Engine for Netezza® Technology
  • CDC Replication Engine for FlexRep
  • CDC Replication Engine for Db2 for i

Es ist somit ratsam im Vorfeld zu prüfen, welche Funktionalitäten ggf. eingeschränkt sind.

IBM CDC mehr als eine Datenübertragungssoftware – Automatisierung

Neben der eigentlichen Hauptfunktionalität der Datenübertragung kann IBM CDC auch in anderer Form genutzt werden, um darüberhinausgehende Aufgabenfelder zu erschließen.

Diverse Vorteile bieten in diesem Zusammenhang speziell von IBM entwickelte CLI-Befehle (sog. CHCCLP) für PowerShell und individuelle Device Mapper für die Unix Umgebung. Sie stellen die Alternative zur manuellen Verwendung der Management Console dar.  Hierdurch lassen sich beispielsweise das Anlegen von Anbindungen automatisieren. Doch neben der Möglichkeit der automatisierten Verwaltung kann unter anderem die Status Erkennung für Themen wie Monitoring oder ein automatisiertes Fehlermanagement genutzt werden.

Fazit

IBM CDC bietet in jedem Fall eine Alternative, wahrscheinlich sogar Verbesserung zur herkömmlichen Datenanlieferung durch Files.

Die Art der Anbindung ist sehr vielseitig und es kann auf die Bedürfnisse und Gegebenheiten des jeweiligen Quell- bzw. Zielsystems eingegangen werden. Darüber hinaus werden Löschungen erkannt sowie Realtime Anbindungen wie die Koppelung mit Kafka ermöglicht. Durch die geschickte Anwendung von z.B. CLI Befehlen, kann es sogar die betrieblichen Abläufe unterstützen und ist somit mehr als nur ein reines Datenübertragungstool.