Open Source

Freie Datenbanken im Vergleich

06.10.2008 von Markus Franz
Relationale Datenbanken bilden das Rückgrat jeder modernen Geschäftsanwendung. Dabei machen Open-Source-Plattformen wie MySQL oder PostgreSQL in Spezialbereichen den proprietären Produkten zunehmend Konkurrenz.

Relationale Datenbanken sind die wichtigste Komponente einer modernen mehrschichtigen Software: Sie bilden die zentrale Speicherstelle für Informationen jeder Art. Auf Tabellen und deren Verknüpfungen untereinander lassen sich beliebige Daten der realen Welt abbilden - Rechnungen, Fahrpläne oder Bestellungen im Flugzeugbau ebenso wie Web-basierende Wiki-Systeme. Ein deutlicher Trend der letzten Jahre ist, dass sich in den Unternehmen freie Lösungen verbreiten.

Besonders der schwedische Anbieter MySQL hat sich im Umfeld von Web-Anwendungen einen Namen gemacht - und wurde von Sun Microsystems übernommen. Profitiert die Datenbank bereits vom Lamp-Stack (Linux, Apache, MySQL und PHP etc.), wird sie mit der Akquisition auch in das Zentrum der Java-Welt vorstoßen und sich hier in den nächsten Jahren noch stärker als bisher etablieren. Sun hat bereits angezeigt, dass die eigenen Produkte wie die Entwicklungsumgebung NetBeans oder der Applikations-Server GlassFish auf die reibungslose Verbindung mit MySQL getrimmt werden.

Neben PostgreSQL stehen so zwei Open-Source-Produkte mit jeweils hohem Anspruch der kommerziellen Konkurrenz von Microsoft, Oracle und IBM gegenüber. Zahlreiche andere freie Projekte haben ebenfalls interessante Lösungen entwickelt, so dass sich ein aktueller Blick auf den Markt in jedem Fall lohnt. Welche freien Datenbanken für welchen Zweck geeignet sind und wo sie noch Schwächen haben, wird im Folgenden aufgezeigt.

Auswahl einer Datenbank

Open-Source-Datenbanken zeigen sich zunächst als attraktive Alternative zu kostspieligen Lösungen von Oracle, Microsoft oder IBM. Bevor man aber den Einsatz einer freien Software plant, empfiehlt sogar das Bundesamt für Sicherheit in der Informationstechnik in einem Strategiepapier eine genaue Identifikation der Anforderungen an das System. Dabei kommt es zunächst darauf an, welche Datenmengen verarbeitet werden sollen: Ab mehreren Terabyte kommt man kaum an proprietären Lösungen vorbei. Eine kleine Web-Anwendung dagegen kann mit einer willkürlichen Auswahl problemlos leben.

Die spätere Skalierbarkeit des Systems wird entscheidend von der Betriebssystem- und Hardwareplattform beeinflusst, auf der eine Datenbank bereitgestellt wird. IBM zum Beispiel unterstützt neben der x86-Architektur auch den Mainframe. Oracle selbst hat vor wenigen Wochen sogar einen eigenen Hardware-Cluster mit integrierter Datenbank vorgestellt. Nur Microsoft bindet den Kunden an Windows - alle anderen Anbieter lassen im Wesentlichen freie Hand bei der Wahl des Betriebssystems. Insbesondere IBM und Oracle bieten die Datenbank-Server auch für zahlreiche Unix-Derivate an. Linux, Mac OS und Solaris gehören bei allen Anbietern zum Standard - sowohl für 32 Bit als auch für 64 Bit.

Die Benutzerverwaltung und ein ausgefeiltes Rechte-Management sind inzwischen Bestandteil eines jeden modernen Datenbank-Servers - hier gibt es kaum noch große Unterschiede. Deutlicher divergieren hingegen die Features zur Verfügbarkeit: Hier treffen in der Datenbankwelt sehr unterschiedliche Konzepte für Clustering und Backup auf den Kunden. Nicht einfacher machen es die diversen Angebote von Drittherstellern. Zum Schutz der Integrität muss eine ausgereifte Datenbank unbedingt über Transaktionen verfügen, die den Acid-Anforderungen genügen. Acid beschreibt gewünschte Transaktionseigenschaften und steht für Atomicity (Atomarität), Consistency (Konsistenz), Isolation (Isoliertheit) und Durability (Dauerhaftigkeit).

