Zum Hauptinhalt springen

(3) Datenbankentypen

Hierarchische und netzwerkartige Datenbanken​

Hierarchische Datenbanken wurden ab etwa 1960 als erste Datenbanken ĂĽberhaupt eingesetzt.

Der logische Aufbau dieser Datenbanken entspricht einer Baumstruktur. Der Zugriff erfolgt immer über die Wurzel (oberster Knoten) in Richtung des gewünschten Knotens. Dies gewährleistet geringste Redundanz und garantiert kürzeste Zugriffszeiten, da direkt über die Baumstruktur zugegriffen wird. Der Nachteil ist eine hohe Inflexibilität gegenüber Änderungen in der Datenbankstruktur.

Aus diesem Grund wurde dieses Modell sehr schnell durch die netzwerkartigen Datenbanken ergänzt. Die hierarchische Baumstruktur wurde aufgegeben, zugunsten einer wesentlich flexibleren Netzstruktur. Damit lassen sich Anwendungen viel einfacher modellieren, allerdings auf Kosten einer etwas höheren Komplexität des Aufbaus.

Beide Modelle sind heute irrelevant, da Strukturänderungen aufwendig und Zugriffe komplex sind. Der wichtigste Vertreter hierarchischer Datenbanken ist IMS von IBM, netzwerkartige Datenbanken sind IDMS (Computer Associates) und UDS (Fujitsu).

Objektorientierte Datenbanken​

Objektorientierte Datenbanken speichern Daten in Form von Objekten (z. B. Personen, Bücher, Rechnungen) und nutzen Techniken aus der objektorientierten Programmierung wie Klassen, Vererbung und Datenkapselung. Sie bilden komplexe, reale Strukturen direkt ab und eignen sich besonders für technische und multimediale Anwendungen.

Da viele Objekte auch tabellarisch gespeichert werden können, gelten objektorientierte Datenbanken oft als Erweiterung relationaler Systeme. In der Praxis dominieren objektrelationale Datenbanken wie Oracle, DB2 oder PostgreSQL, die eine Mischform darstellen.

Vorteile:

  • Realitätstreuer Aufbau
  • Universell einsetzbar
  • (Teilweise) kompatibel mit relationalen Datenbanken

Nachteile:

  • Hoher Aufwand bei Entwurf, Programmierung und Verwaltung
  • Viele Ein-/Ausgaben
  • Höherer Ressourcenbedarf
  • Komplexer als rein relationale Systeme

Relationale Datenbanken​

Relationale Datenbanken bestehen ausschließlich aus Tabellen (Relationen), die flexibel ergänzt, verändert oder gelöscht werden können. Datenzugriffe erfolgen immer über diese Tabellen, was die Programmierung erleichtert und zur weiten Verbreitung dieses Modells im kommerziellen Bereich geführt hat. Tabellen sind über Beziehungen miteinander verknüpft.

Vorteile:

  • Flexibler Aufbau
  • Einfache Erweiterbarkeit
  • Weit verbreitet und gut unterstĂĽtzt

Nachteile:

  • Häufige VerknĂĽpfungen zwischen Tabellen fĂĽhren zu hohen Laufzeiten
  • Potenzielle Datenredundanz

Moderne Datenbankentypen​

Relationale Datenbanken stoßen an ihre Grenzen, wenn sehr viele oder sehr umfangreiche Anfragen gleichzeitig verarbeitet werden müssen, etwa bei großen Internetdiensten. Sie sind stark auf Datenkonsistenz und Transaktionssicherheit ausgelegt: Änderungen an Daten werden sofort sichtbar, und selbst bei einem Systemabsturz bleibt die Datenintegrität gewahrt. Dieses Verhalten ist zwar zuverlässig, benötigt jedoch viel Rechenleistung und langsame Speicherzugriffe, was die Performance beeinträchtigen kann.

FĂĽr viele Internetanwendungen ist es jedoch nicht entscheidend, ob Informationen in Echtzeit verfĂĽgbar sind. Es reicht oft, wenn der Datenstand wenige Sekunden oder Minuten alt ist. D. h., wenn man auf die sofortige Korrektheit verzichtet, kann man das System deutlich vereinfachen und besser skalieren. Daten werden auf mehrere Server verteilt, und bei Anfragen greift das System auf den jeweils verfĂĽgbaren Server zu, auch wenn dessen Daten noch nicht ganz aktuell sind. Ein internes Verwaltungssystem sorgt dafĂĽr, dass die Daten im Hintergrund nach und nach abgeglichen werden.

Diese neuen Ansätze werden unter den Begriffen NoSQL und Big Data zusammengefasst. Der Begriff NoSQL steht dabei nicht für ein völliges „Nein zu SQL“, sondern eher für Not Only SQL.

Moderne NoSQL-Datenbanken lassen sich in vier Kategorien unterteilen:

  • Key/Value-Datenbanken
  • Dokumentenbasierte Datenbanken
  • Spaltenorientierte Datenbanken
  • Graphen-Datenbanken

Key/Value-Datenbanken​

Die Idee der Key/Value-Datenbanken ist einfach: Wir speichern die einzelnen Datensätze zusammen mit dem Schlüssel ab. Ein Datensatz ist meist eine Zeichenkette, kann aber auch aus einer komplexen Struktur bestehen. Key/Value-Datenbanken sind sehr einfach zu skalieren und daher im Cloud-Computing weit verbreitet.

Beispiele:

  • Dynamo (von Amazon, aktuell beliebt)
  • Riak (Open Source)

Dokumentbasierte Datenbanken​

In dokumentenbasierten Datenbanken werden alle Daten als Dokumente abgelegt. Diese Datenbanken haben ihren Ursprung in Lotus Notes. In diesen Datenbanken gibt es keine fest vorgeschriebenen Strukturen, da sich praktisch alle Daten als Dokumente definieren und speichern lassen. Dies ist vor allem bei WEB-Anwendungen von groĂźem Vorteil. Die beiden mit Abstand wichtigsten Vertreter sind MongoDB und CouchDB.

Spaltenorientierte Datenbanken​

Spaltenorientierte Datenbanken speichern die Daten nicht zeilen- sondern spaltenweise. In der Praxis werden heute nur selten reine spaltenorientierte Modelle eingesetzt. Vielmehr orientieren sich die meisten dieser Datenbanken am Big-Table-Konzept von Google. Es handelt sich um eine Mischform von Key-Value- und Spalten-Datenbanken. Eine Big-Table wird beispielsweise sowohl durch einen Zeilen- als auch einen Spaltenindex indiziert. Zusätzlich wird mit den Daten ein Zeitstempel abgespeichert.

Da in einer Big-Table keine Daten gelöscht werden, erfolgt der Zugriff auf gültige Daten immer mittels des Tripels Zeilenindex, Spaltenindex und Zeitstempel.

Beispiele:

  • Google Big-Table
  • Microsoft HBase
  • Apache Cassandra

Graphendatenbanken​

Graphdatenbanken werden vor allem in Navigationsgeräten eingesetzt. Sie finden aber auch in Geodatenbanken und in sozialen Netzwerken breite Anwendung. Grundlage dieser Datenbanken ist die Graphentheorie. Diese Datenbanken sind hervorragend geeignet, um Graphen zu durchsuchen. Sie ermöglichen eine schnelle rekursive Suche ohne aufwendige Verbund-Operationen. Dabei sind die gespeicherten Daten in der Regel unstrukturiert.

Beispiele:

  • Neo4J und OrientDB (Open Source)
  • GraphDB (Fa. Sones)