Freie Datenbanken im Unternehmenseinsatz: Ein Vergleich
Seite 2: Freie Datenbanken im Unternehmenseinsatz: Ein Vergleich
Kriterien
Ob der Einsatz einer Open-Source-Datenbank möglich und sinnvoll ist, hängt von den Anforderungen an den Funktionsumfang des Systems ab. Ein Datenbanksystem sollte möglichst die unten aufgelisteten Features bieten, um in anspruchsvollen Unternehmensanwendungen einsetzbar zu sein:
- 1. Datenintegrität: ACID-Transaktionen, Savepoints, zweiphasiges Commit, Locking auf Zeilenebene oder Multiversion Concurrency Control (MVCC)
- 2. Datenorganisation: Komplexe Datenbank-Objekte wie Sichten, Schemata und temporäre Tabellen
- 3. Datenzugriff: Umfangreiche SQL-Features: Vererbung, nutzerdenierte Datentypen, Operatoren und Funktionen, Sub-Selects, komplexe Abfragen, fortschrittliche Indexierungs-Strategien und Unterstützung von verteilten Datenbankabfragen; Möglichkeiten der Integration von Geschäftslogik in die Datenbank: Triggers, Events, Sequenzen, Stored Procedures; eine große Auswahl an Schnittstellen, Treibern und APIs
- 4. Betrieb: Performanz und Skalierbarkeit: Multi-Threading, Multi-Prozessor-Unterstützung, Caching, Partitionierung, Tablespaces, Clustering, Parallelisierung von Abfragen; (Hoch-)Verfügbarkeit: Replikation, umfangreiche unterbrechungsfreie Datensicherungs- und Wiederherstellungsmechanismen; Sicherheit: Verschlüsselung, Gruppen- und Rollenkonzept, feingranulare Rechteverwaltung und Logging
Die folgende Tabelle bietet einen Vergleich der Features der fünf Open-Source-Datenbankmanagementsysteme. Dabei ist zu beachten, dass es wesentlich einfacher ist, SQL-Features und Standard-Konformität zu vergleichen oder die verfügbaren Stored-Procedure-Sprachen aufzuzählen, als Features aus den Bereichen Hochverfügbarkeit, Sicherheit oder Skalierbarkeit zu vergleichen. Diese sind nicht einfach abzählbar und es gibt im Allgemeinen auch keinen Standard, dessen Einhaltung man überprüfen kann. Implementationen desselben Features können sich grundlegend unterscheiden und oft steckt der Teufel im Detail. Auf jeden Fall aber lassen sich die jeweiligen Funktionen benennen und klassizieren.
Firebird | Ingres | MaxDB | MySQL | PostgreSQL | ||
Version | 1.5 | 3.0 | 7.6 | 5.0 | 8.1 | |
Datenintegrität | ||||||
ACID-Transaktionen | Ja | Ja | Ja | Ja* | Ja | |
2-phasiges Commit | Ja | Ja | Nein | Ja* | Ja | |
Fremdschlüssel | Ja | Ja | Ja | Ja* | Ja | |
CHECK-Bedingung | Ja | Nein | Ja | Nein | Ja | |
Savepoints | Ja | Ja | Ja | Ja* | Ja | |
Locking | MVCC | zeilenweise | zeilenweise, MVCC ab 7.7 | MVCC und zeilenweise* | MVCC und zeilenweise | |
Datenbankobjekte | ||||||
Schema | Nein | Ja | Ja | Ja | Ja | |
Temporäre Tabellen | Nein | Ja | Ja | Ja | Ja | |
Stored Procedures | Ja | Ja | Ja | Ja | Ja | |
Trigger | Before/After | After | After | Before/After | Before/After | |
View | Ja | Ja | Ja | Ja | Ja | |
Materialized View | Nein | Nein | Nein | Nein | Nein | |
Updatable View | Ja | Nein | Ja | Ja | Ja | |
Expression Index | Nein | Nein | Nein | Nein | Ja | |
Partial Index | Nein | Nein | Nein | Nein | Ja | |
Bitmap Index | Nein | Nein | Nein | Nein | Ja | |
Volltext-Index | Nein | Nein | Nein | Ja (MyISAM) | Ja (Tsearch2) | |
SQL, Datentypen | ||||||
SQL-Standard | 92, 99 | 92, 99 | 92 | 92, 99 | 92, 99, 03 | |
Nutzerdef. Typen | Nein | Ja | Nein | Nein | Ja | |
Nutzerdef. Funktionen | Ja | Ja | Ja | Ja | Ja | |
GIS | Nein | Ja | Nein | Ja | Ja | |
Boolean | Nein | Nein | Ja | Nein | Ja | |
Sub-Select | Ja | Ja | Ja | Ja | Ja | |
Full Outer Join | Ja | Ja | Ja | Nein | Ja | |
Betrieb | ||||||
Multi-Threading | Ja (Super) | Ja (BS) | Ja (DB) | Ja (BS) | Nein | |
Multi-Processing | Ja (Classic) | Ja | Ja | Ja | Ja | |
Abfrage-Parallelisierung | Nein | Ja | Ja | Ja (Cluster) | Nein | |
Replikation | Ja | Ja | Ja | Ja | Ja (Slony) | |
Multimaster Repl. | Ja | Ja | Nein | Nein | Nein | |
Clustering | Nein | Ja | Ja | Ja | Nein | |
Load Balancing | Nein | Ja | Nein | Ja | Nein | |
Tablespaces | Nein | Nein | Nein | Ja | Ja | |
Partitionierung | Nein | Ja | Nein | Nein (V. 5.1) | Ja (CE) | |
Point-In-Time Recovery | Nein | Ja | Ja | Ja* | Ja |
(BS: Betriebssystem, DB: Datenbank, CE: Constraint Exclusion, *: InnoDB)