Dokumentenorientierte Datenbank

Beispiel eines möglichen Dokuments, dargestellt im JSON-Format
Beispiel eines möglichen Dokuments, dargestellt im JSON-Format

Dokumentenorientierte Datenbanken zählen zu den zentralen NoSQL-Technologien. Da sowohl von dokumentenbasierten als auch von dokumentenorientierten Datenbanken gesprochen wird, werden die Begriffe hier synonym verwendet.

Eine Dokumentenbasierte Datenbank speichert Daten nicht, wie man es von relationalen Datenbanken kennt, in Form von Tabellen?, sondern in sog. Dokumenten ab. Ein Dokument ist in diesem Zusammenhang zu verstehen als eine strukturierte Zusammenstellung bestimmter Daten. Der Begriff des Dokuments im Bezug auf dokumentenbasierte Datenbanken bezeichnet nicht die beispielsweise von Textverarbeitungsprogrammen erzeugten Dateien, welche gemeinhin ebenfalls als Dokumente bezeichnet werden.

Die Daten in einem Dokument werden in Form von Key/Value-Paaren gespeichert, es besteht somit aus einer Reihe benannter Schlüsselfelder, denen jeweils ein konkreter Wert zugeordnet ist. Dabei meint der Begriff "Wert" kein atomares Datum, sondern eine beliebige Information. Bei dieser Information kann es sich auch um eine Liste oder ein Array handeln, die selbst wiederum geschachtelte Datentypen enthalten können. Ein Dokument gespeichert im JSON-Format ist auf der rechten Seite beispielhaft dargestellt.

Die dokumentenbasierte Speicherung von Daten genügt somit keiner Normalform, eine spezifische Strukturierung der zu speichernden Daten ist nicht vorgeschrieben. In jedem einzelnen Dokument kann eine andere Struktur zu finden sein, ein allumfassendes, die ganze Datenbank umspannendes Datenbankschema existiert nicht, man spricht in diesem Zusammenhang von Schemafreiheit.

Durch die kaum vorhandenen Einschränkung beim Aufbau der Dokumente ergibt sich eine umfassende Gestaltungsfreiheit für diejenigen, die mit einer dokumentenbasierten Datenbank arbeiten. Jedoch folgt aus dieser Freiheit auch ein gewisser Aufwand, da die Struktur der Dokumente selbst festgelegt und kontrolliert werden muss, dabei muss auf viele komfortable Funktionen der relationalen Datenbanken, wie etwa eigens definierte Constraints oder Trigger, verzichtet werden. Prüfungsmechanismen für die eingegebenen Werte sind im jeweiligen Anwendungsprogramm zu implementieren.

In dokumentenbasierten Datenbanken existieren keine Relationen zwischen einzelnen Dokumenten, jedes Dokument ist eine in sich geschlossene Einheit mit individuellem Schema und individuellen Inhalten. Jedes Dokument ist durch einen innerhalb der Datenbank eindeutigen Bezeichner gekennzeichnet. Operationen mit den in Dokumenten gespeicherten Daten sind dementsprechend manuell zu programmieren, die Datenbank selbst verfügt über keine ähnlich mächtige Abfragesprache wie SQL, in der entsprechende Operationen bereits enthalten sind.

Ein Grundgedanke hinter der Entwicklung von dokumentenbasierten Datenbanken ist der, zusammengehörige Daten auch zusammen zu speichern. In einer relationalen Datenbank sind Daten in verschiedenen Tabellen getrennt gespeichert, in denen jeweils nur eine Art von Information festgehalten ist. Meist ist es nötig, mehrere Tabellen abzufragen, entsprechende Datensätze auszulesen und zu kombinieren, beispielsweise beim Erstellen von Views. Eine dokumentenbasierte Datenbank bietet die Möglichkeit, real existierende Dokumente angemessen abzubilden und zu speichern. Dokumentenbasierte Datenbanken werden vor allem im Bereich der Web-Applikationen eingesetzt. Das dokumentenbasierte Speicherformat eignet sich insbesondere für die Speicherung durch HTML-Formulare übertragener Daten. In der jüngeren Vergangenheit sind besonders die Implementierungen "CouchDB" und "MongoDB" zu entsprechender Bekanntheit gelangt. Der prominenteste Vertreter der dokumentenbasierten Datenbanken ist Lotus Notes von IBM, das bereits 1984 entwickelt wurde. Dokumentenorientierte Datenbanken erfreuen sich vor allem seit den gestiegenen Anforderungen an Datenbanksysteme im Verlauf der Entwicklung des Web 2.0 wachsender Beliebtheit.

Das das Konzept einer dokumentenorientierten Datenbank selbst recht allgemein ist, ist es erforderlich, bei der Frage nach dem Einsatz eines derartigen Systems die entsprechenden Implementierungen zu betrachten. Im Gegensatz zu relationalen DBMS, die mit SQL über einen einheitlichen Standard verfügen und diesen in den meisten Implementierungen auch in den wichtigsten Aspekten beachten, unterscheiden sich die Implementierungen einer dokumentenbasierten Datenbank mitunter erheblich in ihrem Funktionsumfang. So verfügt beispielsweise MongoDB, im Gegensatz zu CouchDB, über eine eigene Syntax für dynamische Abfragen. Verschiedene Implementierungen von dokumentenorientierten Datenbanken können also durchaus für unterschiedliche Anwendungsfelder geeignet sein.


Eine kurze Liste dokumentorientierter Datenbanken:

Quellen

Kategorie: Neue DB-Entwicklungen, Dokument-DB, NoSQL, D