Eine der wesentlichen Funktionen eines Transaktionsmonitors ist die koordinierte, gesicherte Zusammenarbeit mit Resource Managern (zum Begriff „Resource Manager“ siehe Abschnitt „X/Open-Konformität von openUTM"). openUTM unterstützt die von X/Open standardisierte Schnittstelle XA und ermöglicht so die Zusammenarbeit mit allen Resource Managern, die diese Schnittstelle anbieten, auch gemischt innerhalb einer Transaktion. An eine UTM-Anwendung können gleichzeitig mehrere Resource Manager angeschlossen werden.
Unter den Resource Managern nehmen Datenbank-Systeme die zentrale Rolle ein, daher wird die Zusammenarbeit mit Datenbank-Systemen im Mittelpunkt dieses Abschnitts stehen. Die Datenbank-Systeme, mit denen eine UTM-Anwendung zusammenarbeiten soll, werden bei der Generierung der UTM-Anwendung festgelegt.
Unterstützte Datenbank-Systeme
openUTM auf BS2000-Systemen unterstützt die Koordination mit folgenden Datenbank-Systemen:
UDS/SQL
SESAM/SQL
Oracle
LEASY (das Dateisystem LEASY verhält sich gegenüber openUTM wie ein Datenbank-System)
openUTM für Unix-, Linux- und Windows-Systeme unterstützt die Koordination mit folgendem Datenbank-System:
Oracle
Koordination zwischen UTM-Transaktionen und Datenbank-Transaktionen
Die in einer Datenbank gespeicherten Datensätze unterliegen nicht den Sperr- und Sicherungsmechanismen von openUTM, sondern denen des jeweiligen Datenbank-Systems. Um die Konsistenz der Daten übergreifend sicherzustellen, müssen die UTM-Transaktionen mit den Transaktionen aller beteiligten Datenbank-Systeme synchronisiert werden. openUTM verwendet hierfür das Two-Phase-Commit-Verfahren: Ist die Bearbeitung einer lokalen Transaktion abgeschlossen, so wird diese Transaktion zunächst in den Zustand „vorläufiges Transaktionsende“ versetzt. Erst wenn alle beteiligten Transaktionen diesen Zustand erreicht haben, wird das globale Transaktionsende (Commit) gesetzt. Bild 2 verdeutlicht dieses Verfahren anhand eines einfachen Beispiels.
UTM-Transaktion und Datenbank-Transaktionen können daher als Teile einer gemeinsamen Transaktion aufgefasst werden. Diese gemeinsame Transaktion kann nur dann erfolgreich beendet werden, wenn alle ihre Teile endgültig abgeschlossen werden können. Wenn also ein Teil - UTM- oder eine Datenbank-Transaktion - nicht beendet werden kann, dann wird die Gesamt-Transaktion zurückgesetzt. Das bedeutet, dass in der Transaktion durchgeführte Änderungen in den Datenbanken und in UTM-Speicherbereichen rückgängig gemacht und Aufrufe von Asynchron- und Ausgabeservices annulliert werden.
Für den Programmierer entsteht keinerlei Aufwand für die Koordination zwischen openUTM und Datenbank-Systemen.
Bild 2: Koordination von UTM- und Datenbank-Transaktion über Two-Phase-Commit
Koordination mit verteilten und heterogenen Datenbank-Systemen
Die Koordination mit einem Resource Manager gehört zum Funktionsumfang eines jeden Transaktionssystems. openUTM bietet Ihnen aber weitergehende Möglichkeiten:
Eine UTM-Anwendung kann mit mehreren Datenbank-Systemen koordiniert zusammenarbeiten. Das bedeutet, dass ein UTM-Serviceprogramm Aufrufe an verschiedene Datenbank-Systeme enthalten darf. Darüber hinaus ist es im Rahmen von verteilter Verarbeitung möglich, Daten von mehreren unterschiedlichen Datenbank-Systemen auf verschiedenen Rechnern innerhalb einer Transaktion zu bearbeiten. openUTM erlaubt somit die gesicherte Zusammenarbeit mit verteilten und heterogenen Datenbanken auf allen gängigen Hardware- und Betriebssystem-Plattformen - sogar innerhalb desselben Service-Programms.
Durch diese Leistungen bietet Ihnen openUTM eine höhere Flexibilität als andere Transaktionsmonitore: Bestehende Datenlogistik muss bei Integration in UTM-Anwendungen nicht modifiziert werden und bei Erweiterungen der IT-Landschaft ergibt sich ein wesentlich größerer Gestaltungsspielraum.
Fehlerbehandlung und Diagnose bei der Zusammenarbeit mit Datenbank-Systemen
Treten bei der Zusammenarbeit mit Datenbank-Systemen Fehler auf, so übernimmt openUTM die Fehlerbehandlung - der Programmierer muss keine speziellen Vorkehrungen treffen.
Das Datenbank-System informiert openUTM, ob es einen Aufruf erfolgreich durchführen konnte. Ist ein Fehler aufgetreten, so prüft openUTM den Fehlergrad und reagiert entsprechend: openUTM setzt die Transaktionen auf den letzten Sicherungspunkt zurück und gibt Meldungen aus, die Hinweise auf die Fehlerursachen enthalten.
Zur leichteren Diagnose wird für jeden Datenbank-Aufruf ein Eintrag in einem Bereich des UTM-Dumps erzeugt. Ein spezielles Tool ermöglicht es, den UTM-Dump gezielt und komfortabel auszuwerten.
Unterstützung von Failover mit Oracle Real Application Clusters
Bei Zusammenarbeit mit Oracle Real Application Clusters ist openUTM im Failover-Fall in der Lage, den Anwendungslauf normal fortzusetzen. Transaktionen, die durch den Failover unterbrochen wurden, werden wenn möglich ordnungsgemäß beendet. Ist dies nicht möglich, dann werden sie entweder durch openUTM oder durch das Datenbank-System zurückgesetzt, so dass die Datenbank auch nach dem Failover in einem konsistenten Zustand ist.
Interne Schnittstelle zwischen openUTM und Datenbank-Systemen
openUTM steuert die Zusammenarbeit mit Datenbank-Systemen über eine einheitliche und neutrale Schnittstelle und ist damit entkoppelt von den implementierungsabhängigen Spezifika der unterschiedlichen Datenbank-Systeme.
openUTM verwendet die von X/Open standardisierte XA-Schnittstelle, auf BS2000-Systemen wird zusätzlich die funktional gleichwertige Schnittstelle IUTMDB unterstützt.
Unterstützung weiterer Resource Manager
Datenbank-Systeme sind nur ein bestimmter Typ von Resource Managern. openUTM bezieht neben Datenbanken auch transaktionsorientierte Dateisysteme (z.B. LEASY), Message Queues, lokale Speicher, Logging-Dateien und Netzverbindungen in die Transaktionssicherung ein. Dabei ist es gleichgültig, ob es sich um einen UTM Resource Manager handelt (UTM Message Queues, lokale Speicher, Logging-Dateien) oder um einen externen Resource Manager, wie z.B. Message Queuing-Systeme anderer Hersteller: openUTM koordiniert in jedem Fall die Transaktionssicherung über die Grenzen von Anwendungen, Betriebssystemen und Hardware-Plattformen hinweg.