Relationale Datenbanken, anders als MongoDB, wurden jahrzehntelang als die einzige Lösung zur Archivierung und Verwaltung elektronischer Daten angesehen. Nicht ohne Grund handelt es sich bei dem im Jahr 1995 veröffentlichten Datenbanksystem MySQL auch heute noch um das beliebteste Datenbank-Managementsystem für viele Webanwendungen.

Das kontinuierlich steigende Volumen an Daten, mit dem moderne Webanwendungen konfrontiert werden, bedarf jedoch neuer Ansätze und Lösungen. Genau diese Probleme versuchen Datenbanken mit nichtrelationalem Ansatz zu lösen, die sich allmählich zu ernsthaften Konkurrenten des traditionellen Modells entwickeln. Diese verteilten Systeme, wie beispielsweise das im Jahr 2009 erschienene MongoDB, basieren auf dokumentorientierten Prinzipien und werden als NoSQL-Datenbanken bezeichnet (Not only SQL), da sie auf den Einsatz der traditionellen Abfragesprache SQL völlig verzichten. Obwohl dies zwar höhere Ansprüche an die Anwendungsschicht stellt, erlaubt es jedoch den Datenbestand und Arbeitsprozesse auf verschiedene virtuelle Server zu verteilen, sodass sich diese modernen Systeme fast unbegrenzt skalieren lassen.

MongoDB im Detail

Das US-amerikanische Unternehmen 10gen mit Hauptsitz in Palo Alto im US-amerikanischen Bundesstaat Kalifornien begann im Jahr 2007 mit der Entwicklung von MongoDB, einer dokumentorientierten NoSQL-Datenbank, die zwei Jahre später in der finalen Version der breiten Öffentlichkeit vorgestellt wurde. Die Open-Source-Datenbank entwickelte sich binnen kürzester Zeit zu der beliebtesten NoSQL-Datenbank. Das Unternehmen 10gen, das jetzt als MongoDB Inc. firmiert, ist weiterhin für die Entwicklung, Verwaltung und den Vertrieb kommerzieller Lösungen verantwortlich.

Die NoSQL-Datenbank MongoDB ist in der Programmiersprache C++ entwickelt und speichert Daten im binären JSON-Format „BSON“, das sich im hohen Maße am JSON-Format (JavaScript Object Notation) orientiert. Dadurch werden sämtliche JS-Datentypen unterstützt, weshalb MongoDB in erster Linie in NodeJS-Anwendungen eingesetzt wird. Eine MongoDB-Datenbank setzt sich aus einer oder mehreren Datensammlungen zusammen, die unterschiedliche Dokumente mit unendlich vielen und verschiedenen Datenfeldern verwalten.

In vielen Distributionen ist die Mongo Shell standardmäßig enthalten. Dabei handelt es sich um einen Client, mit dem sich der Zugriff via Kommandozeile realisieren lässt. Darüber hinaus lässt sich eine webbasierte Administrationsoberfläche aktivieren und direkt im Webbrowser aufrufen. Zusätzlich sind verschiedene Nutzeroberflächen erhältlich, wie beispielsweise:

–       MongoChef

–       MongoClient

–       RoboMongo

Mit diesen Tools können Sie die Daten grafisch anzeigen lassen und bearbeiten. MongoDB ist mit allen aktuellen Windows-, Linux- und MacOS-Systemen kompatibel.

Mehr zum Thema:
Faktura oder Rechnungsstellung - der kleine Unterschied

Datenbankenmodelle im Vergleich: NoSQL vs. SQL

Anders als relationale Datenbanken verfolgt MongoDB einen dokumentorientierten Ansatz und geht dementsprechend ganz andere Wege bei der Speicherung der Daten. Die Grundstruktur weist jedoch gewisse Ähnlichkeiten auf:

–       Die Daten werden anstatt in Tabellen in Sammelmappen, den sogenannten „Collections“ gespeichert.

–       Die Spalten der SQL-Tabellen werden durch Zeilen ersetzt, die durch Dokumente im BSON-Format definiert werden.

–       Ein Feld setzt sich dabei immer aus einem Paar zusammen, und zwar einem Schlüssel, der den Namen des Feldes darstellt, und dem jeweiligen Wert.

Bei einem MongoDB-Dokument handelt es sich also um eine Sammlung von Schlüssel-Werte-Paaren. Der bedeutendste Unterschied zwischen NoSQL- und SQL-Systemen spiegelt sich jedoch in der Tatsache wider, dass MongoDB-Dokumente keinem festen Schema folgen. Dokumente in einer NoSQL-Datenbank haben ihre eigene einzigartige Struktur. Dadurch können jederzeit neue Felder mit neuen Werten hinzugefügt werden, was bei einer SQL-Datenbank wie MySQL undenkbar wäre und eine komplette Umstrukturierung des Systems erfordern würde.

Wo wird MongoDB eingesetzt?

Die hoch performante Datenbank ist immer dann eine gute Wahl, wenn Sie Webanwendungen realisieren möchten, die auf einer großen Menge unstrukturierter Daten basieren. Der dokumentbasierte Ansatz und die Tatsache, ohne an ein festes Schema gebunden zu sein, ermöglicht, dass unterschiedliche Datentypen schnell verarbeitet und gespeichert werden können. MongoDB kann außerdem nahezu unbegrenzt skaliert werden, da sich die Datenbank schnell und unkompliziert auf mehrere virtuelle Server verteilen lässt, ohne die Performance einzuschränken. Um die Verfügbarkeit und Sicherheit der gespeicherten Daten zu gewährleisten stellt MongoDB mehrere Mechanismen zur Verfügung.

Der Einsatz von MongoDB kann dementsprechend für alle Webanwendungen empfohlen werden, bei denen folgende Kriterien wichtig sind:

–       Flexibilität: Das Webprojekt soll jederzeit dynamisch modifiziert werden können.

–       Skalierbarkeit: Wenn die Anzahl Ihrer Nutzer steigt, wird auch dementsprechend die Zahl der Anfragen größer.

–       Verfügbarkeit: Die Webanwendung soll jederzeit in der Lage sein, Dienste Ihren Nutzern zur Verfügung zu stellen, selbst im Falle Serverausfalls.

In der Verteilung der Daten auf mehrere virtuelle Server besteht der wesentliche Unterschied zwischen MongoDB und relationalen Datenbanken: Nach der Speicherung der Daten bleibt ein kurzes Zeitfenster offen, in dem nachfolgende Lesezugriffe nur auf den alten Datenbestand zurückgreifen können. Dieses Konsistenzmodell wird als „Eventual Consistency“ bezeichnet.  Es stellt die Funktionalität zur Verfügung, das virtuelle Datenbanken-Server, die Teil eines größeren Datenbank-Clusters sind, Schreibzugriffe von Webanwendungen zulassen können, wenn sie vom Cluster getrennt sind.

Mehr zum Thema:
Was ist Software Deployment?
Letzte Artikel von Daniel Faust (Alle anzeigen)