11.4 Standardisierungsansätze

11.4.3 Remote Database Access (RDA)

RDA ist ein ISO OSI-Kommunikationsstandard zur Verteilung von DB-Operationen in heterogenen Systemumgebungen [La91, Pa91]. Er ermöglicht einem Programm auf einem Client-Rechner, DB-Operationen auf einem DBVS eines Server-Rechners auszuführen, unabhängig von den zugrundeliegenden Hardware- und Betriebssystem-Plattformen. Die Auswahl des Ziel-DBVS kann dabei bis zur Ausführungszeit des Anwendungsprogramms verzögert werden, sofern die beteiligten Rechner die OSI-Kommunikationsprotokolle befolgen. Die RDA-Standardisierungen begannen bereits 1985, zunächst im Rahmen der ECMA (European Computer Manufacturers Association); die Verabschiedung als ISO-Standard erfolgte 1992. Die RDA-Spezifikation besteht dabei aus einem generischen Teil sowie aus auf einzelne DB-Anfragesprachen zugeschnittenen Spezialisierungen. Derzeit besteht eine Spezialisierung lediglich für SQL, wobei vereinfachend vorausgesetzt wird, daß die beteiligten Kommunikationspartner den ISO-SQL-Standard befolgen. Zudem kann in der aktuellen Fassung des RDA-Standards innerhalb einer Transaktion nur auf eine Datenbank zugegriffen werden, jedoch ist eine Erweiterung auf mehrere Server geplant

Abb. 11-5: Einsatz des RDA-Protokolls
.

Wie bereits in Kap. 2.2.2 erwähnt, ist RDA Teil der Anwendungsebene (Schicht 7) des ISO OSI-Referenzmodells zur Kommunikation in offenen Systemen. Wie Abb. 11-5 zeigt, ruft ein Anwendungsprogramm nicht direkt die RDA-Funktionen ("Dienste") zur Kommunikation mit einem SQL-Server auf. Zur Erhöhung der Portabilität werden die Funktionen eines APIs verwendet, welche dann durch eine Zwischenkomponente (hier RDA-Client genannt) in Aufrufe der RDA-Dienstschnittstelle umgesetzt werden. Auf der Server-Seite werden umgekehrt die eingehenden RDA-Nachrichten über einen RDA-Server-Prozeß in Aufrufe an das SQL-DBS umgesetzt. Der Rücktransport von Ergebnissen oder Statusmeldungen erfolgt analog. Das API sowie die Schnittstelle zwischen RDA-Server und SQL-DBS sind im Rahmen des RDA-Standards nicht festgelegt. Dieser umfaßt die Definition der RDA-Dienstschnittstelle sowie des eigentlichen Kommunikationsprotokolls zwischen den RDA-Diensterbringern.

Abb. 11-6: RDA-Kommunikationsdienste [Ar91]

Die Funktionen der RDA-Dienstschnittstelle sind in Abb. 11-6 nach Gruppen unterteilt zusammengestellt. Da RDA wie andere ISO OSI-Protokolle ein verbindungsorientiertes Protokoll darstellt, werden explizite Dienste zum Auf- und Abbau von Dialogen zwischen Client und Server bereitgestellt. Die Anweisungen zur Ressourcen-Verwaltung dienen zum "Öffnen" bzw. "Schließen" einer Datenbank bzw. Teilen der Datenbank, auf die zugegriffen werden soll. Nach Öffnen der notwendigen Ressourcen können mit der Funktion R-ExecuteDBL die eigentlichen Datenbankoperationen einer bestimmten DB-Sprache (z.Zt. nur SQL) übermittelt werden. Diese Befehle müssen dann im Server erst übersetzt werden, was sehr aufwendig sein kann. Daneben ist es möglich, DB-Operationen vorab zu übermitteln (R-DefineDBL), um sie bereits vor ihrer Ausführung zu übersetzen und zu optimieren. Die Ausführung solcher DB-Befehle wird dann später durch die Funktion R-InvokeDBL erreicht; mit R-Drop können vordefinierte DB-Operationen wieder gelöscht werden. Mit R-Status kann der Status einer zuvor abgesetzten DB-Operation nachgefragt werden, z.B. wenn deren Ausführungszeit unerwartet lange dauert; mit R-Cancel lassen sich solche Operationen abbrechen. Daneben werden drei Dienste zur Transaktionsverwaltung bereitgestellt (Starten, Commit und Abbruch einer Transaktion). Die RDA-Operationen werden bezogen auf die Client-Anwendung stets asynchron ausgeführt, so daß eine Weiterarbeit vor Beendigung einer Operation möglich ist und mehrere Operationen initiiert werden können.

Das RDA-Kommunikationsprotokoll legt im Detail die Formate aller RDA-Nachrichten fest. Ferner werden die Regeln und Bedingungen für den Nachrichtenaustausch bestimmt, insbesondere die zulässigen Reihenfolgen, in der die einzelnen RDA-Nachrichten übermittelt werden können. So wird z.B. verlangt, daß R-Initialize allen anderen RDA-Operationen vorangehen muß. RDA ist keine in sich geschlossene Norm, sondern greift auf andere OSI-Standards zurück. Dies sind insbesondere das Ebene-6-Protokoll ASN.1 (Abstract Syntax Notation One) zur herstellerneutralen Datenrepräsentation sowie ACSE (Association Control Service Element) zur Verbindungsverwaltung. Bei Erweiterung des RDA-Protokolls auf den Mehr-Server-Fall soll für das dann erforderliche verteilte Commit-Protokoll der ISO-Standard TP verwendet werden.