Relativ Rationa! Was ist eine Datenbank?
Datenbanken sind so alt, wie die die IT selbst. Allgemein handelt es sich dabei um ein Abstraktionsmodell zum Speichern von Daten, und gewöhnlich effizienter als ein Dateisystem. So kommen Datenbanken als Speicher für die meisten Geschäftsanwendungen wie ERP, CRM und alle Arten von Business-Software zum Einsatz; seit einigen Jahren dienen sie zudem zum Generieren von Inhalten dynamischer Websites oder zum Sichern von Status-Informationen bei komplexen Webanwendungen.
Anbieter zum Thema

Jeder PC-Nutzer ist mit der Handhabung von Dateien sowie mit Eigenschaften und Grenzen moderner Dateisysteme vertraut. Wer nur einmal ein Word-Dokument gesucht hat, das er vor einigen Monaten erstellt hat und von dem er sich nur bruchstückhaft an den Titel erinnert, kann sich freuen, wenn er über eine gut strukturierte Dateiablage verfügt.
PC-Nutzer haben hierbei zumeist freie Hand, ob sie ihre Daten nach Themen, Zweck, Abteilungs-Hierarchie (in Unternehmen) oder dem Mondstand organisieren. Auch bei den Dateinamen hat man im Abhängigkeit vom Dateisystem relativ freie Wahl und ob und wenn ja wo gegebenenfalls Sicherungen, Repliken oder Archiv-Daten existieren, liegt weitgehend ebenfalls in der Verantwortung des Nutzers.
Auch wenn einige Anwendungstypen zusammen mit Ihren Dateiformaten wie E-Mail-Programme eine gewisse Struktur erzwingen oder moderne Dateiformate wie XML die Durchsuchbarkeit erleichtern, hat dieser Art der Datenspeicherung ihre natürlich Grenzen. Das betrifft sowohl die Effizienz der Speicherung, als auch das Gewährleisten der Verfügbarkeit oder die Suche. Hier bieten zwar moderne Volltext-Search-Engine wie „Apache Lucene“ Erleichterung, trotzdem brauchen Geschäftsanwendungen ein Verfahren zum strukturierten Speichern von Daten.
Datenbank-Begrifflichkeiten
Hier kommen Datenbanken ins Spiel, wobei sowohl im allgemeinen Sprachgebrauch, wie auch in der Fachpresse seit Jahrzehnten ein munteres Durcheinanderwerfen von Fachbegriffen zu beobachten ist. Oft werden die Bezeichnungen Datenbank, Datenbanksystem, Datenbank-Management-System und Datenbankanwendung synonym verwendet, was fast immer falsch ist.
Der Hauptzweck einer Datenbanksystems besteht darin, große Datenmengen besonders effizient, widerspruchsfrei und dauerhaft zu speichern und Nutzern (oder Anwendungsprogrammen) auf Wunsch (Abfrage) Teilmengen davon in bedarfsgerechten Darreichungsformen bereit zu stellen. Hierbei ist Datenbank ein eher allgemeiner Begriff, der in den meisten Kontexten für das Datenbanksystem (DBS) verwendet wird.
Dieses setzt sich genau genommen aus zwei Komponenten, dem Datenbank-Management-System (DBMS) und den zu verwaltenden Daten selbst zusammen - hier ist der Begriff Datenbank (DB) oder Datenbasis korrekt. Die Management-Software kümmert sich um das strukturierte Speichern der Daten, kontrolliert den lesenden und schreibenden Zugriff auf die Daten und stelle eine Abfragesprache für das Abfragen der Daten bereit. Das schließt meist auch das Verwalten der Hardware und Datenspeicher mit ein, da Enterprise-DBMS in der Regel nicht auf ein bestehenden Betriebssystem/Dateisystem aufsetzen, sieht man mal von semiprofesionellen Lösungen wie „MS Access“ oder „Filemaker“ ab.
Die Datenbank-Historie
Datenbanken gibt es seit den 60ziger Jahren des vorigen Jahrhunderts, etwa das „IMS“ mit der Sprache „DL/I“, eine hierarchisch strukturierte Datenbank. Das erste relationale Datenbanksystem „System R“ entstand in den 70ziger Jahren am „IBM Almaden Research Center“ gefolgt von „Ingres“, das die Berkely Group entwickelt hatte. Erst das Unternehmen Oracle griff die Entwicklungen an experimentellen System-R-System auf und machte seine Abfragesprache SQL kommerziell erfolgreich.
Dies leitete in den 80ziger Jahren den Siegeszug der relationalen Datenbank-Management Systeme (RDBMS) ein. Nach den Pionieren Oracle und „IBM DB2“ etablierten sich auch „dBASE“, „Informix“ und „Microsoft SQL-Server“ als führende kommerziellen relationale DBMS und dominierten den Markt bis Ende der 90ziger Jahre. Erst ab den neuen Jahrtausend setzten sich vor allem mit dem Siegeszug des World Wide Web und der Notwendigkeit, preiswerte Datenbanken für dynamische Web-Anwendungen bereit stellen zu müssen, auch die quelloffenen relationalen und objektrelationalen Datenbank-Management-Systeme durch, etwa „MySQL“ und „Postgres“.
Seit etwa 2005 gewinnen aufgrund der Tasche, das relationale Datenbank vertikal nicht skalieren und der horizontalen Skalierbarkeit Grenzen gesetzt sind, zunehmend verschiedene Arten von NoSQL-Datenbanken - hierunter verstehen die Experten Alles, was nicht relational ist oder mit SQL abfragbar ist - an Bedeutung. NoSQL-Systeme wie „MongoDB“, „CouchDB“, „HBase“, „Cassandra“, „DynamoDB“ und „BigTable“ sollen vor allem den enormen Bedarf an Skalierbarkeit und Verfügbarkeit von Big-Data-Anwendung befriedigen, da beide Aspekte bei der verteilten und damit redundanten Speicherung unstrukturierter Daten in den Genen von NoSQL angelegt ist.
Funktionsweise von relationalen Datenbanken
Eine relationale Datenbank speichert Daten in Form von Tabellen, die einem festen, vorher festgelegten Schema gehorchen, wobei der Haupttreiber für die Effizienz in der Speicherung und Abfrage solcher Systeme das Konzept der Relation ist. Hierbei handelt es sich strenggenommen um eine mathematisches Konzept, das durch die so genannte relationale Algebra exakt definiert ist, welches die Basis für die Abfragesprache SQL bildet.
Relationale Datenbanken speichern Daten in Form Datensätzen, die in Tabellen, den so genannten Relationen, abgelegt sind. Dabei entspricht immer exakt eine Zeile (Tupel) jeder Tabelle einem Datensatz (Record), der eine Reihe von Attributen (Eigenschaften) hat, den Spalten der Tabelle und das sogenannte Schema jeweils Anzahl und Typ der Attribute (Text fester Länge, Fließkommazahl, Datum etc.) festlegt.
Das Geheimnis der Arbeitsweise relationaler Datenbanken besteht darin, dass jeder Datensatz über einen (oder auch mehrere) definierbaren Schlüssel (darunter einen Primärschlüssel) eindeutig identifizierbar sein muss. Solche Schlüssel dürfen sich nie ändern, weil sich immer auf den Datensatz und nicht auf die Position in der Tabelle beziehen.
Verknüpfungen zwischen Tabellen, die über die definierten Schlüssel festgelegt werden, drücken dabei die „Beziehungen“ (Relationen) zwischen Tabellen aus und sind letztendlich der Schlüssel für die Effizienz. Teilt man seine Datenbank geschickt in mehrere über Schlüssel verknüpfte Tabellen auf, lässt sich ein mehrfaches Speichern von Attributen vermeiden. Außerdem lassen sich aus dem Verknüpfen von Tabellen über das Auswerten dieser Beziehungen ähnlich wie bei der Rasterfahndung Erkenntnisse gewinnen, die in einer einzigen großen Tabelle nicht auffindbaren wären.
Mit der zunehmenden Verbreitung objektorientierter Programmiersprachen entstanden auch Objekt-relationale Datenbanken. Diese sind in der Lage, Objekte aus objektorientierten Sprachen wie Java direkt in der Datenbank abzulegen, so dass ein Abbilden der Objekte auf die relationale Tabellenstruktur, entfallen kann.
Funktionsweise von NoSQL-Datenbanken
So genannte NOSQL-Datenbanken verwenden kein relationales Datenmodell, entweder gar keins oder ein sehr einfaches Schema mit schwachen Schemarestriktionen. Doch sie unterstützen von sich aus verteilte, horizontale Skalierung und erlauben eine einfache automatische Replikation, über eine verteilte Architektur. Sie verfügen außerdem über eine einfache Programmierschneittstelle (API) und verwenden als Konsistenzmodell BASE anstelle von ACID. Derzeit unterscheidet man vier grundsätzliche unterschiedliche Typen von NoQL-Datenbanken.
Key-Value Stores (In-Memory-Datenbanken) sind die einfachste vorstellbare Form eines Datenbank-Management-Sstems. Sie können lediglich Paare von Schlüsseln und Werten abspeichern und Werte anhand des Schlüssels wieder zurückliefern. Solche Systeme eignen sich in der Regel nicht für komplexe Applikationen. Andererseits macht gerade diese Einfachheit die Systeme in gewissen Bereichen attraktiv. Key-Value Stores kommen zum Beispiel ressourcenschonend in Embedded-Systemen zum Einsatz oder sie dienen als In-Process-Datenbanken für besonders hohe Performance.
Populäre Vertreter sind „Redis“ oder „Memcached“ und „SAP HANA“. Die erstgenannten werden häufig zum Aufbau eines Caching-Layers in komplexen Web-Applikationen verwendet. Da In-Memory-Datenbanken Daten nur im flüchtigen Arbeitsspeicher speichern, erfüllen sie nicht ohne weiteres die Anforderung der dauerhaften Speicherung (Persistenz) erfolgreich abgeschlossener Transaktionen. Viele In-Memory-Datenbanken helfen diesem Umstand mit Snapshot-Dateien oder zusätzlichen Protokolldateien ab.
Column Stores sind ein spezieller Typ von Key-Value-Stores und werden auch Extensible Record Stores und oder einfach spaltenorientierte Datenbanken. Sie speichern Daten in Datensätzen mit potentiell sehr vielen dynamischen Spalten ab. Da der Spaltenname ähnlich wie der Schlüssel der Datensätze nicht fix ist, und ein Datensatz auch Milliarden von Spalten haben kann, können Wide Column Stores als zweidimensionale Key-Value Stores angesehen werden. Bekannte Vertreter sind „AWS DynamoDB“, „Google BigTable“, „Facebook/Twitter Cassandra“, „Apache HBase“, „Azure Table Storage“ und „MapR DB“.
So genannte Document Stores eignen sich dagegen zum unstrukturierten Speichern kompletter Dokumente, wie es zum Beispiel „Lotus Notes“ tut. Als Dokumentformat wird meist XML oder JSON benutzt. Populärsten Vertreter sind Apache CouchDB oder MongoDB.
Graphen-Datenbanken
Schließlich gibt es noch spezielle Graphen-Datenbanken wie „Neo4j“. Allgemein bieten alle Datenbanken nicht nur Konzepte zum Speichern, Überscheiben oder Löschen von Daten, sondern auch zum Verwalten von Metadaten sowie Methoden zur Gewährleistung von Datensicherheit, Datenschutz und Datenintegrität und erlauben einen Mehrbenutzerbetrieb mit Hilfe von Transaktionen. Viele Informationen zu den beschriebene Datenbanktypen, deren Vor- und Nachteile, wichtigste Vertreter und ein aktuelles Ranking der beliebtesten Datenbanken liefert die Webseite: DB-Engines
Artikelfiles und Artikellinks
(ID:44815764)