Der SQL Server der Firma Sybase ist ein leistungsfähiges relationales Datenbankmanagementsystem, das für verschiedene Betriebssysteme angeboten wird. Das System hat eine Client/Server-Architektur. Als Clients können die mitgelieferten Programme des SQL Toolsets oder auch eigene Applikationen benutzt werden. Selbst erstellte Applikationen können entweder über Embedded SQL oder über die Open Client Library mit dem SQL Server kommunizieren [Syb95].
Bei Applikationen, die Embedded SQL verwenden, werden die SQL Anweisungen für den SQL Server direkt in den Quellcode als Funktionsaufrufe integriert. Bevor der Quellcode mit einem Standard-Compiler übersetzt werden kann, mußzunächst ein Precompiler die Embedded SQL Anweisungen in Funktionsaufrufe der Open Client Library umsetzen. Der Vorteil bei dieser Vorgehensweise ist, daßdas Anwendungsprogramm leichter zu schreiben und zu überprüfen ist. Allerdings kann man nicht alle Funktionen der Open Client Library nutzen.
Der Quellcode der Anwendungsprogramme, die direkt die Open Client Library verwenden, mußnicht erst vom Precompiler behandelt werden. Ein Client, der diese Bibliothek verwendet, kann auch mit anderen Servern als dem SQL Server kommunizieren. Die Server müssen dafür die Open Server Library verwenden, die eine Programmierschnittstelle für beliebige Serverprogramme bereitstellt. Mit den Bibliotheken lassen sich also nicht nur Clients für den Sybase SQL Server erstellen, sondern auch für andere Serverapplikationen.
Die Programmstruktur eines Applikationsprogramms für den SQL Server hat folgenden Aufbau:
Interessant für die Problemstellung dieser Diplomarbeit ist Punkt 5. Die Programmvariablen haben dabei Typen, die in der Open Client Library definiert sind. Das Binden der Daten aus einem Tupel der Ergebnisrelation an Programmvariablen erfolgt durch einen Funktionsaufruf, bei dem die Speicheradressen der Variablen, der Typ der Variablen und ein Feldindex für das Tupel übergeben werden. Da es sich hier nur um einfache Relationen handelt, werden komplexe Datentypen nicht unterstützt.
In Verbindung mit einem Open Server gibt es auch einen Notifikationsmechanismus.
Die Notifikation wird im Clientprogramm durch sogenannte Callback-Funktionen
realisiert. Eine Callback-Funktion ist eine vom Benutzer zur Verfügung gestellte
Funktion, die bei bestimmten Ereignissen aufgerufen wird. Auch die Funktionen zur Fehlerbehandlung
(Punkt 2 in der Programmstruktur) sind Callback-Funktionen. Die Callback-Funktion
für Notifikation wird immer dann aufgerufen, wenn der Server eine Notifikationsnachricht
gesendet hat. Diese Nachricht kann im Gegensatz zu den anderen Nachrichten, wie
z.B. für die Ergebnisübermittlung, zu jeder Zeit eintreffen. Sofern das Betriebssystem
dies unterstützt, wird bei Empfang einer Notifikationsnachricht ein Interrupt
ausgelöst und sofort die entsprechende Funktion aufgerufen. Ansonsten mußin regelmäßigen Abständen
der Kommunikationskanal nach neuen Nachrichten überprüft werden. Der Nachteil
bei der Lösung mit Interrupt ist, daßinnerhalb der zugehörigen Callback-Routine
die Daten des Hauptprogramms nicht einfach geändert werden können, da es sonst beim
Wiedereinstieg in das Hauptprogramm zum Programmabsturz durch fehlerhafte Daten kommen kann.
Christoph Quix