Datenbanken im Vergleich

Werbung
Datenbanken im Vergleich
Holger Jakobs – [email protected], [email protected]
2008-03-25
Inhaltsverzeichnis
1 Was macht eine Datenbank aus?
1
2 Erfüllung der Kriterien durch Datenbanken
2.1 Die großen Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Die PC-Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Die freien Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2
2
3
3 Embedded DBMS
4
1 Was macht eine Datenbank aus?
Eine Datenbank unterscheidet sich in wesentlichen Aspekten von der Speicherung von
Daten in Dateien. Zu diesen gehören insbesondere:
1. Datensicherheit: Der Datenbestand ist immer auf zwei physikalische Laufwerke
verteilt. Eines enthält die eigentlichen Daten, auf der zweiten Platte befindet sich die
Log-Datei, in der alle Änderungen am Bestand mitprotokolliert werden. Auf diese
Weise kann alles reproduziert werden, wenn eine Platte ausfällt. Die Sicherheit kann
über eine weitere Log-Datei oder über ausfallsichere Plattenverbünde (RAID-Array)
weiter gesteigert werden.
2. Flexible Abfragemöglichkeiten: Es gibt eine Sprache für Ad-hoc-Abfragen des
Datenbestandes, idealerweise standardisiert, was zur Zeit meistens SQL bedeutet.
3. Gesicherte Datenkonsistenz A: Eindeutigkeit von Schlüsseln (PRIMARY KEY und
UNIQUE), Sicherheit von Fremdschlüsseln (FOREIGN KEY) und möglichst darüber hinausgehende Möglichkeiten der Konsistenzsicherung über Prozeduren und Regeln bzw.
Trigger. Alle diese Mechanismen dürfen nicht dadurch umgangen werden können, dass
man ein interaktives Tool zur Bearbeitung des Datenbestandes verwendet, statt ein
Anwendungsprogramm zu benutzen. Anders ausgedrückt: Die Konsistenzprüfungen
gehören in die Datenbank und nicht (oder nur aus Komfortgründen zusätzlich) in ein
Anwendungsprogramm.
1
2 ERFÜLLUNG DER KRITERIEN DURCH DATENBANKEN
4. Gesicherte Datenkonsistenz B: Alle Aktionen mit dem Datenbestand müssen im
Rahmen von sogenannten Transaktionen ablaufen, d. h. sie müssen ununterbrechbar
sein nach dem Motto ganz oder gar nicht“. Wenn eine Transaktion aus irgendeinem
”
Grunde nicht zu Ende geführt werden kann, müssen alle Änderungen, die vom Beginn
bis zur Unterbrechung durchgeführt wurden, wieder automatisch rückgängig gemacht
werden.
5. Skalierbarkeit: Eine gute Datenbank ist skalierbar, d. h. sie kommt auch mit großen
Datenbeständen klar, ohne unerträglich langsam zu werden. Idealerweise kann man
die Datenbank nicht nur in Dateien ablegen, sondern auch in separaten PlattenPartitionen, um den Flaschenhals des Dateisystems zu umgehen.
6. Zugriffsschutz: Es muss ein Zugriff auf die Daten durch Unbefugte verhindert werden. Sinnvoll ist die Koppelung von Zugriffsrechten an die Benutzerkennung, die
durch das Betriebssystem schon abgesichert ist. Eine direkte Manipulationsmöglichkeit der Datenbank-Dateien muss auch durch den Eigentümer einer Datenbank
(DBA) unmöglich sein; auch dieser muss sich der Tools des Datenbank-Systems bedienen. Wünschenswert ist auch der Schutz gegen unberechtigten Zugriff durch den
Systemverwalter, beispielsweise durch Verschlüsselung.
2 Erfüllung der Kriterien durch Datenbanken
2.1 Die großen Datenbanken
Die oben genannten Kriterien werden von den professionellen“ Datenbanken im wesent”
lichen erfüllt. Zu diesen Datenbanken zählen IBMs DB2 und Informix, Oracle, Software
AGs Adabas, Sybase, Teradata und MS SQL-Server.
Auch diese Datenbanken unterstützen nicht den gesamten Sprachumfang von SQL, sondern oft nur den sogenannten Entry Level“. Andererseits haben sie oft über den Sprach”
standard hinausgehende Erweiterungen. Diese beiden Eigenschaften machen eine echt unabhängige Programmierung sehr schwer. Vor allem die Administrationskommandos sind
sehr wenig genormt, weil der SQL-Standard beispielsweise über die Kommandos zur Erstellung einer neuen Datenbank gar keine Aussagen macht.
2.2 Die PC-Datenbanken
Es gibt aber auch eine ganze Reihe von Systemen, die an fast allen Kriterien scheitern,
insbesondere die ganzen PC-Datenbanken“, die nicht einmal für Mehrbenutzerbetrieb ge”
eignet sind bzw. nur sehr wenige gleichzeitige Anwender möglich sind. Dazu gehören dBase
und seine Abkömmlinge, MS Access mit der Jet-Database Engine und zahllose Adressverwaltungen. Eine im PC-Bereich noch als gut geltende Datenbank ist Progress, die aber
nur mit einer eigenen Sprache programmiert werden kann, dafür aber auch auf größeren
Systemen wie Unix zur Verfügung steht. Ähnliches gilt für das System FileMaker, das
2
2 ERFÜLLUNG DER KRITERIEN DURCH DATENBANKEN
2.3 Die freien Datenbanken
auf Macintosh bekannt geworden ist, mittlerweile eine Apple-Tochter ist, aber auch für
Windows existiert. FileMaker und Progress sind aber Systeme, bei denen das DBMS und
das Anwendungsentwicklungsystem miteinander verquickt sind, was als eher unglücklich
bezeichnet werden muss.
2.3 Die freien Datenbanken
Interessant ist die Betrachtung von freien Datenbanken, die meist als Open Source verfügbar sind. Sie laufen meist auf vielen Unix-Derivaten, insbesondere auf Linux und den
BSD-Varianten. Einige sind auch auf Windows-Varianten und auf MacOS portiert worden.
Die freien Datenbanken unterstützen zu einem Teil die Sprache SQL, aber meist eine
wesentlich kleinere Menge des Sprachstandards als die Profi-Datenbanken. Eine Ausnahme
hiervon ist PostgreSQL, das es mit den kommerziellen Systemen aufnehmen kann.
Grundsätzlich sind folgende Dinge mindestens zu fordern:
ˆ SQL-Abfragen mit Subselects (Unterabfragen) zumindest einer Stufe (besser noch
beliebig geschachtelte Unterabfragen)
ˆ Unterstützung von Primär- und Fremdschlüsseln
ˆ Transaktionsverwaltung mit Rollback-Möglichkeit
ˆ Verwendung von Prozeduren in der Datenbank und Triggern
ˆ Möglichkeit der Programmierung mit einer klassischen Programmiersprache über CLI
(call-level interface) oder über Einbettung (embedded SQL)
Leider scheitern viele freien Datenbanken schon an diesen Punkten:
ˆ MySQL (http://mysql.com): Transaktionen nur bei manchen Backends, nur rudimentäre Triggerunterstützung
ˆ mSQL: (http://www.hughes.com.au/products/msql) keine Unterabfragen, keine
Transaktionen, keine Sicherheit
ˆ SQLite: (http://sqlite.org): keine Datentypen, aber Transaktionen. Nur bei Einzelplatzanwendungen sinnvoll, z. B. zur Bookmarkspeicherung bei Webbrowsern oder
auf PDAs.
Die freien Datenbanksysteme PostgreSQL1 und Firebird2 beherrschen Fremdschlüssel, Transaktionen und Trigger, so dass sie zur Zeit die einzigen ernst zu nehmenden Open-SourceDatenbanken sind. Auch die Joins mit dem Schlüsselwort join und using bzw. on (statt
nur mit Aufzählung der Tabellen und where-Klausel) sind schon implementiert, sogar mit
outer Joins in allen Varianten (left, right und full).
1) http://postgresql.org
2) http://firebirdsql.org
3
3 EMBEDDED DBMS
3 Embedded DBMS
Neben den großen“ DBMS, auch Enterprise DBMS genannt, gibt es auch kleinere Sys”
teme, die manchmal nur aus einer dynamisch zu ladenden Bibliothek bestehen bzw. aus
einem jar-Archiv. Einige davon sind für die direkte Verwendung in Anwendungen auf
gewöhnlichen Rechnern, einige (auch) für die Verwendung in Appliances (also spezialisierten Geräten wie DVD-Recordern, Waschmaschinen, Navigationssystemen, Routern) und
PDAs, Smartphones und Mobiltelefonen gedacht.
Diese kleinen“ DBMS sind kein wesentlicher Bestandteil des DAB-Unterrichts, aber es
”
besteht durchaus die Möglichkeit, sie einmal zu betrachten, z. B. im Rahmen von Projekten
oder Vorträgen. Daher sollen hier einige Systeme genannt und kurz charakterisiert werden.
ˆ Berkeley DB: eine eingebettete DB-Bibliothek mit Schnittstellen zu vielen Programmiersprachen, die es für viele Plattformen in C geschrieben und auch als jarArchiv für Java gibt. Sie kann kein SQL, sondern hat ein API.
ˆ Apache Derby: Java-basierte, relationale DB, die über JDBC angesprochen wird.
Ist als Java DB“ in Java 6 integriert.
”
ˆ HSQLDB: Java-basierte, relationale DB, die über JDBC angesprochen wird. Ist in
OpenOffice.org 2 integriert.
ˆ SQLite: eingebettete DB-Bibliothek mit Schnittstellen zu C, C++ und Tcl, die es
für viele Plattformen gibt. Sie kann neben Transaktionen sogar Trigger und Views,
die Abfragesprache ist SQL.
ˆ Metakit: eingebettete DB-Bibliothek mit Schnittstellen zu C, C++, Python und
Tcl, die es für viele Plattformen (vom PDA bis zum IBM Großrechner) gibt. Sie
kann kein SQL, sondern hat ein API.
$Id: vergleichDAB.tex,v 1.2 2008-03-25 10:57:36 hj Exp $
4
Herunterladen