MongoDB: Alles Wissenswerte über das dokumentenorientierte

MongoDB ist eine dokumentenorientierte NoSQL-Datenbank. Sie unterscheidet sich von relationalen Datenbanken durch ihre Flexibilität und Leistungsfähigkeit. Hier erfährst Du alles, was Du über dieses unverzichtbare Werkzeug für das Data Engineering wissen musst.

MongoDB ist eine dokumentenorientierte NoSQL-Datenbank, die Mitte der 2000er Jahre auf den Markt kam. Sie wird für die Entwicklung von Webanwendungen, aber auch für die Speicherung großer Datenmengen und Big-Data-Workloads verwendet.

Im Gegensatz zu einer herkömmlichen relationalen SQL-Datenbank basiert MongoDB nicht auf Tabellen und Spalten. Sie unterstützt die Speicherung von Daten in Form von Sammlungen und Dokumenten.

Dokumente sind Paare von Werten/Schlüsseln, die als grundlegende Dateneinheit dienen. Collections (dt. Sammlungen) hingegen enthalten Sätze von Dokumenten und Funktionen. Sie entsprechen den Tabellen in herkömmlichen relationalen Datenbanken.

MongoDB ist eine Open-Source-Software: Du kannst die Community-Version von MongoDB herunterladen, ohne für die Lizenz zu bezahlen. Jedoch muss man für die Unternehmen-Version, die Sicherheits-, Verwaltungs-, Authentifizierungs- und Überwachungsfunktionen über den Ops Manager bietet, eine Lizenz bezahlen.

Was sind die Merkmale von MongoDB?

Jede MongoDB-Datenbank enthält Collections, die ihrerseits Dokumente enthalten. Jedes Dokument ist unterschiedlich und kann eine variable Anzahl von Feldern enthalten. Auch die Größe und der Inhalt jedes Dokuments variieren.

Die Struktur eines Dokuments hängt davon ab, wie Entwickler und Entwicklerinnen ihre Klassen und Objekte in der verwendeten Programmiersprache aufbauen. Klassen bestehen in der Regel nicht aus Zeilen und Spalten, sondern haben eine klare Struktur, die aus Werte-/Schlüsselpaaren besteht.

Dokumente haben kein vordefiniertes Schema und Felder können nach Belieben hinzugefügt werden. Das innerhalb von MongoDB verfügbare Datenmodell macht es einfacher, hierarchische Beziehungen oder andere komplexe Strukturen darzustellen.

Ein weiteres wichtiges Merkmal von MongoDB ist die Elastizität seiner Umgebungen. Viele Unternehmen haben Cluster mit mehr als 100 Knoten für Datenbanken mit Millionen von Dokumenten.

Die MongoDB-Architektur und ihre Komponenten

Die MongoDB-Architektur basiert auf mehreren Hauptkomponenten. Zunächst einmal ist „_id“ ein Feld, das für jedes Dokument erforderlich ist. Es stellt einen eindeutigen Wert dar und kann als Hauptschlüssel des Dokuments betrachtet werden, mit dem es innerhalb der Collection identifiziert werden kann.

Ein Dokument gleicht einem Datensatz in einer herkömmlichen Datenbank. Es besteht aus Feldern mit Namen und Werten. Jedes Feld ist eine Assoziation zwischen einem Namen und einem Wert und ähnelt einer Spalte in einer relationalen Datenbank.

Eine Collection ist eine Gruppe von MongoDB-Dokumenten und entspricht einer Tabelle, die mit einem beliebigen anderen RDBMS (Relational Database Management System) wie Oracle oder MS SQL in einer relationalen Datenbank erstellt wurde. Sie hat keine vordefinierte Struktur.

Eine Datenbank ist ein Container für Collections, genauso wie ein RDBMS ein Container für Tabellen bei relationalen Datenbanken ist. Jede hat ihren eigenen Satz von Dateien auf dem Dateisystem. Ein MongoDB-Server kann mehrere Datenbanken speichern.

Schließlich ist JSON (JavaScript Object Notation) ein Klartextformat, um strukturierte Daten auszudrücken. Es wird von vielen Programmiersprachen unterstützt.

Warum solltest Du MongoDB verwenden? Was sind die Vorteile?

MongoDB bietet mehrere wichtige Vorteile. Zunächst einmal erweist sich diese dokumentenorientierte NoSQL-Datenbank als sehr flexibel und eignet sich für konkrete Anwendungsfälle in einem Unternehmen.

Mit Ad-hoc-Abfragen kannst Du bestimmte Felder innerhalb von Dokumenten finden. Erwähnenswert ist auch die Möglichkeit, Indizes zu erstellen, um die Suchleistung zu verbessern. Jedes beliebige Feld kann indexiert werden.

Ein weiterer Vorteil ist die Möglichkeit, „replica sets“ zu erstellen, die aus zwei oder mehr MongoDB-Instanzen bestehen. Jedes Mitglied kann jederzeit die Rolle eines Secondary- oder Primary-Set übernehmen.

Der Primary-Set ist der Hauptserver, der mit dem Client interagiert und alle Lese- und Schreiboperationen durchführt. Die Secondaries Sets ihrerseits bewahren eine Kopie der Daten auf. Bei einem Ausfall des Primary Sets wird automatisch auf das Secondary Set umgeschaltet. Dieses System garantiert eine hohe Verfügbarkeit.

