Datenbankmanagmentsysteme
Ein Datenbankmanagementsystem (DBMS) (deutsch: Datenbankverwaltungssystem) ist eine Sammlung von Programmen, die die anwendungsunabhängige, dauerhafte Speicherung von Daten in einer Datenbank ermöglicht und die damit verbundene Verwaltung übernimmt. Weitere Aufgabe eines DBMS ist die Bereitstellung von verschiedenen Sichten auf die Daten (im englischen als Views bezeichnet), die Konsistenzprüfung der Daten (Integritätssicherung), die Autorisationsprüfung, die Behandlung gleichzeitiger Zugriffe verschiedener Benutzer (Synchronisation) und das Bereitstellen einer Datensicherungsmöglichkeit für den Fall von Systemausfällen.
Etwas missverständlich bezeichnet man ein Datenbankmanagementsystem oft abkürzend ebenfalls als Datenbank.
DBMS und Datenbank sind aber getrennt zu sehen und ergeben gemeinsam das Datenbanksystem. (DBS = DBMS + DB)
Ein DBMS steht im Mittelpunkt bei der Realisierung eines betrieblichen Informationssystems.
Zur Arbeit in einem Datenbankverwaltungsystem werden Transformationssprachen verwendet. Als Standardsprache hat sich SQL etabliert.
SQL lässt sich in vier eigenständige Sprachschichten unterteilen:
- Data Definition Language (DDL) zur Definition des Datenbankschemas (Satzbeschreibung).
- Data Query Language (DQL) zur Datenabfrage.
- Data Manipulation Language (DML) zur Datenmanipulation (Änderungen, etc.).
- Data Control Language (DCL) zur Kontrolle der Datenbank-Ressourcen.
Datenbankverwaltungssysteme unterscheiden sich in ihrer Qualität unter anderem darin, ob sie die ACID-Eigenschaften für Transaktionen implementieren.
Relationale Datenbankmanagementsysteme (RDBMS)
Die heute meistbenutzten DBMS basieren auf dem relationalen Datenmodell, das im Jahre 1969 von E. F. Codd entwickelt wurde. Folglich wird diese Variante auch als Relationales Datenbankmanagementsystem (RDBMS, teilweise auch RDBVS) bezeichnet.
Weitere Typen von Datenbankmanagementsystem
Vorgänger der relationalen Datenbanksysteme waren die hierarchischen Datenbanken. In ihnen wurden die Datensätze in einer Baumstruktur nach dem Eltern-Kind-Prinzip abgelegt. Die großen Nachteile von hierarchischen Datenbanken waren, dass Verknüpfungen über mehrere Ebenen nicht möglich waren, und der große Aufwand bei Designänderungen. Auch fehlt eine standardisierte, sprachunabhängige Abfragemöglichkeit wie SQL. Ein Beispiel für eine hierarchische Datenbank ist IMS.
Im Gegensatz zu hierarchischen Datenbanken können die Datensätze in Netzwerkdatenbanken auf mehreren Wegen verknüpft sein und nicht nur entlang Eltern-Kind-Relationen. Ein noch häufig eingesetztes Netzwerkdatenbanksystem ist IDMS der Firma Computer Associates.
In neuerer Zeit kommen Objektorientierte Datenbanken immer mehr auf. Bei relationalen Datenbanken geht es zuerst um die Struktur, in der die jeweiligen Daten gespeichert werden sollen. Objektorientierte Datenbanken dagegen folgen der objektorientierten Programmiermethode (siehe objektorientierte Programmierung), d. h. es kommen erst die Daten, an denen sich die Datenbankstruktur dann orientiert. Ein Beispiel für eine objektorientierte Datenbank ist Caché von Intersystems.
Objektrelationale Datenbanksysteme (ORDBMS) sind ein Bindeglied zwischen klassischen relationalen und objektorientierten Datenbanken. Sie kommen überall dort zum Einsatz, wo Mengen von Objekten in Relation zu anderen Daten oder Objekten gebracht werden müssen. Ein Einsatzgebiet sind unter anderem Systeme zur Erfassung geographischer Daten (GIS), bei denen Koordinaten miteinander verknüpft sind oder andere Daten referenzieren. Beispielsweise referenzieren mehrere Koordinaten-Objekte eine Straße; die Koordinaten stehen also in Relation mit einem Straßennamen und sind selbst Objekte, die zueinander eine Beziehung haben.
Verteilte Datenbanken sind in der Lage Daten zu verwalten, die auf mehrere Rechner verteilt sind. Dabei spricht man von Partitionen (die Datensätze einer Tabelle sind auf mehrere Rechner verteilt) und von Replikas (die Datensätze einer Tabelle kommen auf mehreren Rechnern redundant vor).
Typen der Implementation
Datenbanken können auf (mindestens) zwei verschiedene Weisen implementiert sein: Als Client-Server-Datenbanken und "embedded", also "eingebettet". Erstere ist die bekanntere Form, die z.B. von MySQL, PostgreSQL, Oracle DB realisiert wird. Bei ihnen wird der Datenbankserver als eigener Prozess gestartet, der Client, meist ein Anwendungsprogramm, in einem anderen Prozess und die Abfrage geschieht über eine Interprozesskommunikation. Dieser Typ ist dann optimal, wenn viele Clients auf einen Server zugreifen müssen. Dies ist oft aber gar nicht der Fall. Oft läuft eine Datenbank nur, weil ein einziges Programm sie benötigt. In diesem Fall ist der Datenbankzugriff via Interprozesskommunikation sehr langsam. Schneller geht es, wenn das Programm den Datenbankserver gleich eingebunden hat. Dies ist dann der "embedded" Typ, wie er z.B. von SQLLite, Firebird embedded und vielen Java-basierten Systemen realisiert wird.
Bekannte Datenbankmanagementsysteme
Auf vielen Betriebssystemen verfügbar (GNU/Linux, Windows, Unix, Solaris etc.)
- IBM DB2, eine der großen SQL-Datenbanken. Neben den genannten Betriebssystemen ist DB2 auch auf OS/400, iSeries und z/OS, zSeries verfügbar, jedoch regelmäßig mit anderer Versionsnummer
- Oracle, zusammen mit IBMs DB2 der Marktführer bei kommerziellen Datenbanken
- PostgreSQL (BSD Open Source), die fortschrittlichste Open-Source-Datenbank. Es umfasst deutlich mehr an Funktionalität als beispielsweise MySQL.
- MySQL (GPL Open Source), die beliebteste Open-Source-Datenbank, insbesondere für Web-Anwendungen genutzt (steht nur bei der Verwendung mit GPL Anwendungen selber unter der GPL www.mysql.de/products/licensing.html ). MySQL unterstützt bisher nicht alle vom SQL-Standard geforderten Sprachelemente und ist noch nicht vollständig transaktionsfähig. Für kleine bis mittlere Anwendungen, die diese Eigenschaften nicht erfordern, ist MySQL aber sehr verbreitet, unter anderem benutzt die Wikipedia eine MySQL-Datenbank.
- MaxDB (früher SAP DB) (GPL Open Source), ursprünglich ein Abkömmling von Adabas D der Software AG, Darmstadt, danach von SAP weiterentwickelt. Seit Mitte 2003 in Zusammenarbeit mit der Firma MySQL AG zu MaxDB entwickelt, um die Qualität dieser Datenbank mit der Beliebtheit von MySQL zu kombinieren.
- InterBase und das darauf aufbauende Firebird. Verhältnismäßig unbekannt, in der Leistungsfähigkeit jedoch mit PostgreSQL und MaxDB vergleichbar.