In kleinen und mittleren Unternehmen wird es oft versäumt, die Anforderungen an eine Datenbank sauber zu dokumentieren und regelmäßig den aktuellen Bedarf mit den eingesetzten Produkten beziehungsweise verfügbaren Lösungen zu vergleichen. Ein strukturierter Prozess ist hier enorm wichtig, wenn die IT-Landschaft gleichmäßig mit dem Unternehmen wachsen soll. Die Frage von proprietärer versus offener Lösung sollte auf keinen Fall unter dem Druck von Lizenzkosten, sondern anhand klar analysierter Fakten beantwortet werden.

Open Source für Datenbanken

Oracle, Microsoft und IBM besetzten jahrelang fast alleine den Markt für Unternehmensdatenbanken. Inzwischen hat sich das Open-Source-Modell auch hierzulande durchgesetzt, und diverse Old Player der IT-Branche arbeiten verstärkt mit den Communities zusammen. Nicht zuletzt haben Open-Source-Datenbanken Oracle, Microsoft und IBM dazu gezwungen, Einstiegsvarianten mit limitierten Features kostenfrei abzugeben. Ein Blick auf Open-Source-Datenbanken lohnt sich bei der Prüfung eines neuen Systems in jedem Fall.

Zunächst müssen sich die Unternehmen durch die undurchsichtige Lizenzpolitik der Open-Source-Anbieter kämpfen, denn MySQL, PostgreSQL, MaxDB, Ingres, Firebird und Derby werden unter verschiedenen Lizenzen vertrieben. MySQL und MaxDB haben beide ein duales Lizenzmodell: Man kann hier zwischen der GPL und einer kommerziellen Lizenz wählen, die dann besseren Support enthält. Hinzu kommt noch, dass MySQL spezielle Enterprise-Produkte im Portfolio hat oder plant, die sich dann auch in den Features von der freien Community Edition unterscheiden.

PostgreSQL steht unter der BSD-Lizenz. Die Derivate EnterpriseDB beziehungsweise einige Angebote von Sun, das neben MySQL auch PostgreSQL unterstützt, haben im Einzelfall spezielle Lizenzen für die Software. Wesentlich schwieriger sieht es neben den Lizenzen mit der Gewährleistung für Datenbanken aus: Hier punkten vor allem MySQL und MaxDB, da hinter diesen große Unternehmen mit professionell organisierten Strukturen stehen.

Dies zahlt sich auch beim Support aus: Für alle großen Open-Source-Datenbanken gibt es Angebote im Stil monatlicher oder jährlicher Subskriptionen. Diese Abonnements beinhalten nicht nur Updates und Garantien für Lebenszyklen, sondern auch die unterschiedlich schnelle Hilfe bei Problemen über den Support des Herstellers. Für MySQL bietet sich hier Sun, für PostgreSQL das Unternehmen EnterpriseDB besonders an.

Anbindung an Business-Tools

Schwieriger wird es mit Open-Source-Datenbanken, wenn man als Entscheider zum Beispiel Business-Intelligence-Software oder andere Tools für die zentrale Datenbank im Unternehmen angeschafft hat: Meist sind diese nur schwer oder gar nicht kompatibel zu den freien Datenbanken. Proprietäre Anbieter haben hier immer noch die Nase deutlich vorn. Die Wartung und Administration der freien Lösungen geht aber ebenso einfach vonstatten wie bei Microsoft, Oracle oder IBM: Neben kommandozeilenorientierten Programmen helfen grafische Management-Werkzeuge, über die sich der Server bequem warten lässt.

Die Entwicklungsabteilung, in der eigene IT-Anwendungen geplant werden, ist meist das größte Hindernis beim Einsatz einer neuen Datenbank - besonders, wenn diese aus dem Open-Source-Lager stammt. Hier gibt es zunächst sehr menschliche Vorbehalte wie unzureichendes Wissen oder Bedenken gegen die Qualität der Software - diese Einwände sollte man nicht unterschätzen. Gleichzeitig müssen sich Applikations-Server und Entwicklungsumgebung sowie Programmiersprache reibungslos mit der neuen Plattform verstehen.

