19 Existierende Mehrrechner-Datenbanksysteme

19.6 Sybase

Sybase wurde 1986 gegründet und konnte sich als relationales DBS v.a. im Unix-Markt etablieren. Von Beginn an wurde konsequent eine Client/Server-Transaktionsverarbeitung unterstützt. Mit dem 1993 eingeführten System 10 wird eine Ausweitung des Client/Server-Ansatzes auf Unternehmensebene (enterprise client/server computing) angestrebt [Co93]. Damit soll nicht nur im lokalen Umfeld, sondern auch in geographisch verteilten Umgebungen eine Client/Server-Transaktionsverarbeitung erfolgen. Weiterhin müssen Anwendungen und Datenbanken anderer Unternehmensbereiche bzw. von zentralen Unternehmens-Servern (meist Großrechner) eingebunden werden. Zudem muß eine sehr hohe Leistungsfähigkeit, Verfügbarkeit und Erweiterbarkeit unterstützt werden. Dies soll durch System 10 mit einer Reihe von neuen Komponenten erreicht werden, insbesondere dem OmniSQL-Gateway, dem Replication Server sowie dem Navigation Server.

Abb. 19-6: Einsatzumgebung von Sybase

Die beim Einsatz von Sybase beteiligten Systemkomponenten sind in Abb. 19-6 gezeigt. Dabei können Anwendungen und Tools auf Client-Seite auf DB-Server und Anwendungen auf Server-Seite zugreifen. Sybase-Tools können quasi direkt mit dem Sybase-DBS, SQL Server genannt, zusammenarbeiten, da sie bereits entsprechende Kommunikationsfunktionen enthalten. Ansonsten erfolgt die Interoperabilität über von Sybase unterstützte Client/Server-Interfaces, mit denen die Zusammenarbeit in heterogenen Umgebungen ermöglicht wird. Zu den Client/Server-Schnittstellen zählen:

Sybase bot als erstes System das Konzept der gespeicherten Prozeduren (stored procedures) an, um Anwendungsfunktionen im DBS zu verwalten. Diese Prozeduren werden vollständig in der Sprache TransactSQL erstellt, welche neben SQL-Befehlen auch lokale Programmvariablen und allgemeine Kontrollstrukturen (IF, WHILE etc.) unterstützt. Der Aufruf einer solchen Prozedur erfolgt in einer Anweisung, einem sogenannten Datenbank-RPC. Innerhalb der Prozeduren ist es möglich, weitere "stored procedures" aufzurufen, die zu einem anderen SQL-Server gehören können. Damit wird das Konzept der programmierten Verteilung (Kap. 11.2) nicht nur zwischen Client und Server, sondern auch zwischen Server-Rechnern unterstützt.

Nachteilig ist, daß Sybase noch kein transparentes Zwei-Phasen-Commit anbietet, sondern die verteilte Commit-Bearbeitung weitgehend von den Anwendungsprogrammen zu kontrollieren ist. Insbesondere fungiert die Anwendung als Commit-Koordinator und muß beide Commit-Phasen durch explizite Aufrufe an die an der Transaktion beteiligten Server initiieren. Wird einer der Server bei der Commit-Behandlung "vergessen" oder ihm ein falsches Commit-Ergebnis mitgeteilt, ergeben sich inkonsistente Datenbankzustände! Ein weiteres Problem ist, daß die Ausführung der Commit-Koordinierung auf unsicheren Client-Rechnern (Workstations, PCs) stattfindet. Um zumindest den aktuellen Stand des Commit-Protokolls auf einer "sicheren" Seite zu vermerken, unterstützt Sybase die Einrichtung eines Commit-Services auf einem der Server. Allerdings liegt es wieder in der Verantwortung des Programmierers, diesen Service einzurichten und ihm das Commit-Ergebnis mitzuteilen (der Commit-Service protokolliert daraufhin die Commit-Entscheidung). Nur im Fehlerfall (Server-Ausfall, Timeout) wenden sich die involvierten Datenbank-Server an den Commit-Service, um den Zustand der Transaktion zu erfragen.
Das skizzierte Commit-Protokoll ist zudem auf Sybase-DBS beschränkt. Da Sybase SQL-Server die XA-Schnittstelle unterstützt, kann jedoch durch Nutzung eines XA-konformen TP-Monitors ein für die Anwendungen transparentes Commit-Protokoll erreicht werden.

Das neue Sybase OmniSQL-Gateway vereint die Funktionalität von Open Server sowie mehreren Gateways (zu DB2, Oracle, Rdb etc.). Damit wird es möglich, in einer SQL-Anweisung auf Daten mehrerer unabhängiger Datenbanken zuzugreifen, insbesondere um verteilte Join-Berechnungen vorzunehmen. Im OmniSQL-Gateway wird dazu ein globaler Katalog verwaltet, der den Benutzern ein hohes Maß an Verteilungstransparenz bietet. Mit dem globalen Katalog wird nicht nur die Datenlokation der einzelnen Objekte verborgen, sondern auch eine Angleichung unterschiedlicher Namenskonventionen und Datentypen vorgenommen. Damit wird die Funktionalität eines föderativen DBS erreicht. Eine Beschränkung besteht darin, daß der globale Katalog nicht mit den lokalen Kataloge der einzelnen DBS synchronisiert ist, so daß der Administrator durch Anwendung eines Tools lokale Schemaänderungen in den globalen Katalog bringen muß. Zudem sind Änderungen auf eine Datenbank beschränkt. Da das OmniSQL-Gateway an seiner Anwenderschnittstelle TransactSQL anbietet, werden auch globale gespeicherte Prozeduren unterstützt, in denen auf mehrere Datenbanken zugegriffen werden kann.

Eine weitere Neuerung in System 10 stellt der Replication Server dar, mit dem eine Kopie der Datenbank (bzw. Teilen davon) an einem entfernten Ort geführt werden kann. Die Aktualisierung der Kopie erfolgt asynchron durch Übertragung der Log-Daten. Dies ermöglicht eine schnelle Katastrophen-Recovery, indem beim Ausfall des Primärsystems die Verarbeitung mit der DB-Kopie fortgeführt wird. Im Normalbetrieb können lesende Anfragen, die nicht den absolut neuesten DB-Zustand benötigen, auf der Kopie arbeiten. Somit lassen sich komplexe Anfragen ohne Beeinträchtigung von OLTP-Anwendungen ausführen.

Der Navigation Server schließlich erlaubt eine parallele DB-Verarbeitung auf einem eng oder lose gekoppelten Parallelrechner. Dabei wird bei loser Kopplung ein Shared-Nothing-Ansatz verfolgt. Der Navigation Server ist eine dedizierte Komponente, die komplexe Anfragen in Teilanfragen zerlegt, die von mehreren Instanzen des Sybase SQL Servers parallel bearbeitet werden. Neben Anfragen können jedoch auch OLTP-Anwendungen auf derselben Datenbank bearbeitet werden. Die Festlegung der Datenpartitionierung erfolgt durch ein spezielles Tool (Configurator), das u.a. Angaben zum erwarteten Lastprofil als Eingabe verlangt. Es kann jedoch auch die aktuelle DB-Verarbeitung überwachen und Änderungen in der DB-Verteilung empfehlen. Der Navigation Server wurde zusammen mit NCR entwickelt und ist daher zunächst auf NCR-Parallelrechnern lauffähig.