„Transaktionssicherheit beim Daten-Streaming nach Kafka“ lautet unser Newsroom Eintrag vom 4. Mai 2020.

Eigentlich eine Selbstverständlichkeit, sollte man meinen. Dass dies nicht von Beginn in Kafka implementiert wurde, liegt wohl an der ursprünglichen Natur des Daten-Streamings. Die Transaktionssicherheit in Kafka wurde erst ab der Version 1.4.0 in der C-Library librdkafka implementiert.

Was bedeutet Transaktionssicherheit?

Befassen wir uns kurz mit den Basisinformationen.

tcVISION basiert grundsätzlich auf der Verarbeitung von abgeschlossenen Transaktionen, sogenannten „Logical Units of Work“ oder eine LUW.

Laut Wikipedia ist eine „Transaktion ….. in der Informatik eine Folge von Programmschritten …., die als eine logische Einheit betrachtet werden, weil sie den Datenbestand nach fehlerfreier und vollständiger Ausführung in einem konsistenten Zustand hinterlassen. Daher wird für eine Transaktion insbesondere gefordert, dass sie entweder vollständig und fehlerfrei oder gar nicht ausgeführt wird. “

Zum besseren Verständnis schauen wir uns ein Beispiel an.

Eine Online-Bestellung in einem Shop führt dazu, dass der Bestand eines Produktes reduziert wird, die Daten des Käufers erfasst werden und der Auslieferungsprozess initiiert (Erfassung der Auslieferungsdaten und der Rechnungsdaten) wird.

Alle Änderungen, die während dieses Vorganges durchgeführt werden, dürfen erst übernommen und datenmäßig gespeichert werden, wenn alles vollständig abgearbeitet ist.

Ist dies der Fall, können alle Änderungen committed werden und der Vorgang ist abgeschlossen. Tritt jedoch während dieses Vorgangs eine Störung auf und nicht alle notwendigen Daten können erfasst bzw. verarbeitet werden, so ist die Transaktion nicht abgeschlossen und alle evtl. bisher durchgeführten Änderungen müssen rückgängig gemacht werden. Dies geschieht durch einen Rollback-Befehl in der Programmierung.

Die Transaktionsverarbeitung ist integraler Bestandteil einer Datenbank-verarbeitung und auf allen Plattformen verfügbar.

tcVISION unterstützt die Transaktionsverarbeitung sowohl bei der Eingabe (Change Data Capture) als auch bei der Ausgabe (APPLY).

Auf dem Mainframe gibt es die Transaktionsverarbeitung bei Db2, IMS, Adabas, CA Datacom/DB und CA IDMS.

tcVISION unterstützt die Transaktionsverarbeitung, gleichgültig ob die Änderungsdaten in Realtime oder aufgrund von Datenbank-Logs ermittelt werden.

Im Falle von VSAM erkennt tcVISION eine LUW über die DBMS-Extensions bzw. bei der Verarbeitung einer VSAM Journal Datei. Nur abgeschlossene – also committede Transaktionen – werden von tcVISION verarbeitet und repliziert.

Dies ist besonders wichtig für eine Replikation im z/VSE Umfeld, da Replikationsimplementationen anderer Hersteller dies nicht tun und jede Änderung in der Quelle replizieren, selbst wenn die Verarbeitung z.B. mit einem Programmabbruch endet. Die an der Synchronisation beteiligten Datenbestände sind dann nicht mehr synchron.

Eine besondere Stellung nimmt VSAM in Verbindung mit CICS VR im z/OS ein. Hier wird der gesamte CICS-Lauf als eine LUW betrachtet und evtl. Programmabbrüche von CICS intern zurückgestellt.

Die Verarbeitung ist in diesem Fall nicht auf LUWs abgestellt. tcVISION unterstützt auch diese Verarbeitungsform.

Beim Change Data Capture (CDC) und APPLY für Datenbanken unter Unix/Linux/Windows werden die Änderungen ebenfalls auf LUW-Ebene von tcVISION verarbeitet.

Die Transaktionssicherheit in Kafka kam verhältnismäßig spät. Die Gründe sind m.E. in der ursprünglichen Zielsetzung von Kafka als reines Streaming zu suchen. Daten entstehen und werden sofort nach Kafka gestreamt.

Erst als Kafka auch immer populärer im Bereich der klassischen operationalen IT (Banken, Versicherungen, Fertigung) wurde, kam die Anforderung nach Transaktionsverarbeitung – zumindest beim Einstellen der Daten in Kafka.

Die Kafka Transaktionsverarbeitung ist ab der Version 1.4.0 der C-Library librdkafka verfügbar.

Die in tcVISION verwendete Transaktionssicherheit gewährleistet also, dass von den in einer Transaktion geschickten Nachrichten entweder alle oder keine ankommen. Ein Fehler während der Verarbeitung bricht die komplette Transaktion ab, somit wird keine der Nachrichten übertragen.

Dies funktioniert auch beim Versand von Nachrichten in mehrere Topics innerhalb einer Transaktion.

tcVISION spielt im Daten-Streaming eine wichtige Rolle.

tcVISION ist der Lieferant der Daten, die beispielsweise in einer Online Verarbeitung auf einem Mainframe System entstehen (CICS, IMS/DB, Adabas/NATURAL, CA IDMS), in Echtzeit von tcVISION festgestellt (Capturing) und als Datenstrom in eine Big Data Umgebung eingestellt (Streaming) werden.

Unsere tcVISION Lösung ist bestens dazu geeignet, den traditionellen Mainframe (egal ob das Betriebssystem z/OS oder z/VSE heißt) mit einer Big Data Umgebung oder einer Cloud zu verbinden.

Praktische Anwendungserfahrungen beim Kunden und der BOS liegen vor und die Akzeptanz und Nachfrage sind groß. tcVISION unterstützt bereits die strategisch wichtigen Big Data Systeme und Anwendungen. Weitere werden in der Zukunft folgen.

Eine Übersicht aller unterstützter Eingabe- und Ausgabeziele finden Sie hier.