Freie Datenbanken im Unternehmenseinsatz: Ein Vergleich

Seite 4: Freie Datenbanken im Unternehmenseinsatz: Ein Vergleich

Inhaltsverzeichnis

Die schwedische Firma MySQL AB veröffentlichte MySQL im Jahr 1995. Open-Source-Software von Anfang an, entwickelte sich schnell eine sehr große Nutzergemeinde rund um das Datenbanksystem, welches eine der vier Säulen des LAMP-Stacks bildet (Linux, Apache, MySQL, PHP/Python/Perl).

Wie MaxDB wird auch MySQL unter dualer Lizenzierung angeboten. Bekannte Nutzer sind Associated Press, Yahoo, Slashdot, SourceForge, die NASA, Lycos und T-Systems. In einer Reihe von Open-Source-Projekten arbeitet MySQL als Backend, etwa Typo3 und Drupal (CMS), Nucleus undWordpress (Blog), Wikipedia/MediaWiki, PHProjekt und eGroupware (Projekt Management und Groupware). MySQL AB bietet kommerziellen und Community-Support.

Mit der Version 5.0 hat sich MySQL zu einer Datenbank gemausert, die auch für komplexe Unternehmens-Anwendungen einsetzbar ist. Die neue Version bietet folgende Neuerungen:

  • Stored Procedures (nach SQL 2003 Standard)
  • Triggers
  • (Updatable) Views
  • Serverseitige Cursors
  • Unterstützung von XA-Standard und zweiphasigen Commits
  • Nutzer-definierte Funktionen
  • Abfrage der Datenbank-Metadaten über das INFORMATION_SCHEMA
  • Strikter SQL-Modus

Spezisch für MySQL ist, dass es elf verschiedene Tabellentypen zur Auswahl gibt: MyISAM, MERGE, MEMORY (HEAP), BDB (BerkeleyDB), EXAMPLE, FEDERATED, ARCHIVE, CSV, BLACKHOLE, InnoDB und MySQL Cluster (NDB). Eine Datenbank kann Tabellen verschiedenen Typs enthalten. Die Wahl eines Typs ist abhängig vom Einsatzzweck der Tabelle. Jeder Tabellentyp hat bestimmte Charakteristika, zum Beispiel:

  • Nur der InnoDB-Typ bietet Fremdschlüssel, MVCC, Savepoints, Tablespaces und XA-konforme verteilte Transaktionen mit zweiphasigem Commit.
  • Nur InnoDB und Berkeley DB bieten ACID-Transaktionen.
  • Nur InnoDB und NDB bieten Locking auf Zeilenebene (BDB: Locking auf Seiten-Ebene).
  • Nur MyISAM-Tabellen unterstützen Volltext- und R-Tree-Indexierung.
  • Für Clustering und Load Balancing verwendet man NDB-Cluster-Tabellen. Diese bieten auch die parallele Bearbeitung von Abfragen auf mehreren Cluster-Knoten gleichzeitig.

Neben den genannten Features unterstützt MySQL Replikation (Single-Master, Multi-Slaves), Multi-Threading und Multi-Prozessor-Support. Nur eingeschränkt zur Verfügung stehen Sequenzen (eingeschränkte Implementierung über AUTO_INCREMENT) und Constraints (MySQL bietet nur UNIQUE und NOT NULL). Partitionierung (geplant für Version 5.1) und Rollen- oder Gruppenkonzepte für das Rechtemanagement fehlen vollständig.

Das 1986 auf Ingres folgende Datenbank-Forschungsprojekt der Universität Berkeley wurde Postgres getauft. Als das Projekt im Jahr 1994 auslief, fügte man noch einen SQL-Interpreter zum Code hinzu, benannte die Software um in Postgres95 und veröffentlichte sie unter BSD-Lizenz als Open-Source-Software. 1996 einigte man sich schließlich auf den Namen PostgreSQL.

PostgreSQL ist ein Objekt-relationales Datenbanksystem mit einer großen Nutzer- und Entwickler-Community, für die verschiedene Unternehmen wie Fujitsu oder Sun kommerziellen Support anbieten. Bekannte Nutzer von PostgreSQL sind der Domain-Namen-Registrar Alias, BASF und Fujitsu. Die ZEIT nutzt PostgreSQL zur Speicherung der Metadaten ihres Content-Management-Servers. In verschiedenen Open-Source-Projekten kommt PostgreSQL als Backend zum Einsatz, etwa in der Kollaborationsplattform GForge, ERP-, CRM- und Groupware-Systemen wie EGS, FISTERRA und FacturaLUX sowie in verschiedenen Projekten, die sich der GIS-Implementation von PostgreSQL bedienen.

Spezisch für PostgreSQL sind die so genannten Distributionen: Unternehmen können selbstentwickelte Features zum Datenbank-Code hinzufügen und dann selbst verteilen oder verkaufen - die BSD-Lizenz erlaubt das Schließen des Codes. Beispiele sind Greenplum mit Bizgres und EnterpriseDB.

PostgreSQL zeichnet sich durch eine enorme Funktionsvielfalt aus. Zu den anspruchsvolleren Features gehören MVCC, CHECK Constraints, nutzerdefinierte Funktionen, Datentypen und Operatoren sowie räumliche, Boolesche und Netzwerkadress-Datentypen (IPv4, IPv6, MAC). Als einzige der Open-Source-Datenbanken stellt PostgreSQL die spezialisierten Indexierungs-Algorithmen Expression Index, Bitmap Index und Partial Index zur Verfügung. Daneben gibt es natürlich auch R-Tree, Heap- und Volltext-Indexierung.

PostgreSQL bietet anspruchsvolle Replikation mittels der Slony-Software. Zweiphasiges Commit für verteilte Transaktionen steht ebenfalls zur Verfügung, jedoch bisher ohne Unterstützung des XA-Standards.

Schwächen zeigt PostgreSQL außerdem beim Thema Parallelisierung. Zwar unterstützt die Datenbank mehrere Prozessoren, jedoch kein Multi-Threading. Auch auf eingebaute Clustering- und Load-Balancing-Lösungen muss man verzichten.

PostgreSQL erlaubt, Stored Procedures in fast jeder Programmiersprache zu schreiben. Neben der Standard-Stored-Procedure-Sprache PL/pgSQL stehen C, Java, PL/Perl, PL/PHP, PL/Python, PL/Ruby, PL/sh, PL/TCL und PL/R zur Verfügung.

2005 veröffentlichte die PostgreSQL-Community mit den Versionen 8.0 und 8.1 zwei Updates, die sich vor allem auf die Einführung von Features für anspruchsvolle Unternehmens-Anwendungen konzentrierten: Point-in-Time Recovery, Savepoints, Tablespaces, Bitmap Scan, zweiphasiges Commit, Rollenkonzept für die Rechteverwaltung und Tabellen-Partitionierung. Außerdem läuft PostgreSQL seit 8.0 nativ auf Windows-Plattformen.