Zu guter Letzt muss die Auswahl einer geeigneten Datenbanksoftware auch unter dem Aspekt der Migration betrachtet werden: Wie kommen die Daten vom alten System auf die neue Maschine? Hier kann die Anbindung an die Backup-Lösung ein effizienter Ausweg für die Konvertierung der Datenbank sein: Wenn sich das Backup-Tool mit der alten und neuen Software gleichermaßen gut versteht, lassen sich die Backup-Daten einfach als Ausgangsmaterial verwenden.

Entscheidungskriterien:

Auf welcher Hardware unter welchem Betriebssystem läuft der Datenbank-Server?

Benötige ich eine Anbindung an spezielle BI-Software?

Wie werde ich die Datenbank administrieren und warten?

Möchte ich Cluster bilden und Tausende Benutzer anlegen?

Welche Lizenzen und Betriebskosten kommen in Frage?

Haben meine Entwickler Know-how zu der Datenbank?

Wo erhalte ich Support und Updates für die Software?

MySQL: Das Objekt der Begierde

Sun hat sich mit MySQL den bekanntesten Vertreter quelloffener Datenbanken gekauft. MySQL ist besonders im Umfeld von Web-Anwendungen stark: Neben einfachem Clustering lässt sich das System sehr unkompliziert administrieren und ist in wenigen Minuten auf einem Server aufgesetzt. Eine Stärke liegt auch in der Anbindung an Programmiersprachen und Plattformen: Für Java, PHP, Python, Perl, Ruby und C++ sowie C# gibt es unzählige hochwertige Bibliotheken, die eine Verbindung zum Server ermöglichen.

MySQL ist für Windows, Linux, Solaris, Netware, diverse Unix-Derivate und auch für Embedded-Plattformen verfügbar. Die Stärke liegt aber im Zusammenspiel mit Linux: In fast jeder Distribution ist MySQL als optimierte Version enthalten. Gleichzeitig installiert man einfach die MySQL-GUI-Tools, die ein komfortables grafisches Umfeld für die Wartung des Servers anbieten. Einzig beim Backup schwächelt MySQL: Hier benötigt man ein externes Programm, zum Beispiel von Zmanda. Mit der MySQL Workbench gibt es aber neuerdings sogar - wenn auch zunächst nur für Windows - eine Entwicklungsumgebung, mit der komplexe Entity-Relationship-Diagramme direkt auf dem Server abgebildet werden.

Die zahlreichen grafischen Tools für MySQL arbeiten sehr gut mit der Datenbank zusammen.

Die Hauptkritik erfährt MySQL jedoch aufgrund seiner mangelhaften oder fehlerhaften Unterstützung für richtige Fremdschlüssel, Transaktionen, Stored Procedures, Replikation als Master/Slave und für einige Spezial-Features wie Materialized Views. Referentielle Integrität, ein Kerngedanke jeder relationalen Datenbank, ist bei MySQL nicht selbstverständlich. Den MySQL-Anwender stört permanent die Auswahl der richtigen Storage Engine, da neben InnoDB und MyISAM eventuell nur eines der zahlreichen anderen Plug-ins die eigenen Anforderungen erfüllt.

Besser soll das erst mit MySQL 5.1 beziehungsweise Version 6.0 werden, wenn den Angaben zufolge die neue Storage Engine "Falcon" alle Probleme löst. Zu hoffen ist auch, dass MySQL dann endlich vollständig kompatibel zum Unicode-Standard ist und eine Möglichkeit bietet, effizient mit XML-Dokumenten umzugehen. Zwar ist MySQL in vielen Features verkümmert, dafür kann die Datenbank aber bei der Performance punkten. Die fehlenden Funktionen spiegeln sich definitiv in der Geschwindigkeit des Servers wieder - kein anderes Produkt ist schneller.

Plus/Minus MySQL

+ Sehr einfache Wartung und Pflege des Systems;

+ hohe Geschwindigkeit und einfaches Clustering;

+ viele anspruchsvolle Tools für Backup und Administration;

+ perfekte Integration in IDEs und Programmiersprachen.

- Mangelhafte Unterstützung für Transaktionen/Trigger;

- keine Verarbeitung von XML- und GIS-Daten;

- die Entwicklung der neuen Storage Engine stockt.

PostgreSQL: Viel mehr als Relationen

