Feuervogel zur Datenverwaltung
Artikel erschienen in Swiss IT Magazine 2006/06
Borland hat im Juli 2000 einen vorsichtigen Vorstoss in Richtung Open Source gewagt und die Quellen der damals aktuellen Version 6 des Interbase Database Server als Open Source freigegeben. Dies, nachdem sich Borland ernsthaft überlegt hat, die Weiterentwicklung ihres Datenbankservers einzustellen. Schnell fand sich ein Kernteam, das damit begann, die unter der Interbase Public License stehenden Quellen zu durchforsten, Bugfixes sowie Verbesserungen anzubringen und die Software unter dem Namen Firebird veröffentlichte. Leider war damit der Open-Source-Ausflug von Borland auch schon wieder zu Ende. Denn man entschloss sich, Interbase doch weiterzuentwickeln, und verzichtete, im Gegensatz beispielsweise zu Sun mit Open-Office.org, darauf, mit der Community zusammenzuarbeiten. Seitdem arbeitet Borland wieder hinter verschlossenen Türen an der Datenbank weiter.
Die Firebird-Entwickler versuchen zwar, eine möglichst weitgehende Kompatibilität zu Interbase zu erhalten, bauen aber gleichzeitig neue Features und Verbesserungen in den Code mit ein. So war die Version 1.0 von Firebird praktisch ein Interbase mit einigen wenigen Bugfixes. Das erste grosse, eigenständige Release war Version 1.5, welches noch in Version 1.5.3 aktuell ist. Es unterscheidet sich zu Version 1.0 im wesentlichen dadurch, dass der C-Code von Interbase auf C++ portiert wurde.
Der nächste grosse Release, Version 2.0, steht kurz vor der Vollendung. Die Entwickler beschränken sich dabei vor allem auf die Verbesserung von Interna. Ausser einer allgemeinen Performance-Steigerung werden einige bekannte Einschränkungen – etwa, dass einzelne Tabellen nicht grösser als 35 GB sein dürfen – aufgehoben. Es kommen aber auch neue Funktionen wie Derived Tables, neue Mechanismen zum Backup/Restore einer Datenbank, eine neue Garbage Collection, die Möglichkeit, Datenbanken auf RAW-Devices zu speichern, zuverlässigerer Code zum Herunterfahren einer Datenbank und experimenteller Support für 64-Bit-Plattformen hinzu. Zudem werden die verschiedenen Betriebsmodi, insbesondere der «Super Server», weiter verbessert.
Parallel dazu wird bereits fleissig an der nächsten Version mit dem Codenamen «Vulcan» gearbeitet. «Vulcan» basiert zwar in Grundzügen auf dem C++-Code von Version 2, ist aber eine fast vollständige Neuimplementierung einiger Konzepte: Verfeinertes (und damit performanteres) Multithreading, flexiblere Möglichkeiten, den Server zu konfigurieren, interne DSQL-Implementierung, ein verbessertes Sicherheitsmodell und eine erweiterte Portabilität auf verschiedene Plattformen, insbesondere 64-Bit-Systemen, sind die wesentlichen Punkte. Zur Zeit läuft Firebird auf Windows, Linux, MaxOS X, Free- und OpenBSD,
HP-UX und AIX.
Firebird unterstützt aktuell ANSI SQL 99 sowie einige Teile von SQL 2003 und bietet dem Programmierer somit auch modernere Erweiterungen der Sprache. Die Unterstützung von SQL 2003 soll in «Vulcan» nochmals deutlich ausgebaut werden. Weiter unterstützt Firebird Stored Procedures, User Defined Functions (UDF), referentielle Integrität und Trigger. Grundsätzlich werden in Firebird alle Datenbankoperationen über Transaktionen durchgeführt. Transaktionen sind immer atomar, was bedeutet, dass sie entweder jeweils als Ganzes ausgeführt werden oder gar nicht. Firebird bietet ausserdem die Möglichkeit, sogenannte Schattendatenbanken zu führen (Database Shadowing). Ein «Shadow» ist eine Echtzeitkopie einer Datenbank, welche unsichtbar bleibt, bis sie automatisch oder manuell freigeschaltet wird. Somit kann man Datenbank und «Shadow» auf verschiedenen Speichermedien halten und etwa bei einem Plattencrash sehr schnell die Kopie online schalten. Replikation beherrscht Firebird grundsätzlich, verfügt aber nicht über die dazu nötige Engine. Allerdings wird mit der sehr jungen FIBRE (FireBird Replication Engine) bereits an einer freien Ergänzung gearbeitet, und zudem steht mit dem IBReplicator eine geschlossene Alternative zur Verfügung. Clustering und Load Balancing beherrscht Firebird dagegen noch nicht.
Zugriffstechnisch bietet Firebird neben den klassischen Benutzerberechtigungen auch noch sogenannte Rollen. Eine Rolle ist ein Paket von Berechtigungen. Ein einzelner Benutzer kann also mit einem Account über verschiedene Rollen – und somit verschiedenen Rechten – auf die Datenbank zugreifen. Die Accountdaten (Login und Passwort) werden in einer speziellen Datenbank (security.fdb) gespeichert. Die Zugriffsrechte selbst werden in der jeweiligen Datenbank abgelegt.
Eine interessante Abwandlung von Firebird ist Fyracle, der sogenannte Oracle-mode für Firebird. Auf der Suche nach einer Alternative zu den grossen kommerziellen Datenbanken erwies sich Firebird als die Datenbank, die bezüglich Kompatibilität Oracle am besten ersetzen kann. Die fehlenden Features wurden mit Fyracle nachgerüstet – etwa PL/SQL und Java als Sprache für Stored Procedures – und fliessen dank einem regen Code-Austausch zwischen beiden Projekten auch zu Firebird zurück. Natürlich beherrscht Fyracle wie der grosse Bruder nicht die Enterprise-Funktionen wie Replikation oder Clustering einer Oracle-Instanz. Dies spielt aber aus Sicht der Applikationen keine Rolle, da es nur darum geht, dass sie nicht merken, dass sie nicht mit einer «echten» Oracle sprechen.
Gregor Longariva (longariva@softbaer.de) ist Solaris-Administrator am Rechenzentrum der Universität Erlangen-Nürnberg und Spezialist für die Unix-Betriebssysteme Solaris, OpenBSD und Linux.