11.4 Standardisierungsansätze
11.4.6 IBM Distributed Relational Database Architecture (DRDA)
Im Rahmen seiner Systemarchitektur SAA (System Application Architecture) definierte IBM 1990 die sogenannte "Distributed Relational Database Architecture (DRDA)" [Da93]. Es handelt sich dabei um die Festlegung verschiedener Kooperationsformen für den Zugriff auf mehrere relationale SQL-Datenbanksysteme. Dabei wird primär der integrierte Zugriff auf die SQL-Datenbanksysteme von IBM unterstützt, nämlich DB2/MVS (MVS/ESA-Betriebssystem), DB2/6000 (AIX), DB2/2 (OS/2), SQL/DS (VM und VSE) und SQL/400 (OS/400). Da die DRDA-Spezifikationen jedoch öffentlich dokumentiert wurden, können auch DBS anderer Hersteller in die Verarbeitung eingebunden werden, sofern sie die DRDA-Protokolle befolgen.
DRDA unterscheidet drei Stufen für den Datenbankzugriff in verteilten Umgebungen: "Remote Unit of Work" (RUOW), "Distributed Unit of Work" (DUOW) und "Distributed Request". Dabei ist "Unit of Work" die IBM-Bezeichnung für Transaktion. Die einzelnen Verteilungsformen können folgendermaßen charakterisiert werden:
- Stufe 1: Remote Unit of Work (Abb. 11-9a)
Hierbei kann pro Transaktion nur auf Datenbanken an einem entfernten Knoten zugegriffen werden, wobei jede SQL-Anweisung einzeln an den entsprechenden Rechner gesendet wird. Da meist nur ein DBVS pro Rechner vorliegt, sind Transaktionen somit i.a. auf eine Datenbank beschränkt, ähnlich wie in der derzeitigen Fassung von RDA. Eine Unterstützung heterogener Datenbanken wird nur insoweit geboten, daß neben dem entfernten DBVS auch auf lokale DBS auf Client-Seite zugegriffen werden kann.
- Stufe 2: Distributed Unit of Work (Abb. 11-9b)
Diese Kooperationsform realisiert die "Verteilung von DB-Operationen" in der allgemeinen Form mit mehreren entfernten Datenbanken pro Transaktion. Jede SQL-Anweisung ist dabei auf eine Datenbank beschränkt. Zur Gewährleistung der Alles-oder-Nichts-Eigenschaft (insbesondere von Änderungstransaktionen) an mehreren Datenbanken ist ein globales Commit-Protokoll zu unterstützen. Die Anwendung muß die Verteilung der Datenbanken kennen und SQL-Befehle direkt an die jeweiligen DBVS richten.
- Stufe 3: Distributed Request (Abb. 11-9c)
Dieser Ansatz ermöglicht die verteilte Ausführung einer SQL-Operation auf mehreren lokalen und/oder entfernten Datenbanken. Sämtliche Verteilungsaspekte werden außerhalb der Anwendungen realisiert.
Abb. 11-9: DRDA-Stufen
Stufe 3 wird von den erwähnten SQL-DBVS von IBM derzeit noch nicht unterstützt, Stufe 2 lediglich von DB2/MVS (seit Version 3.1) und DB2/6000 und DB2/2 (seit Version 2). Die anderen DBVS bieten zur Zeit nur Stufe 1. Die Realisierung des verteilten Commit-Protokolls, das ab Stufe 2 erforderlich ist, basiert auf LU6.2. Globale Deadlocks werden über einen Timeout-Ansatz aufgelöst.
Ähnlich wie RDA spezifiziert DRDA kein API (SQL), sondern die genauen Kommunikationsprotokolle und Nachrichtenformate für die Verteilung von DB-Operationen. Die Abbildung von SQL-Operationen einer Anwendung auf die DRDA-Nachrichten erfolgt über einen DRDA-Client, auch Application Requester genannt. Dieser kommuniziert mit einem Application Server, der mit dem jeweiligen DBVS zusammenarbeitet (Abb. 11-10). DRDA legt dabei die Protokolle zwischen Application Requester und Application Server sowie zwischen Application Server und DB-Server (DBVS) fest. Die Funktionen von Application Requester bzw. Server müssen nicht notwendigerweise durch eigene Komponenten (Gateways) erbracht werden, sondern sind in DRDA-kompatiblen DBS meist schon integriert[54]. Damit spezifiziert DRDA zugleich ein Protokoll zum Austausch von SQL-Operationen (bzw. Teiloperationen bei Stufe 3) und Ergebnissen zwischen DRDA-DBVS.
Abb. 11-10: Client-Server-Kooperation bei DRDA
Die Unterstützung der DRDA-Protokolle verlangt erhebliche Systemerweiterungen am DBVS und schränkt somit dessen Autonomie und Heterogenität ein. Dies gilt in besonderem Maße für Stufe 3 von DRDA, welche eine ähnlich enge Kooperation zwischen den einzelnen DBS verlangt wie in (homogenen) Verteilten DBS.
[54] Die DBVS DB2/2 und DB2/6000 erfordern jedoch eigene Zusatzkomponenten DDCS/2 bzw. DDCS/6000 (Distributed Database Connection Services) für die Weitergabe von SQL-Operationen an entfernte DRDA-DBVS.