Dem Klassiker und Pionier unter den relationalen Datenbanksystemen drohte in den letzten Jahren die unscheinbare Rolle einer bloßen Dreingabe zu Borlands Entwicklungstools wie Delphi oder JBuilder. Seit der im Sommer 2000 erschienenen Version 6.0 schmückt sich Interbase mit dem schick gewordenen Attribut Open Source. Wird es der freien Version gelingen, verlorenen Boden wieder gut zu machen und unter Linux - vielleicht sogar gestützt durch Borlands Kylix - die angestammten Systeme MySQL und PostgreSQL ernsthaft in Bedrängnis zu bringen?
Standardkonformes Verhalten erwünscht
Wie viele andere Konkurrenzprodukte ist Interbase zunächst nur ein relationales Datenbanksystem in Client-Server-Architektur mit SQL-Unterstützung. Nicht ganz alltäglich ist jedoch die Unterstützung des gesamten Basisumfangs des ANSI-SQL/92-Standards sowie der meisten erweiterten SQL-Möglichkeiten - hier haben viele andere verbreitete Datenbanksysteme auch heute noch beträchtliche Lücken.
Die solide Implementierung schlägt sich in der Feature-Liste nieder: Neben Tabellen lassen sich Ansichten (Views) definieren, die einen transparenten Zugriff auf einen Teil einer Tabelle erlauben. Die Unterstützung von Domains erleichtert die Definition von Feldern mit eingeschränkten Wertebereichen oder ermöglicht es, an zentraler Stelle Vorgaben für die Datentypen sich ähnelnder oder zusammengehöriger Felder zu treffen. Eine Besonderheit ist die Unterstützung von Arrays in bis zu 16 Dimensionen. Wird ein Feld als Array definiert, lassen sich in ihm ganze Matrizen speichern - eine nicht nur für mathematische Anwendungen sicherlich interessante Möglichkeit.
Mehr Features
Um zu gewährleisten, dass die gespeicherten Daten in sich schlüssig sind, überprüft Interbase die Daten anhand ihrer referenziellen Integrität. Hierzu müssen die Beziehungen (Relationen) zwischen den Tabellen auf Datenbankebene festgelegt werden. Außerdem lassen sich für jede Spalte einer Tabelle gewisse Beschränkungen (Constraints) definieren, die zusätzliche einfache Überprüfungen bei Einfügung oder Änderung eines Datensatzes ermöglichen.
Noch wesentlich mächtigere Möglichkeiten ergeben sich durch den Einsatz von Triggern: Für die Ereignisse Neuer Datensatz, Datensatz geändert und Datensatz gelöscht in einer Tabelle sind spezielle Routinen in der Datenbank definierbar, die komplexe Prüfungen oder fast beliebige Aktionen durchführen.
Die Routinen für solche anwenderdefinierten Routinen werden in derselben Sprache verfasst, die auch für Stored Procedures verwendet wird, Borland nennt sie schlicht "Interbase procedure and trigger language". Gespeicherte Prozeduren sind - wie von vergleichbaren Datenbanksystemen bekannt - Unterprogramme. Sie werden von der Datenbank selbst ausgeführt und können auch ganze Tabellen als Antwort liefern.
Die verwendete Sprache erinnert an eine Mischung aus SQL und Pascal und ist sehr mächtig: So stehen ihr viele eingebaute Hilfsfunktionen für allerlei Anwendungen zur Verfügung; selbstverständlich kann diese Funktionsbibliothek auch durch Zusatzmodule um eigene Funktionen erweitert werden. Unabhängig davon, ob man Datenbanken nun manuell oder über Stored Procedures ändert: Alle Operationen werden im Zusammenhang einer Transaktion durchgeführt.
Durch den Einsatz von Zwei-Phasen-Commits werden sogar verteilte Datenbanken unterstützt. Interbase verwendet hierbei eine Multi-Generational Architecture (MGA), die eine hohe Geschwindigkeit speziell bei gleichzeitigem Zugriff durch viele Anwender sicherstellen soll.
Ein weiteres interessantes Merkmal sind die Ereignisse (Events): Innerhalb einer Stored Procedure kann mit dem Kommando POST_EVENT ein Ereignis ausgelöst werden. Anwendungen, die sich zuvor für dieses Ereignis registriert haben, erhalten nun eine entsprechende Benachrichtigung. Das ist eine interessante Lösung Last von der Datenbank zu nehmen. Um beispielsweise auf Änderungen an einer Tabelle reagieren zu können, mussten die Anwendungen bisher selbst die Datenbank periodisch abfragen.
Ibase Admin, ein Web-basiertes Administrationstool.