MongoDB Tutorial – Schritt-für-Schritt Tutorial für Anfänger

MongoDB - Coding Lab Steffen Lippke

Du brauchst ein praxisnahes MongoDB Tutorial?

Dieser Guide erklärt Dir, alles was zu dieser neuartigen Datenbank Wissen solltest.

Starten wir!

Was ist MongoDB?

04 Füge Daten hinzu - MongoDB Tutorail Coding Lab Steffen Lippke
04 Füge Daten hinzu – MongoDB Tutorial Coding Lab Steffen Lippke

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:

https://www.mongodb.com/try/download/community
  1. Downloade Dir den MSI Installer.
  2. 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.

  1. Öffne eine CMD mit Admin Rechten
  2. Erstelle einen Ordner für die die Monogo-Datenbanken
    mkdir C:\data\db
  3. Gebe ein:
    „C:\Program Files\MongoDB\Server\4.4\bin\mongod.exe“ –dbpath=“c:\data\db“
  4. 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)

https://de.finance.yahoo.com/quote/%5EGDAXI/history?p=%5EGDAXI

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:

  1. Selektion: Tippe den Namen des Felds ein (Anführungszeichen sind nicht zwingend).
  2. Separator: Verwende Doppelpunkt.
  3. 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.


Danke fürs Lesen! Erhalte weitere Tutorials in meinem kostenlosen Newsletter.
Jeden Monat teile ich mit Dir 4 neue praxisnahe Tutorials.
Trage Deine Mail zum kostenlosen Empfang des Newsletters* ein.




Quellenangabe Bilder: Icons und SVG-Grafiken im Titelbild von Microsoft PowerPoint 2019, frei verfügbar nach EULA
*) Mit dem Abonnement des Newsletters erklären Sie sich mit der Analyse des Newsletters durch individuelle Messung, Speicherung und Analyse von Öffnungsraten und der Klickraten in Profilen zu Zwecken der Gestaltung künftig besserer Newsletter einverstanden. Sie können die Einwilligung in den Empfang des Newsletters und die Messung mit Wirkung für die Zukunft widerrufen. Mehr in der Datenschutzerklärung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.


Jeden Monat teile ich mit 156.443 Mitgliedern
4 neue praxisnahe Tutorials.


Trage Deine Mail, damit Du
Deine Coding + Hacking Skills erweitern kannst!