Der Star neben der MySQL-Community ist zweifelsohne PostgreSQL. Die Entwickler beschreiben ihr Produkt selbst als "The world's most advanced database". Dieser Anspruch nährt sich daraus, dass PostgreSQL besonders auf die korrekte und vollständige Implementierung der SQL-Standards setzt. Ursprünglich wurde das Projekt an der Universität von Berkeley gestartet und später als Ingres bekannt. PostgreSQL hat sich dann nach einigen Umwegen als freies Kind auf Basis des Ingres-Code entwickelt.

PostgreSQL gibt es für fast alle Unix-Derivate sowie für Linux. Auf Windows ist der Betrieb immer noch eine schwierige Angelegenheit - hier sollte man von einem produktiven Einsatz absehen. PostgreSQL ist in den meisten Linux-Distributionen ebenfalls mit einer sinnvollen Standardkonfiguration an Bord.

Als eine der wenigen Open-Source-Datenbanken im Testfeld hält sich PostgreSQL an den ANSI-SQL-Standard. So können kompatible Anwendungen unabhängig vom Datenbank-Server ohne großen Mehraufwand integriert werden. Die Schnittstellen sind bei PostgreSQL traditionell gut zu C und den Nachfolgern C++ und C# sowie Java und PHP. Für Python und Ruby sieht es da nicht so gut aus - hier ist der Support für PostgreSQL noch recht instabil.

PhpPgAdmin ist eines der wenigen ausgereiften Tools, um einen PostgreSQL-Server zu verwalten.

Besonders verlockend ist PostgreSQL aufgrund der vielen Enterprise-Features, die man sonst nur bei Oracle & Co. findet: Neben zahlreichen Index-Typen kann man Funktionen in der eigenen Sprache PL/SQL schreiben. Diese ist dem Oracle-Dialekt sehr ähnlich. Ein ausgefeiltes internes Versionssystem ermöglicht die volle Unterstützung für Acid-Transaktionen, was insbesondere bei Buchungssystemen angenehm auffällt. Dazu kommen zum Beispiel auch Trigger und verschiedene, komplexe Datentypen wie Arrays in Tabellenzellen oder PostGIS für Geosysteme. PostgreSQL kann auch problemlos mit XML-Daten umgehen und diese in einer Datenbank ablegen.

Eigene Objekte und Datentypen sowie Two-Phase-Commit vervollständigen das gute Bild von PostgreSQL. Das System eignet sich damit im Gegensatz zu MySQL nicht nur für Web-Anwendungen, sondern auch für große Unternehmensdatenbanken mit Tausenden Geschäftsdatensätzen. Einen Nachteil bildet jedoch die Geschwindigkeit: PostgreSQL gehört nicht gerade zu den schnellsten Systemen.

Auch die Wartung der Datenbank ist für Umsteiger von MySQL oder Oracle eher gewöhnungsbedürftig: Es gibt zwar verschiedene Template-Tabellen und ein feingranulares Benutzer-Management, dafür aber kaum grafische Admin-Tools. Wer also auf die Kommandozeile verzichten will oder muss, kann nur auf wenige Java- oder Web-gestützte Tools zurückgreifen.

Plus/Minus PostgreSQL

+ Exakte Umsetzung der SQL-Standards (ANSI-SQL);

+ einfacher Umstieg von Oracle durch PL/SQL;

+ umfangreiche Features (Acis-Transaktionen, GIS, XML).

- Komplexere Administration und weniger Tools;

- Anbindung an spezielle Frameworks schwierig.

Ingres, Firebird und MaxDB: Die drei Stiefkinder

Neben den Branchengrößen MySQL und PostgreSQL gibt es noch drei weitere wichtige Vertreter offener Datenbanken, die sich mit den Jahren etabliert haben: Ingres, Firebird und MaxDB. Alle Projekte sind geprägt durch eine bewegte Geschichte, die manchmal gleich durch mehrere Softwarehäuser geführt hat.

Firebird

