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