Dokumentenorientierte Datenbank: Wie funktioniert der Document Store?

Datenbanken sind notwendig, um Informationen vernünftig organisieren zu können. Doch es gibt unterschiedliche Methoden, wie Datenbanken aufgebaut sein können. In der EDV sind vor allem relationale Datenbanken üblich und weit verbreitet. Daneben gibt es aber auch sogenannte dokumentenorientierte Datenbanken. Diese bauen auf eine einfache Tabellenstruktur und Dokumenten zur Speicherung von Informationen auf. Wie funktionieren diese Datenbanken und was sind die Vorteile?

Was ist ein Document Store?

Dokumentenorientierte Datenbanken – auch Document Store genannt – werden für die Verwaltung von semistrukturierten Daten verwendet. Dabei handelt es sich um Daten, die keiner festen Struktur folgen, sondern die Struktur quasi in sich selbst tragen. Anhand von Markierungen innerhalb der semistrukturierten Daten kann dennoch eine Ordnung der Informationen vorgenommen werden. Aufgrund der fehlenden klaren Struktur sind diese Daten nicht für relationale Datenbanken geeignet, da sich ihre Informationen nicht in Tabellen einordnen lassen.

Die dokumentenorientierte Datenbank erstellt ein einfaches Paar: Einem Schlüssel wird ein spezifisches Dokument zugeordnet. In diesem Dokument, das zum Beispiel mit XML, JSON oder YAML formatiert sein kann, sind dann die eigentlichen Informationen zu finden. Da die Datenbank kein bestimmtes Schema verlangt, kann man auch unterschiedliche Dokumententypen gemeinsam in einen Document Store einbinden. Änderungen an den Dokumenten müssen der Datenbank nicht mitgeteilt werden.

Hinweis

Die dokumentenorientierte Datenbank weist viele Ähnlichkeit zu anderen Datenbankmodellen auf: Man kann das System als Unterkategorie der NoSQL-Datenbanken sehen und durch die Verbindung von Schlüssel und Dokument besteht eine starke Nähe zu Key-Value-Datenbanken. Als zeilenorientiertes System steht es wiederum den spaltenorientierten Datenbanken gegenüber.

Wie funktionieren dokumentenorientierte Datenbanken?

Theoretisch kann man Daten unterschiedlichster Formate und ohne ein durchgängiges Schema in einer dokumentenorientierten Datenbank unterbringen. In der Praxis verwendetet man aber in der Regel ein Dateiformat für die Dokumente und baut die Informationen in einer festen Struktur auf. Das erleichtert die Arbeit mit den Informationen und der Datenbank. Durch die Ordnung können beispielsweise Suchanfragen an die Datenbank besser verarbeitet werden. Generell kann man mit einer dokumentenbasierten Datenbank die gleichen Aktionen durchführen wie auch mit einem relationalen System: Informationen lassen sich einfügen, ändern, löschen und abfragen.

Damit sich die Aktionen durchführen lassen, erhält jedes Dokument eine eindeutige ID. Wie diese gestaltet ist, ist prinzipiell nicht wichtig. Sowohl eine einfache Zeichenfolge als auch der komplette Pfad können genutzt werden, um das Dokument zu adressieren. Bei einer Suche nach Informationen werden die Dokumente selbst überprüft: Es werden also nicht innerhalb der Datenbank mehrere Spalten mit entsprechenden Daten durchsucht, sondern stattdessen die Daten direkt aus dem Dokument gezogen.

Was sind die Vor- und Nachteile von Document-oriented Databases?

In klassischen relationalen Datenbanken muss für jede Information ein Feld existieren – und zwar in jedem Eintrag. Wenn die Information nicht zur Verfügung steht, bleibt die Zelle leer, muss aber angelegt sein. Dokumentenorientierte Datenbanken sind sehr viel flexibler: Die Struktur der einzelnen Dokumente muss nicht konsistent sein. Auch große unstrukturierte Datenmengen können so in der Datenbank untergebracht werden.

Außerdem ist es einfacher, neue Informationen einzugliedern: Während man bei einer relationalen Datenbank einen neuen Informationspunkt in alle Datensätze einfügen muss, reicht es bei einem Document Store, die Neuheit in nur wenige Datensätze zu integrieren. In weitere Dokumente kann der zusätzliche Inhalt eingefügt werden – muss er aber nicht.

Zusätzlich werden die Informationen bei Document Stores nicht über mehrere untereinander verknüpfte Tabellen verteilt. Alles befindet sich an einem Ort, was zu einer besseren Performance führen kann. Diesen Geschwindigkeitsvorteil können dokumentenorientierte Datenbanken allerdings nur ausspielen, solange man nicht versucht, sie mit relationalen Elementen zu versehen: Referenzen passen eigentlich nicht in das Konzept von Document Stores. Versucht man dennoch, die Dokumente untereinander zu vernetzen, wird das System sehr komplex und sperrig. Bei stark vernetzten Datenmengen ist also ein relationales Datenbanksystem vorzuziehen.

Die bekanntesten dokumentenorientierte Datenbanken

Besonders für die Entwicklung von Web-Apps haben Datenbanken für Dokumente eine große Bedeutung. Aufgrund des hohen Bedarfs, der sich durch die Webentwicklung ergibt, sind inzwischen auch zahlreiche Datenbankmanagementsysteme (DBMS) auf dem Markt verfügbar. Die nachfolgende Auswahl stellt Ihnen die bekanntesten vor:

  • BaseX: Das Open-Source-Projekt nutzt Java und XML. BaseX wird mit einer grafischen Benutzeroberfläche ausgeliefert.
  • CouchDB: Die Apache Software Foundation veröffentlichte die Open-Source-Software CouchDB. Das Datenbankmanagementsystem ist in Erlang geschrieben, nutzt JavaScript und kommt unter anderem in Ubuntu und in Facebook-Anwendungen zum Einsatz.
  • Elasticsearch: Die Suchmaschine arbeitet auf Basis einer dokumentenorientierten Datenbank. Dafür kommen JSON-Dokumente zum Einsatz.
  • eXist: Das quelloffene DBMS eXist läuft über eine Java Virtual Machine und lässt sich deshalb unabhängig vom Betriebssystem verwenden. Zum Einsatz kommen vor allem XML-Dokumente.
  • MongoDB: MongoDB ist die am weitesten verbreitete NoSQL-Datenbank. Die Software ist in C++ geschrieben und verwendet JSON-ähnliche Dokumente.
  • SimpleDB: Amazon hat mit SimpleDB (in Erlang verfasst) für die unternehmenseigenen Cloud-Dienste ein eigenes DBMS entwickelt. Für die Nutzung verlangt der Anbieter eine Gebühr.

Auf dem Laufenden bleiben?

Jetzt für unseren Newsletter anmelden und gratis Online-Marketing Whitepaper für lokale Anbieter sichern!