Wie bereits erwähnt, stammt PostgreSQL vom Ingres-Projekt ab. Das Projekt diente als Basis für eine Vielzahl von Datenbanken, unter anderem auch für Microsofts SQL Server. Heute wird Ingres von der Ingres Corporation vertrieben und weiterentwickelt. Als ältester Vertreter hebt sich Ingres heute nur noch wenig von PostgreSQL ab. Die Feature-Liste ist sehr lang, es gibt praktisch nichts, was mit dieser Datenbank nicht geht. Auch XML und GIS-Support sind standardmäßig enthalten. Insgesamt sollte man aber eher vom Ingres-Einsatz absehen, da das Projekt eingeschlafen wirkt, es gibt keine breite Community. Die Administration ist sehr aufwändig, und es existieren kaum externe Tools. Ein Punkt macht Ingres allerdings für Unternehmen interessant: Das System bietet die viel beachtete Möglichkeit, SQL-Statements parallel von mehreren Prozessoren verarbeiten zu lassen. Das kann kein anderer Anbieter in der Open-Source-Szene so gut wie Ingres. Hier eignet sich das System sicher in einigen Spezialfällen.

MaxDB liegt heute wieder beim Softwarehaus SAP. In den ersten Jahren hat SAP diese Datenbank als Basis für anspruchsvolle ERP-Anwendungen entwickelt, sie dann jedoch an MySQL zur Weiterentwicklung übergeben, um sie nun nach einigen Jahren wieder selbst fortzuführen. MaxDB unterstützt zwar nur wenige Features, arbeitet jedoch zuverlässig ohne jeglichen Administrationsaufwand. Zum Glück, denn es gibt so gut wie keine externen Tools für Backup und Wartung. Als Ausgangsbasis für SAP-Installationen ist das System sicher einen Blick wert, da es hier die Stärken der problemlosen Integration ausspielen kann. SAP hat versprochen, in zukünftigen Releases aktiv weitere Features wie zum Beispiel MVCC (Multiversion Concurrency Control) einzuarbeiten. Die Entwicklung geht also aktiv weiter.

Der letzte Veteran in der Runde der kleineren Open-Source-Vertreter ist Firebird. Nach dem Niedergang von Interbase hat man das Projekt kurzerhand als Open Source freigegeben und in Russland, der Ukraine und Südamerika die dort traditionell breiten Anwendergruppen aktiv integriert. Das hat sich ausgezahlt, da Firebird immer noch oft eingesetzt wird. Ein solider Grundstock von Funktionen bildet die Basis der Datenbank. Ohne spektakuläre Enterprise-Features kann Firebird immerhin zweiphasige Transaktionen ausführen und versteht perfekte Replikation. Als einzige Datenbank im Testfeld hat Firebird allerdings immer noch Probleme mit Multiprozessor-Systemen: Der Server verschluckt sich gerne zwischen Multithreading und mehreren Prozessen.

Derby und kostenfreie Einstiegsvarianten

Ein Spezialfall ist das Derby-Projekt der Apache Software Foundation. Das aus IBM Cloudscape entstandene Projekt bietet eine Datenbank, die mit vielen Enterprise-Features sowie voller SQL-Unterstützung kommt und dabei auch noch sehr schnell ist. Derby lässt sich direkt in Java-Anwendungen einbetten, was für manchen Anwender vielleicht den Königsweg zwischen einem richtigen Datenbank-Server und einer minimalen, aber schnellen Lösung darstellen mag.

Eine Alternative für einfache Einsatzbereiche bieten eventuell auch die Einstiegsvarianten der Datenbanken von Microsoft (SQL Server Express), Oracle (Database Lite) und IBM (DB2 Express). Sie besitzen die gewohnte Zuverlässigkeit der proprietären Software auf hohem Niveau, viele anspruchsvolle Features sind aber deaktiviert. Als Kunde sei man jedoch vor den schwierigen Lizenzbedingungen und der genauen Abgrenzung gewarnt - am Ende müssen für den professionellen Einsatz oder ein Upgrade eventuell auch Lizenzgebühren entrichtet werden.

Fazit

Open-Source-Datenbanken reichen noch lange nicht an die Reife und Professionalität der kommerziellen Konkurrenz heran. Im Highend-Bereich bleiben Oracle, IBM und Microsoft die Platzhirsche. Für viele Unternehmen reichen jedoch die Features der Open-Source-Datenbanken sicher aus: MySQL eignet sich besonders für Web-Anwendungen, allerdings nur wenig für komplexere Aufgaben. Transaktionen, Replikation und XML-Support sind essenziell für professionelle Anwender, und genau hier punktet PostgreSQL. Die anderen offenen Datenbanken haben ihre Berechtigung in Nischen. (ue)