Relationale versus dokumentbasierte Datenbankenmodelle und deren Einsatz

Lesedauer ca. 6 min
 
Relationale Datenbanken wurden jahrzehntelang als optimale Lösung für die Verwaltung von Daten angesehen. Nicht umsonst stellen Datenbank-Managementsysteme, wie beispielsweise MySQL oder PostgreSQL, heute noch die Basis für zahlreiche Softwareprojekte dar. Das immer größer werdende Volumen und die gigantische Vielfalt an Daten, die moderne Informationssysteme ausmachen, haben einen neuen Ansatz für die Verwaltung von Daten ins Leben gerufen. Die Rede ist von nichtrelationalen Datenbanksystemen. Diese verteilten Systeme zur Datenspeicherung - wie das im Jahr 2009 veröffentlichte MongoDB - sind dokumentenorientiert und werden auch als NoSQL- Datenbank-Managementsysteme (Not Only SQL) bezeichnet, wobei sich SQL (Structured Query Language) auf die traditionelle Abfragesprache der relationalen Datenbanken bezieht.
 
Eine NoSQL Datenbank stellt zwar höhere Ansprüche an die Anwendungslogik, bietet jedoch gleichzeitig eine erhöhte Flexibilität beim Umgang mit Daten und erlaubt auf einfache Art die bestehenden Arbeitsprozesse und den Datenbestand auf eine Vielzahl von Servern zu verteilen, wodurch Datenbanksysteme wie MongoDB nahezu unbegrenzt horizontal skalierbar sind.
 
Was ist MongoDB ?
 
Bei MongoDB handelt es sich um die aktuell beliebteste frei erhältliche NoSQL Datenbank. Sie wurde vom Unternehmen „10gen“ entwickelt und im Jahr 2009 erstmals der breiten Öffentlichkeit zugänglich gemacht. Die Datenbank hat sich binnen kürzester Zeit als die meist genutzte NoSQL Datenbank etabliert. 10gen hat mit MongoDB Inc. einen neuen Namen bekommen, inzwischen börsennotiert und bietet heute neben der freien Variante zusätzlich kommerzielle und gehostete Versionen an.
 
Die Datenbank ist in der Programmiersprache C++ entwickelt und speichert Daten im BSON-Format (Binary JSON), welches stark an das JSON-Format angelehnt ist. MongoDB ist auf allen aktuellen Betriebssystemen (Windows, Linux, Mac) lauffähig. Es bietet eine native Unterstützung für alle JavaScript-Datentypen und stellt aus diesem Grund die ideale Datenbank für den Einsatz in Kombination mit Node.js dar. Die NoSQL Datenbank verfügt über eine oder mehrere Datensammlungen, die unterschiedliche Dokumente verwalten. Im Vergleich zu Relationen in relationalen Datenbanken, die eine feste Struktur aufweisen müssen, können diese Dokumente beliebig viele und verschiedenartige Felder enthalten.
 
Die Verbindung zu einem MongoDB-Datenbankserver lässt sich auf unterschiedliche Weisen realisieren. Überall vorhanden, aber auch nicht sehr bedienerfreundlich, ist die sogenannte „Mongo Shell“. Hierbei handelt es sich um einen Client, der die Verwaltung über Kommandozeile ermöglicht.  Um die gespeicherten Daten visuell darstellen und verwalten zu können, werden auch diverse Nutzeroberflächen bereitgestellt, wie zum Beispiel das frei erhältliche Robo3T oder auch das kommerzielle Studio3T. Ebenfalls gibt es für gängige Entwicklerwerkzeuge wie IntelliJ oder Visual Studio Code entsprechende Plugins.
 
Relationale versus dokumentbasierte Datenbankenmodelle im Vergleich
 
MongoDB basiert im Gegensatz zu relationalen Datenbanken auf einem dokumentbasierten Ansatz. Dieser orientiert sich bei der Speicherung der Daten an einem ganz anderen Prinzip, wobei die Grundkonzepte zwischen den dokumentbasierten und relationalen Datenbanken gewisse Ähnlichkeiten aufweisen:
 
  • Anstatt in Relationen (Tabellen), speichern dokumentenbasierte Datenbanken die Daten in sogenannten Collections (Sammelmappen)
  • Die Zeilen werden durch Dokumente im BSON-Format ersetzt.
  • Ein Feld stellt dabei immer ein Paar dar. Ein solches Paar setzt sich aus einem Schlüssel, der zugleich auch den Namen des Feldes darstellt, und einem Wert zusammen. Dieser Wert kann für eine Zeichenkette, eine Zahl, einen Text oder auch für komplette Dateien sowie Listen von Zahlen und Zeichenketten stehen.
 