Schließlich ermöglicht das Sharding-Konzept horizontales Scaling, indem die Daten auf mehrere MongoDB-Instanzen verteilt werden. Die Datenbank kann auf mehreren Servern ausgeführt werden: Dies ermöglicht einen Lastausgleich oder die Duplizierung von Daten, um das System im Falle eines Hardwareausfalls funktionsfähig zu halten.

Aufgrund dieser zahlreichen Vorteile ist MongoDB heute ein viel genutztes Werkzeug im Bereich des Data Engineering. Es handelt sich um eine Lösung, die Data Engineers unbedingt beherrschen sollten.

MongoDB vs. RDBMS: Was sind die Unterschiede?

Es gibt einige wichtige Unterschiede zwischen MongoDB und RDBMS (Relational Database Management System). Wie bereits erwähnt, werden die Daten nicht in Tabellen, sondern in Sammlungen von Dokumenten gespeichert. Diese Dokumente ersetzen die Zeilen in RDBMS. Sie enthalten Felder mit Wert-/Schlüsselpaaren, die ihrerseits die Spalten ersetzen.

Darüber hinaus ist die Datenintegrität bei MongoDB keine Einschränkung. Die Daten müssen auch nicht wie bei einem RDBMS vor der Verwendung „normalisiert“ werden. Dies ist ein großer Vorteil, da der Zwang zur Normalisierung die Leistung schaden kann, wenn die Datenbank größer wird.

Ein flexibles Datenmodell

MongoDB bietet ein flexibles Datenmodell. Dies ist ein großer Unterschied zu SQL-Datenbanken, bei denen ein Tabellenschema bestimmt und deklariert werden muss, bevor Daten eingefügt werden können.

Im Gegensatz zu SQL-Datenbanken gibt es bei MongoDB keine Einschränkungen hinsichtlich der Dokumentstruktur. Die Daten haben kein vorgefertigtes Schema, und es ist diese Flexibilität, die MongoDB so mächtig und leistungsfähig macht.

Die Modellierung der Daten und die Struktur der Dokumente müssen lediglich den Bedürfnissen des Benutzers/der Benutzerin entsprechen. Es muss berücksichtigt werden, was die Anwendung benötigt, also welche Daten und Datentypen benötigt werden.

Wenn viele Abfragen zu erwarten sind, ist es relevant, Indizes im Datenmodell zu verwenden, um die Effizienz der Abfragen zu verbessern. Wenn schließlich häufig Daten hinzugefügt, aktualisiert und gelöscht werden, sollten auch hier Indizes und das Sharding-System verwendet werden, um die Gesamteffizienz der Umgebung zu verbessern.

Die MongoDB Query Language

Um auf Daten zuzugreifen, verwenden relationale Datenbanken wie SQL Server, Oracle und MySQL die SQL-Sprache. Die MongoDB-Entwickler hingegen verwenden die MongoDB Query Language. Die Abfragen basieren auf JavasScript.

Die Sprache ist relativ leicht zu erlernen und es gibt viele Werkzeuge, um Abfragen von MongoDB-Daten unter Verwendung der SQL-Syntax durchzuführen. Es gibt viele Optionen und verschiedene Operatoren, Ausdrücke und Filter für Abfragen von MongoDB-Daten.

Wie wird MongoDB installiert?

Um MongoDB zu installieren, gehst Du einfach auf die offizielle Website in den Software-Bereich. Wähle die Community- oder Enterprise-Version sowie die Version, die Du je nach Gerät herunterladen möchtest, führe dann die Datei aus und folge den Schritten.

Für weitere Informationen kannst Du Dir die verschiedenen „install MongoDB“-Tutorials auf der offiziellen Website ansehen. Dort findest Du detaillierte Anleitungen für die Installation auf Windows, macOS, Linux oder auch Docker.

Es ist möglich, MongoDB auf verschiedenen Linux-Distributionen zu installieren, darunter Red Hat, CentOS, Ubuntu, Debian, SUSE oder Amazon. Beachte dabei, dass MongoDB Oracle Linux nur über den Red Hat Compatbile Kernel (RHCK) unterstützt, nicht aber über den Unbreakable Enterprise Kernel (UEK).

Warum sollte ich lernen, MongoDB zu verwenden?

MongoDB gehört zu den unverzichtbaren Werkzeugen des Data Engineering. Um zu lernen, wie man es benutzt, kannst Du sich an einer Weiterbildung von DataScientest teilnehmen. 

Mit der Weiterbildung zum/r Data Engineer lernst Du den Beruf des Dateningenieurs kennen, insbesondere den Aufbau von Pipelines zur automatischen Datenerfassung und -verarbeitung. Mit dem Modul „Datenbank“ lernst Du den Umgang mit MongoDB, aber auch Cassandra, Elastic Search, Neo4J und SQL.

Nun weißt Du alles über MongoDB. Erfahre mehr über weitere Werkzeuge für das Data Engineering: Container-Plattform Docker oder Cloud Data Warehouse von Snowflake.

Weiterlesen

Möchtest Du informiert bleiben?

Schreib uns Deine E-Mail-Adresse, damit wir Dir die neuesten Artikel zum Zeitpunkt der Veröffentlichung zusenden können!