11.4 Standardisierungsansätze
11.4.4 SQL Access
Die Beschreibung des RDA-Standards zeigt, daß dieser keine Schnittstellen zum Anwendungsprogramm sowie zum DBS festlegt. Insbesondere wird vorausgesetzt, daß Client und Server den ISO-SQL-Standard befolgen, was jedoch in der Praxis unrealistisch ist. Um eine praktische Nutzbarkeit des RDA-Standards zu ermöglichen, schlossen sich 1989 zahlreiche Hersteller von DB-Tools und SQL-DBS (außer IBM) zu dem Konsortium SQL Access Group (SAG) zusammen. Die SAG definierte die auf RDA aufbauende Spezifikation SQL Access für den Fernzugriff auf SQL-Datenbanken [Ar91, Ba91]. Daneben wurden die Spezifikationen von den beteiligten Unternehmen prototypisch realisiert, um ihre praktische Eignung für die Zusammenarbeit zwischen Anwendungen und SQL-Datenbanken in heterogenen Umgebungen zu demonstrieren. Eine erste derartige Demonstration (basierend auf Version 1 von SQL Access) fand bereits 1991 statt, wobei eine Interoperabilität zwischen 10 unterschiedlichen Client- und 9 Server-Systemen nachgewiesen wurde [Ar91].
SQL Access besteht aus einem API- sowie einem FAP-Teil (Formats and Protocols). Als FAP wurde der RDA-Standard gewählt[52]. Das API umfaßt eine normierte Teilmenge des SQL-Sprachumfangs, der in den meisten SQL-Implementierungen verfügbar ist. Um eine ausreichende Funktionalität bereitzustellen, waren jedoch eine Reihe von Erweiterungen im Vergleich zum ISO SQL-Standard bzw. existierenden SQL-Implementierungen erforderlich. So wurden eigene Befehle definiert zum Auf- und Abbau von Verbindungen mit einem SQL-Server (CONNECT bzw. DISCONNECT) und zur Auswahl unter zuvor etablierten Verbindungen (SET CONNECTION). Weiterhin wurde eine einheitliche Menge von Fehler-Codes festgelegt, um eine herstellerunabhängige Fehlerbehandlung zu unterstützen. Neben einem API für direkt eingebettete SQL-Anweisungen wurde auch ein Call-Level-Interface (SQL/CLI) festgelegt[53]. Die von der SAG definierten SQL-APIs wurden von der X/Open übernommen; das CLI wird auch im künftigen SQL-Standard (SQL3) verwendet.
Abb. 11-7 veranschaulicht die Abbildung von Operationen des APIs auf die RDA-Dienstschnittstelle, wie sie von dem RDA-Client (Abb. 11-5) vorgenommen werden könnte. Auf der Server-Seite erfolgt eine ähnliche Umsetzung eingehender Aufrufe auf Operationen des lokalen SQL-DBS durch den RDA-Server. Der RDA-Server umfaßt damit auch die Funktionalität eines DB-Gateways, um die Abbildung zwischen dem normierten SAG-SQL und lokalem SQL vorzunehmen.
Abb. 11-7: Umsetzung von API-Operationen von SQL Access in RDA-Aufrufe
Wie RDA so ist auch die erste Version von SQL Access auf die Interaktion mit einem SQL-DBS pro Transaktion beschränkt. In künftigen Versionen wird diese Restriktion jedoch aufgehoben. Weiterhin wird daran gearbeitet, die RDA-Funktionalität auf Basis von TCP/IP zu realisieren sowie den SQL-Sprachumfang zu erweitern (in Anlehnung an den SQL-92-Standard).
[52] Bei Festlegung von SQL Access V1 war RDA noch kein ISO-Standard. Vielmehr gingen die Erfahrungen mit SQL Access in beträchtlichem Maße in die RDA-Standardisierung ein.
[53] Direkt in eine Programmiersprache eingebettete SQL-Anweisungen können wie Anweisungen der jeweiligen Sprache verwendet werden (mit einem Präfix EXEC SQL versehen); ihre Übersetzung erfolgt i.a. durch spezielle Prä-Compiler. Bei einem Call-Level-Interface werden SQL-Anweisungen im Rahmen externer Bibliotheksaufrufe spezifiziert, die erst beim Binden des ausführbaren Programmes aufgelöst werden. Damit wird eine Portierung von Anwendungen ohne Neuübersetzung ermöglicht. Andererseits wird die direkte Einbettung i.a. als benutzerfreundlicher angesehen. Gelegentlich werden APIs mit direkter Einbettung auch als syntaktische APIs und Call-Level-Interfaces als prozedurale APIs bezeichnet [GR93].