Ein NoSQL-Dokument stellt damit eine Sammlung von Schlüssel-Werte-Paaren dar, grundsätzlich analog zur Tabellenzeile in einer SQL Datenbanktabelle. Der wesentliche Unterschied zwischen diesen beiden Systemen spiegelt sich in der Tatsache wider, dass dokumentbasierte Datenbanken kein festes Schema haben.  Denn im Gegensatz zu MongoDB müssen in einer relationalen Datenbank  alle Zeilen einen identischen Aufbau haben. Konkret bedeutet das, dass sie die gleiche Anzahl an Werten mit den jeweils gleichen Datentypen sowie Restriktionen haben.
 
Die einzelnen Dokumente in einer NoSQL Datenbank besitzen hingegen eine eigene, individuelle Struktur. Auf diese Weise können Entwickler bei Bedarf jederzeit neue Felder mit beliebigen Werten hinzufügen, was bei relationalen Datenbanken, wie PostgreSQL oder MySQL, eine explizite Umgestaltung des Schemas benötigt. Innerhalb eines Dokuments muss zwar der Schlüssel einzigartig sein, er kann aber auch in anderen Dokumenten genutzt werden. Bei relationalen Datenbanken ist dies nicht möglich, da Primär- (PK) und Fremdschlüssel (FK) stets einzigartig sein müssen, um Relationen (JOINS) zwischen den einzelnen Tabellen zu realisieren. Bei einer NoSQL Datenbank werden diese Verhältnisse optional in Form von Referenzen oder eingebetteten Dokumenten geregelt.
 
Eine Datenmigration lässt sich bei MongoDB äußerst einfach realisieren. Eine Schemamigration ist in der Regel nicht nötig, es sei denn, dass das JSON-Schema zu Beginn explizit festgelegt wurde - was von MongoDB inzwischen unterstützt wird. Relationale Datenbanken benötigen hingegen eine explizite SQL Migration, die in der Regel durch mittels spezieller Tools realisiert wird. Die Ausführung einer SQL Migration kann eine gewisse Komplexität mit sich führen. Aus diesem Grund kommt der Ausarbeitung eines detaillierten Plans für die Datenmigration eine besonders wichtige Rolle zu. Alle wichtigen Systeme sollten während der Migration eine möglichst geringe Downtime haben. Hier sind nicht-destruktive Migrationen wichtig.
 
Einsatzszenarien für dokumentenbasierte Datenbanken
 
Dokumentenbasierte Datenbanksysteme stellen immer dann eine gute Wahl dar, wenn Sie Webprojekte möglichst schnell und effizient umsetzen oder ein sogenanntes „Minimum Viable Product“ (MVP) entwickeln möchten, um iterativ aus Nutzerfeedback zu lernen und das Produkt an die tatsächlichen Bedürfnisse der Kunden anzupassen. MVP und Projekte mit sehr großen unstrukturierten Datenmengen sind einige der Einsatzgebiete, wo dokumentbasierte Datenbanken ihr volles Potenzial entfalten können.
 
Die dokumentbasierte Speicherung von Daten, die kein festes Schema benötigen, eignet sich optimal für heterogene Datentypen, die schnell gespeichert, verarbeitet und verwaltet werden müssen. Solche Datenbanksysteme zeichnen sich außerdem wie eingangs erwähnt durch eine nahezu unbegrenzte horizontale Skalierung aus. NoSQL Datenbanken lassen sich schnell und einfach auf mehrere Server verteilen, ohne dass dabei die Funktionsfähigkeit beeinträchtigt wird. Neue Server können bei Bedarf jederzeit hinzugefügt werden.
 
Um die Sicherheit und Verfügbarkeit der Daten sicherzustellen, ist eine NoSQL Datenbank in der Lage, Kopien des gesamten Datenbestandes schnell und einfach zu erstellen und auf speziellen Backup-Servern bereitzustellen. Auch bei der Konsolidierung verschiedener Datenmengen aus einer oder mehrere Quellen sowie bei der Datenmigration können dokumentorientierte Datenbanken ihr volles Potenzial entfalten und bieten im Vergleich zu relationalen Datenbanksystemen hier Vorteile.
 
