
Du brauchst ein praxisnahes MongoDB Tutorial?
Dieser Guide erklärt Dir, alles was zu dieser neuartigen Datenbank Wissen solltest.
Starten wir!
Was ist MongoDB?

MongoDB ist eine dokumentenorientierte NoSQL-Datenbank. NoSQL bedeutet Not only Structure Query Language und beschreibt einen Typ von Datenbank, der die klassischen tabellarischen Datenbanken erweitert. NoSQL-Datenbanken sind schemafrei, horizontal skalierbar, quelloffen und mit einer Simple-API ausgestattet.
Die Eigenschaft Dokumentenorientiert bedeutet, dass MongoDB zur Speicherung Dateien verwendet und keine zeilenbasierten Wertetupel (bzw. einfach ausgerückt: Tabellen). MongoDB nutzt als Dateiformat BSON (Binary JavaScript Object Notation). Dieses Format sieht aus wie JSON und kann binäre Daten speichern.
Funktion – Grundlagen einfach erklärt
Im Gegensatz zu SQL-Datenbanken ist MongoDB gut horizontal skalierbar.
Horizontal skalieren
Statt einen großen, starken Computer zu bauen, kann die Software sich auf kleine, billige Computer (Nodes) verteilen. Einzelne Nodes können im laufenden Betrieb ausfallen und trotzdem erhalten alle Clients die angefragten Daten. Das System repliziert dafür die Inhalte, damit beim Fall der Fälle immer ein Backup vorhanden ist.
Der Master erhält die Schreibaufträge und repliziert dies auf die Knoten. Selbst wenn keine Anfragen an den Server gestellt werden, können Operationen auf der MongoDB Instanz stattfinden. MongoDB nutzt das BASE-Schema:
Nicht ACID – sonder BASE
- Basically available: Der Cluster ist durch die Redundanzen in den meisten Fällen verfügbar und das Gesamtsystem zeigt eine hohe Zuverlässigkeit.
- Soft-State: Selbst im Ruhezustand kann das Datenbanksystem Synchronisationen durchführen, damit der Cluster seine Daten konsistent verteilen kann.
- Eventually consitent: Im Gegensatz zu SQL ist MongoDB IRGENDWANN konsistent und bietet keine atomaren Transaktionen an. Nach der Zeit XY ist das System wieder in einen konsistenten Zustand.
Verteiltes System erklärt
Ein verteiltes System nutzt verschiedene Techniken, um sich zu replizieren und den Client immer den neusten Datenbestand anzubieten. Eine Computer-Architektur nennt sich Master-Slave. Der Master-Computer kontrolliert und verwaltet die Slave-Computer, die die Aktionen, Lesen und Speichern, für den Master ausführen.
Der Vorteil ist, dass wir riesige Computernetzwerke erstellen können, die mehr Daten verarbeiten können als ein einzig großer starker Computer. Ein einzelner Computer ist zwar transparenter und übersichtlicher, aber ist auch ein Single Point of Failure.
Überlast? Gelöst mit MapReduce
Die Verarbeitung von großen Datenmengen bringt ein weiteres Problem mit sich.
Früher hat der Entwickler z. B. die Datenbank nach den Umsätzen abgefragt und die Daten in seinem Hauptspeicher geladen. Der Entwickler-Computer hat die Positionen aufsummiert.
Wenn die Datenbank TB an Daten zurücksendet, funktioniert das Schema nicht mehr. Statt die Daten zum Code (Entwickler) zu bringen, bringt „Map-Reduce“ der Entwickler seinen Code zu den Daten-Knoten.
Steffen Lippke
Die Daten-Knoten sind Computer, die genauso Operationen ausführen können. Nur das Endergebnis bekommt der Entwickler mitgeteilt und muss nicht seinen RAM dafür Opfern.
MongoDB Tutorial
Mongo DB ist kostenlos und Open Source verfügbar.
Unter Windows und Linux kannst Du Mongo mit dem folgenden Link downloaden:
- Downloade Dir den MSI Installer.
- Wähle aus, dass MongoDB nicht als Service installieren möchtest.
Mongo Compass
Downloade Dir Mongo Compass für Deinen Einstieg. Diese Oberfläche ist optional und basiert auf dem Command Line Interface (CLI), die Du mit der Mongo MSI mitbekommst.
Das Tool bietet Dir eine interaktivere / visuelle Oberfläche, mit der Du Deine lokale MongoDB erreichen kannst. Grundsätzlich gilt, dass eine CLI mächtiger ist als eine GUI, weil Du Fehlermeldungen lesen kannst, Eingaben steuern und vollständige Ausgaben erhältst.