Fazit
 
Der Einsatz einer dokumentbasierten Datenbank ist für alle web- oder datenbasierte Projekte geeignet, die sich durch folgende Merkmale auszeichnen:
 
  • Flexibilität: Sie legen einen großen Wert darauf, dass Ihr Webprojekt möglichst flexibel ist und sich jederzeit dynamisch an neue Anforderungen anpassen lässt.
  • Hohe Verfügbarkeit: Eine hohe Verfügbarkeit soll stets gewährleistet werden: Ihr Unternehmen und Ihre Kunden sind darauf angewiesen, dass Ihr Webservice stets in voller Kapazität verfügbar ist und dass selbst im Falle von Serverausfällen die Funktionsfähigkeit Ihres Webdienstes in voller Kapazität erhalten bleibt.
  • Skalierbarkeit: Sie benötigen dynamische Skalierbarkeit: Sollten die Nutzerzahlen Ihres Webdienstes stark wachsen, steigt zugleich auch die Anzahl der Anfragen an die Datenbank, wodurch das Datenbanksystem einer stärkeren Belastung ausgesetzt wird. Dokumentorientierte Datenbankensysteme bietet erstklassige horizontale Skalierungsmöglichkeiten, sodass neue Server jederzeit hinzugefügt werden können, um eine Überlastung des Systems zu verhindern.
 
Obwohl die relationalen Datenbanken, wie PostgreSQL und MySQL mehr Flexibilität beim Zugriff auf die gespeicherten Daten bieten, erlaubt MongoDB hingegen eine äußerst flexible Speicherung der Daten. Beim Zugriff auf die gespeicherten Daten bieten relationale Datenbanksysteme aufgrund ihrer flexiblen Zugriffssemantik jedoch bessere Möglichkeiten. Eine dokumentbasierte Datenbank ermöglicht zwar das Speichern schemafreier Daten. Falls sich diese Daten jedoch, wie es in den meisten Fällen üblich ist, aus mehreren Relationen zusammensetzen, werden sie entweder eingebettet oder über ID-Referenzen miteinander verbunden.  Hier kommt einer der größten Nachteile von NoSQL zum Tragen: deutlich schlechtere, bzw. umständlichere Abfragemöglichkeiten im Vergleich zu relationalen Datenbanken. MongoDB bietet zur Abfrage von relationalen Daten inzwischen sog. „Lookups“, die effektiv SQL JOINs sind, darüberhinaus sogar echte Transaktionen, jedoch steht dies im Funktionsumfang hinter traditionellen SQL Datenbanken weit zurück.
 
Weiterhin werden die Nachteile einer schemafreien Struktur oft erst später in der Entwicklung einer Anwendung offensichtlich. Nämlich dann wenn sich die Daten als inhärent relational und schemagebunden erweisen.
 
Obwohl das NoSQL-Prinzip also durchaus seine Daseinsberechtigung hat und in einer Vielzahl verschiedener Einsatzszenarien sein volles Potenzial an Möglichkeiten entfalten kann, sollten die jahrzehntelange Entwicklung des relationalen Modells und moderner SQL-Datenbankensysteme nicht einfach so „aus Modegründen“ ignoriert werden.
 
Dokumentenbasierte Datenbanksysteme eignen sich - wie der Name schon sagt - besonders gut für das Speichern von in sich abgeschlossenen Dokumenten. Dies ist immer dann von Bedeutung, wenn geringe Konsistenzgarantien benötigt werden, die Struktur der gespeicherten Daten noch nicht in vollem Umfang bekannt ist oder wenn sich die Daten aus wenigen Relationen zusammensetzen. NoSQL Datenbanken haben insbesondere in der JavaScript-Entwicklerszene innerhalb kürzester Zeit  eine große Popularität erlangt. Da sich JavaScript im Rahmen der Frontententwicklung als der De-Facto-Standard etabliert hat, bietet MongoDB Frontendentwicklern optimale Einstiegsmöglichkeiten in die Full-Stack-Webentwicklung. Nicht umsonst genießt der sogenannte „MEAN-Stack“ in der Webentwickler-Community eine enorme Beliebtheit. Insbesondere für Produktprototypen, erste Testversionen und MVP bieten NoSQL Datenbanken in Kombination mit Webtechnologien wie NodeJS und Angular eine Vielzahl von Vorteilen.

 

Zurück