- Öffne eine CMD mit Admin Rechten
- Erstelle einen Ordner für die die Monogo-Datenbanken
mkdir C:\data\db - Gebe ein:
„C:\Program Files\MongoDB\Server\4.4\bin\mongod.exe“ –dbpath=“c:\data\db“ - Starte die Mongo-CLI
„C:\Program Files\MongoDB\Server\4.4\bin\mongo.exe“
Mongo nutzt Collections, die Du wie eine Tabelle in SQL verstehen kannst. Du bist aber nicht gezwungen, dass alle Dokumente der Collection das gleiche Schema haben müssen.
In Mongo schreibst Du JSON-Struktur-artige Abfragen, die Du je nach Anwendungsfall anpassen kannst.
Der Import
Über den Mongo CSV-zu-Dokumenten Import wollen wir die erste Tabelle importieren. Hierfür nehmen wir die Chart-Daten eines Börsen-Indexes als Grundlage (Dax). Diesen wollen mit der Mongo-Abfragesprache untersuchen.
Chart Daten von allen möglichen Indizies und Börsentiteln findest unter den folgenden Link. Achte beim Export darauf, dass Du die maximalen verfügbaren Tage exportierst (z.B. 1980 bis 20XX)

Klicke auf den Button Add Data und wähle Deine CSV aus und gebe zusätzlich an, welche Typen sich in der CSV befinden (Datum→ Date, Low, High usw. → Double).

MongoDB Abfragen
Um die Datenbank abzufragen, klickst Du oben in das Eingabefeld und tippst eine BSON-artige Struktur ein, um das BSON abzufragen. Das Find Kommando baut sich wie folgt auf:
- Selektion: Tippe den Namen des Felds ein (Anführungszeichen sind nicht zwingend).
- Separator: Verwende Doppelpunkt.
- Wert / Filter / Operation: Schreibe den Wert dahinter (Anführungszeichen sind nicht zwingend).
Sende die Anfrage mit dem grünen Button ab.
Der Höchststand des Tages selektieren nur die unter 5000 sind: an 3757 Tagen
{High: {$lt: 5000}}
Nur an 69 Tagen über 15000
{High: {$gt: 15000}}
… unsortiere es nach dem Volume (Button Options in Zeile Sort):
{High: {$gt: 15000}}
{Volume: -1}
Und zeige mir nur den Open Wert an (Project Zeile):
{High: {$gt: 15000}}
{Open:1}
{Volume: -1}
Suche nach einem Datum:
{"Date": new Date("1987-12-30T00:00:00.000+00:00")}
Unterhalb der Suchleiste kannst Du die Ansicht zwischen Tabellen, JSON und der klassischen Dokumentenansicht wechseln.
Wann setzte ich MongoDB am besten ein?
Der wesentlichste Vorteil (und die Herausforderung) von MongoDB ist die Schemafreiheit.
Steffen Lippke
Du kannst die Struktur Deiner Dokumente frei wählen. Auf der anderen Seite musst Du mit jeder Schema-Änderung Deine Daten migrieren.
MongoDB bietet die Möglichkeit Einbettungen von „Tabellen in Tabelle“ vornehmen (JSON). Diese vorgehen kann eine sehr effiziente Abfragezeit ermöglichen. Dieses Vorgehen ist ein Graus für jeden SQL-Liebhaber und nennt sich Non First Normal Form (NFNF).
… oder über das Referencing über IDs, wie Du es von Fremd und Primärschlüssel aus der SQL Welt kennst.
Obwohl die Schemafreiheit gegeben ist, sollte eine langfristige Planung und ein gut-überlegtes Schema die Anzahl von Migrationen in der Produktion vermeiden.
MongoDB unterstützt nativ die Nutzung von geographischen Koordinaten.
Welche Anwendungsfälle sind ungeeignet?
NoSQL ist hipp.
SQL ist Old-School.
Das stimmt nicht! SQL ist immer noch die erste Wahl für Anwendungsfälle, die 100 % konsistent sein sollten. SQL verwenden Banken, um die Transaktionen vollständig durchzuführen. Wenn z. B. Du Dich bei der IBAN vertippst, sollte der Prozess das Geld nicht vernichten (Deflation), sondern eine Rückabwicklung durchführen (Rollback).
Ein Old-School SQL-Denken ist nicht bei jeder Anwendung.
Steffen Lippke
Enterprise Ressource Planning Systeme verwenden SQL Tabellen, um die Konsistenz zu wahren. Wenn der Lagerist aus dem Lager eine Entnahme bucht, dann muss das System alle Tabelle zugleich aktualisieren (Transaktion). Falls die Buchung schiefläuft, muss der Lagerist vor der Entnahme den IT-Support informieren.