Kurs
Was ist MongoDB? Wichtige Konzepte, Anwendungsfälle und Best Practices
Wenn du jemals mit starren Datenbankschemata oder schwerfälligen Skalierungsproblemen zu kämpfen hattest, bist du nicht allein. Hier kommt MongoDB ins Spiel. Als flexible, leistungsstarke NoSQL-Datenbank hat MongoDB die Art und Weise verändert, wie Entwickler/innen über die Speicherung und Arbeit mit Daten denken. Ich erinnere mich noch gut daran, als ich es das erste Mal benutzt habe - das Abfragen von JSON-ähnlichen Dokumenten fühlte sich einfach intuitiv an.
In diesem Artikel erkläre ich dir, was MongoDB ist, warum es so beliebt ist und wie du es nutzen kannst.
Was ist MongoDB?
MongoDB ist einen Open-Source-NoSQL-Datenbank, die für die Arbeit mit dokumentenorientierten Daten entwickelt wurde. Statt traditioneller Zeilen und Spalten speichert es Daten in flexiblen, JSON-ähnlichen Dokumenten und ist damit ideal für Anwendungen, die sich schnell weiterentwickeln müssen.
Der Name "MongoDB" kommt von humongous, was dir sagt, dass es für die Verarbeitung riesiger Datenmengen gebaut wurde. Sie wurde 2009 von 10gen (jetzt MongoDB Inc.) veröffentlicht und ist seitdem stetig gewachsen. MongoDB ist perfekt geeignet, um große, verteilte Datenmengen zu verwalten und dabei die Leistung hoch zu halten.
MongoDB gibt es in verschiedenen Varianten, je nachdem, was du brauchst. Es gibt die kostenlose Community Edition, die sich hervorragend für kleinere Projekte eignet. Und wenn du dich nicht mit derruktur befassen willst, ist MongoDB Atlas ein vollständig verwalteterer Cloud-Service, der auf AWS, Google Cloud und Azure läuft. Diese Flexibilität hat MongoDB in verschiedenen Branchen zum Durchbruch verholfen.
> Wenn du dich noch nicht mit MongoDB und NoSQL-Datenbankenauskennst, solltest du dir dieses einsteigerfreundliche NoSQL-Tutorial ansehen, um die wichtigsten Konzepte zu verstehen, bevor du tiefer einsteigst. Du kannst auch die Kurse Einführung in NoSQL und NoSQL-Konzepte besuchen, um zu sehen, wie MongoDB in das größere NoSQL-Ökosystem passt.
Eigenschaften von MongoDB
MongoDB verfügt über zahlreiche Funktionen, die es zur ersten Wahl für Entwickler machen, die mit modernen, datenintensiven Anwendungen arbeiten. In diesem Abschnitt gehen wir sie durch.
Dokumentenorientierte Speicherung
MongoDB speichert Daten in Sammlungen von JSON-ähnlichen Dokumenten in einem Format namens BSON (Binary JSON).
JSON ist ein für Menschen lesbares, textbasiertes Format, das grundlegende Datentypen wie Strings, Zahlen und Arrays unterstützt. BSON, sein binäres Gegenstück, erweitert JSON um zusätzliche Typen wie Datumsangaben, binäre Daten und präzise numerische Formate (z. B. Ganzzahlen, Gleitkommazahlen).
Während JSON ideal für die Lesbarkeit ist, ist BSON für die Speicherung, Geschwindigkeit und erweiterte Datenverarbeitung optimiert, was es zum bevorzugten Format für MongoDB macht.
Bei der Interaktion mit MongoDB arbeiten die Entwickler mit den nativen Datenstrukturen ihrer Programmiersprache (z. B. JavaScript-Objekte oder Python-Wörterbücher). Der MongoDB-Treiber übernimmt die Konvertierung zwischen diesen Strukturen und BSON und sorgt so für eine nahtlose Speicherung und Abfrage der Daten.
Wie MongoDB Daten als BSON speichert. Bildquellee: MongoDB.
Schema-loses Design
MongoDB organisiert die Daten in Sammlungen und Dokumenten:
- Eine Sammlung gruppiert zusammengehörige Dokumente, ähnlich wie eine Tabelle, aber flexibler. Sammlungen erzwingen kein Schema, sodass Dokumente unterschiedliche Strukturen und Felder haben können. Sammlungen existieren innerhalb von MongoDB-Datenbanken, und jede Datenbank kann mehrere Sammlungen enthalten.
- Dokumente sind die Grundeinheit der Daten, die aus Feld-Wert-Paaren bestehen. Dokumente können Zeichenketten, Zahlen, Daten, Arrays und sogar andere eingebettete Dokumente enthalten. Dies ermöglicht ausgefeilte Datenmodelle, die komplexe Beziehungen innerhalb eines einzigen Dokuments darstellen, was der Struktur von Objekten in den meisten Programmiersprachen entspricht.
Das schemafreie Design von MongoDB ist eine seiner stärksten Eigenschaften und bietet außergewöhnliche Flexibilität für den Umgang mit vielfältigen und sich entwickelnden Daten.
Im Gegensatz zu traditionellen relationalen Datenbanken, bei denen das Hinzufügen eines neuen Feldes die Änderung der gesamten Tabellenstruktur erfordert, können Dokumente innerhalb derselben Sammlung völlig unterschiedliche Felder und Strukturen haben. Dadurch werden starre Schemata überflüssig und es ist einfacher, unterschiedliche Daten zu speichern, ohne eine Einheitlichkeit zu erzwingen.
Schauen wir uns genauer an, wie Schemaänderungen in MongoDB im Vergleich zu traditionellen relationalen Datenbanken funktionieren:
Wenn du in einer relationalen Datenbank ein neues Feld (z.B. discount_price
) zu einer Tabelle products
hinzufügen möchtest, musst du das tun:
- Ändere das Schema der Tabelle, um die neue Spalte hinzuzufügen.
- Aktualisiere jede Zeile, auch wenn die meisten Zeilen das neue Feld nicht verwenden, was zu spärlichen Tabellen mit vielen leeren Spalten führt.
In MongoDB kannst du das Feld discount_price
einfach nur zu den entsprechenden Dokumenten in der products
Sammlung hinzufügen. Zum Beispiel:
// Document 1
{
"_id": 1,
"name": "Laptop",
"price": 1200
}
// Document 2
{
"_id": 2,
"name": "Smartphone",
"price": 800,
"discount_price": 750 // New field added only where needed
}
Diese Flexibilität ist in schnelllebigen Umgebungen, in denen sich die Datenanforderungen häufig ändern, von unschätzbarem Wert. Es ermöglicht Entwicklern schnelle Anpassungen ohne Ausfallzeiten oder komplexe Migrationen, was MongoDB ideal für agile Entwicklung und moderne Anwendungen macht.
Hohe Leistung
MongoDB wurde für die hochleistungsfähige Datenspeicherung und -abfrage entwickelt und ist daher ideal für Anwendungen, die Geschwindigkeit und Skalierbarkeit erfordern.
Eines der wichtigsten Merkmale ist die Verwendung von Memory-Mapped Files, die es dem Betriebssystem ermöglichen, das Caching effizient zu handhaben, die Latenzzeit zu verringern und die Lese-/Schreibvorgänge zu verbessern. MongoDB unterstützt außerdem verschiedene Indizierungstypen, darunter Single-Field-, Compound-, Geospatial-, Text- und Hash-Indizes, um die Abfrageleistung zu beschleunigen.
MongoDB bietet eine In-Memory-Storage-Engine für Anwendungsfälle mit extrem niedriger Latenz, die einen schnelleren Datenzugriff ermöglicht, da alles im RAM gespeichert wird. Außerdem sorgt der Query Optimizer von MongoDB für eine effiziente Abfrageausführung, indem er automatisch die besten Indizes und Ausführungspläne auswählt.
Diese Merkmale, kombiniert mit horizontaler Skalierung über Sharding machen MongoDB zu einer robusten Wahl für Anwendungen mit hohem Durchsatz wie Echtzeit-Analysen, mobile Apps und IoT-Systeme.
Wie man mit MongoDB einsteigt
Wenn du MongoDB noch nicht kennst, mach dir keine Sorgen - die Einrichtung ist einfach und du kannst zwischen einer lokalen Installation und einer Cloud-Option wählen. Lass uns diese Optionen hier erkunden.
Installieren von MongoDB
1. Installiere MongoDB lokal: Du kannst die MongoDB Community Edition auf deinem lokalen Rechner installieren, indem du sie vonm der offiziellen MongoDB-Website herunterlädst. Installation Anleitungen sind für Windows, macOS und Linux verfügbar und der Einrichtungsprozess umfasst normalerweise nur wenige Schritte. Diese Option gibt dir die volle Kontrolle über deine Umgebung und ist ideal für Entwicklung und Tests.
2. Verwende MongoDB Atlas (Cloud-basiert): Wenn du lieber auf die lokale Einrichtung verzichten möchtest, ist MongoDB Atlas eine tolle Alternative . Es ist der vollständig verwaltete Cloud-Service von MongoDB, der auf AWS, Azure und Google Cloud läuft. Atlas kümmert sich um die Infrastruktur für dich - Backups, Skalierung und Updates werden automatisch durchgeführt. Außerdem gibt es ein großzügiges kostenloses Angebot, mit dem du ganz einfach loslegen kannst.
Egal, ob du die Kontrolle über eine lokale Installation oder den Komfort der Cloud bevorzugst, MongoDB macht es dir leicht, den Weg zu wählen, der zu deinem Arbeitsablauf passt.
Verbinden mit MongoDB
Sobald MongoDB installiert ist, ist der nächste Schritt die Verbindung mit MongoDB - entweder zum schnellen Testen in der Shell oder zum Integrieren in deine Anwendungen.
Verwendung der Mongo-Shell:
Du kannst dich mit der Mongo Shell mit MongoDB verbinden, einer Befehlszeilenschnittstelle für die Interaktion mit der Datenbank. Starte einfach mongosh
in deinem Terminal, um die Shell zu starten.
mongosh
Dadurch wird die Shell gestartet und du wirst standardmäßig mit deiner lokalen MongoDB-Instanz verbunden.
Verbinden aus einer Anwendung heraus:
Für die Anwendungsentwicklung kannst du dich über Programmiersprachen wie Python, JavaScript (Node.js) oder Java mit den offiziellen Treibern von MongoDB verbinden. In Python kannst du zum Beispiel die Bibliothek pymongo
verwenden, um eine Verbindung herzustellen:
from pymongo import MongoClient
uri = "your_mongodb_connection_string"
client = MongoClient(uri)
try:
# Test the connection
client.admin.command('ping')
print("Connected to MongoDB!")
except Exception as e:
print(e)
finally:
client.close()
Ersetze "your_mongodb_connection_string"
durch die URI deiner lokalen oder Atlas-Verbindung. Sobald du verbunden bist, kannst du mit dem Einfügen und Abfragen von Dokumenten beginnen.
> In Python arbeiten? In diesem Kurs Introduction to Using MongoDB for Data Science with Python lernst du, wie du MongoDB-Daten mit Python verbinden, abfragen und analysieren kannst.
Grundlegende MongoDB-Befehle
MongoDB bietet eine Reihe von Befehlen für die Interaktion mit Datenbanken, Sammlungen und Dokumenten. Hier sind ein paar grundlegende Befehle, die dir den Einstieg erleichtern:
- Wechsle zu einer Datenbank:
use myDatabase
Dieser Befehl wechselt zu einer Datenbank namens myDatabase
. Wenn sie noch nicht existiert, wird sie von MongoDB erstellt, wenn du zum ersten Mal Daten hinzufügst.
- Erstelle eine Sammlung:
db.createCollection("myCollection")
Erstellt eine neue Sammlung namens myCollection
in der aktuellen Datenbank.
- Füge ein Dokument ein:
db.myCollection.insertOne({ name: "Alice", age: 30 })
Fügt der Sammlung myCollection
ein neues Dokument hinzu.
- Dokumente finden:
db.myCollection.find({ age: { $gt: 25 } })
Ruft alle Dokumente ab, bei denen das Feld age
größer als 25 ist.
Diese Befehle sind nur die Spitze des Eisbergs - MongoDB verfügt über leistungsstarke Abfrage-, Indexierungs- und Aggregationsfunktionen. Du kannst die vollständige Liste der Befehlein der offiziellen MongoDB-Dokumentation einsehen.
> Wenn du nach einer tiefer gehenden, praktischen Anleitung suchst, kannst duDieses MongoDB-Tutorial zeigt dir, wie du eine MongoDB-Datenbank einrichtest und abfragst.Schritt für Schritt durch die Einrichtung und die grundlegenden Vorgänge.
Best Practices für die Verwendung von MongoDB
Willst du das Beste aus MongoDB herausholen? Diese Best Practices können dir helfen, die Leistung zu steigern, häufige Fallstricke zu vermeiden und Anwendungen zu entwickeln, die reibungslos skalieren.
Indizierung
Die richtige Indizierung ist entscheidend für die Optimierung der Leistung von MongoDB. Hier sind einige wichtige Strategien, um sicherzustellen, dass deine Indizes effektiv sind:
- Verwende zusammengesetzte Indizes: Anstatt separate Indizes für einzelne Felder zu erstellen, kombiniere häufig abgefragte Felder in einem einzigen zusammengesetzten Index. Wenn du zum Beispiel häufig Abfragen nach
last_name
undfirst_name
durchführst, ist ein zusammengesetzter Index für beide Felder effizienter. - Vermeide eine Überindizierung: Während Indizes die Leseleistung verbessern, verursachen sie bei Schreibvorgängen zusätzlichen Aufwand und verbrauchen Speicherplatz. Überprüfe regelmäßig ungenutzte Indizes und entferne sie, um die Effizienz zu erhalten.
- Verwende partielle Indizes: Reduziere die Indexgröße und den Overhead, indem du nur die Dokumente indizierst, die bestimmten Kriterien entsprechen - zum Beispiel nur aktive Benutzer oder Dokumente, in denen ein bestimmtes Feld existiert.
- Optimiere für Felder mit niedriger Kardinalität: Sei vorsichtig, wenn du Felder mit wenigen eindeutigen Werten indizierst (z. B.
status
odergender
). Zusammengesetzte Indizes können helfen, aber stelle sicher, dass die kombinierten Felder eine hohe Kardinalität haben. - Überwache die Indexnutzung: Verwende Tools wie MongoDB Compass oder Atlas Data Explorer, um die Indexnutzung zu visualisieren und ungenutzte Indizes zu identifizieren. Das hilft, Ressourcen freizusetzen und die Leistung zu verbessern.
> Überprüfen Sie die Best Practices von MongoDB für die Indizierung, um um Strategien kennenzulernen, die funktionieren.
Datenmodellierung
Eine effektive Datenmodellierung ist entscheidend für die Optimierung der Leistung und Skalierbarkeit von MongoDB. Das dokumentenorientierte Modell von MongoDB bietet Flexibilität bei der Strukturierung von Daten, erfordert aber eine sorgfältige Planung, um die Effizienz sicherzustellen.
Hier sind einige Best Practices für die Datenmodellierung in MongoDB:
- Verwende eingebettete Dokumente für Daten, auf die häufig gemeinsam zugegriffen wird oder die in einer eins-zu-eins oder eins-zu-vielen Beziehung stehen. Wenn du zum Beispiel das Profil eines Nutzers zusammen mit seinen letzten Bestellungen in einem einzigen Dokument speicherst, kannst du die Notwendigkeit von Joins reduzieren und die Abfrageleistung verbessern.
- Verwende Verweise (Verlinkung) für Daten, auf die seltener gemeinsam zugegriffen wird oder die eine Many-to-Many-Beziehung haben. Dieser Ansatz vermeidet die Duplizierung von Daten und hält die Dokumente kleiner. Zum Beispiel kann ein Produktkatalog über eine
product_id
Referenz mit Bestellungen verknüpft werden. - Entwurf für Abfragemuster. Strukturiere deine Sammlungen und Dokumente so, wie die Daten abgefragt werden sollen. Wenn deine Anwendung zum Beispiel häufig Benutzerprofile zusammen mit ihren Bestellungen abruft, kann das Einbetten von Bestellungen in das Benutzerdokument die Abfrage vereinfachen.
- Vermeide große, tief verschachtelte Dokumente. Die Einbettung ist zwar leistungsstark, aber vermeide es, zu große oder tief verschachtelte Dokumente zu erstellen, da sie die Leistung beeinträchtigen und Abfragen komplexer machen können. Stattdessen solltest du ein Gleichgewicht zwischen Einbettung und Referenzierung herstellen, wo es angebracht ist.
- Verwende Arrays mit Bedacht. Arrays eignen sich hervorragend zum Speichern von Listen zusammengehöriger Daten, aber vermeide unbegrenztes Wachstum. Es ist zum Beispiel in Ordnung, die letzten 10 Bestellungen eines Nutzers in einem Array zu speichern, aber die Speicherung der gesamten Bestellhistorie kann zu Leistungsproblemen führen.
- Normalisieren für schreibintensive Workloads. Für schreibintensive Anwendungen solltest du deine Daten normalisieren, um Duplikate zu vermeiden und die Schreibleistung zu verbessern. Verwende Verweise, um verwandte Daten zu verknüpfen, anstatt sie einzubetten.
- Denormalisieren für leseintensive Workloads. Für leseintensive Anwendungen solltest du deine Daten denormalisieren, um die Notwendigkeit von Joins zu minimieren und die Leseleistung zu verbessern. Binde häufig genutzte Daten in Dokumente ein.
Backup und Sicherheit
Der Schutz deiner MongoDB-Implementierung ist entscheidend, um Datenintegrität, Verfügbarkeit und Compliance zu gewährleisten. Hier findest du einen Leitfaden für die Implementierung robuster Backup- und Sicherheitspraktiken.
- Verwende die nativen Tools von MongoDB: Nutze
mongodump
undmongorestore
, um Backups zu erstellen und wiederherzustellen. Mit diesen Tools kannst du Daten im BSON-Format exportieren und importieren, um Kompatibilität und Konsistenz zu gewährleisten. Für fortschrittlichere Backup-Lösungen kannst du eine Point-in-Time-Wiederherstellung mit Oplog-Backups (Ops Manager) in Betracht ziehen. So kannst du deine Datenbank zu einem bestimmten Zeitpunkt wiederherstellen und den Datenverlust minimieren. - Aktiviere die Authentifizierung: Aktiviere in Produktionsumgebungen immer die Authentifizierung, um unbefugten Zugriff zu verhindern. MongoDB unterstützt SCRAM (Salted Challenge Response Authentication Mechanism) für eine sichere passwortbasierte Authentifizierung.
- Die rollenbasierte Zugriffskontrolle (RBAC): Implementiere RBAC, um Nutzern nur die notwendigen Berechtigungen zu erteilen. Befolge das Prinzip der geringsten Privilegien, um Sicherheitsrisiken zu minimieren.
- Binde dich an private Schnittstellen: Konfiguriere MongoDB so, dass es sich nur an private Netzwerkschnittstellen bindet, damit es nicht im öffentlichen Internet zu finden ist.
- Aktiviere TLS/SSL: Verwende TLS/SSL, um die Daten während der Übertragung zu verschlüsseln und so eine sichere Kommunikation zwischen Kunden und der Datenbank zu gewährleisten.
- Implementiere IP-Whitelisting und VPNs: Schränke den Zugang zu deinen MongoDB-Instanzen ein, indem du nur vertrauenswürdige IP-Adressen zulässt. Für zusätzliche Sicherheit kannst du VPNs nutzen, um sichere Tunnel für den Zugriff auf Produktionsdatenbanken zu erstellen.
- Verschlüsselung im Ruhezustand: Aktiviere die Verschlüsselung im Ruhezustand mithilfe der nativen Unterstützung von MongoDB in der WiredTiger Storage Engine. Dies schützt sensible Daten, die auf der Festplatte gespeichert sind.
- Client-seitige Verschlüsselung auf Feldebene: Wenn du hohe Sicherheitsanforderungen hast, verwende die clientseitige Verschlüsselung auf Feldebene, um bestimmte Felder zu verschlüsseln, bevor sie an die Datenbank gesendet werden. So wird sichergestellt, dass selbst Datenbankadministratoren nicht auf sensible Informationen zugreifen können.
Fazit
Egal, ob du ein kleines Nebenprojekt oder eine groß angelegte Unternehmensanwendung entwickelst, MongoDB gibt dir die Flexibilität und die Möglichkeit, nach deinen eigenen Vorstellungen mit Daten zu arbeiten. Sein dokumentenbasiertes Modell, sein dynamisches Schemadesign und seine Fähigkeit, mühelos zu skalieren, machen es zur ersten Wahl für moderne Entwickler. Wenn du verstehst, wie man sie effektiv einsetzt - und die Best Practices befolgst - bist du auf dem besten Weg, schnelle, flexible und zukunftssichere Anwendungen zu entwickeln.
Willst du deine Fähigkeiten auf die nächste Stufe bringen? Erkundeoder lese den MongoDB-Zertifizierungsleitfaden, um zu verstehen, was mit der Zertifizierung verbunden ist, oder lerne diese häufigen MongoDB-Interviewfragen, um dich auf deine nächste Stelle als Techniker vorzubereiten.
Werde Dateningenieur
FAQs
Ist die Nutzung von MongoDB kostenlos?
Ja, MongoDB bietet eine kostenlose und quelloffene Community Edition, die du lokal ausführen kannst. MongoDB Atlas ist auch eine kostenlose Cloud-Datenbank mit begrenzten Ressourcen - ideal zum Lernen und für kleine Projekte.
Was ist BSON, und wie unterscheidet es sich von JSON?
BSON (Binary JSON) ist das Format, das MongoDB zum Speichern von Dokumenten verwendet. Es ist ähnlich wie JSON, enthält aber zusätzliche Datentypen wie Datumsangaben und Binärdaten und ist für Leistung und Traversal optimiert.
Kann MongoDB für Analysen oder Berichte verwendet werden?
MongoDB ist zwar keine traditionelle Analysedatenbank, unterstützt aber Aggregationspipelines und Integrationen mit Tools wie Tableau, Power BI und MongoDB Charts zur Datenanalyse und -visualisierung.
Ist MongoDB ACID-konform?
MongoDB unterstützt ACID-Transaktionen auf Dokumentenebene und ab Version 4.0 auch ACID-Transaktionen für mehrere Dokumente, wodurch es sich für Anwendungen eignet, die Datenkonsistenz erfordern.
Wie sicher ist MongoDB?
MongoDB bietet Funktionen wie Authentifizierung, rollenbasierte Zugriffskontrolle, Verschlüsselung im Ruhezustand und bei der Übertragung sowie Auditing. MongoDB Atlas fügt noch mehr Sicherheitsebenen hinzu, wie zum Beispiel Netzwerkisolierung und automatische Backups.
Welche Arten von Anwendungen nutzen MongoDB?
MongoDB wird in einer Vielzahl von Anwendungen eingesetzt - von Content Management Systemen und mobilen Apps bis hin zu Echtzeit-Analyseplattformen und IoT-Lösungen. Durch seine Flexibilität ist es für viele Anwendungsfälle geeignet.
Kann MongoDB horizontal skalieren?
Ja! MongoDB unterstützt die horizontale Skalierung durch Sharding und ermöglicht es dir, Daten auf mehrere Server zu verteilen und große Datenmengen effizient zu verarbeiten.
Karen ist eine Dateningenieurin mit einer Leidenschaft für den Aufbau skalierbarer Datenplattformen. Sie hat Erfahrung mit der Automatisierung von Infrastrukturen mit Terraform und freut sich darauf, ihre Erfahrungen in Blogbeiträgen und Tutorials zu teilen. Karen ist eine Community-Builderin und setzt sich leidenschaftlich für die Förderung von Verbindungen zwischen Datenexperten ein.
Lerne mehr über MongoDB mit diesen Kursen!
Kurs
NoSQL Concepts
Kurs
Database Design
Der Blog
Die 50 besten AWS-Interview-Fragen und Antworten für 2025
Der Blog
Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Nisha Arya Ahmed
15 Min.

Der Blog
Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn
Der Blog
Top 30 Generative KI Interview Fragen und Antworten für 2024

Hesam Sheikh Hassani
15 Min.
Der Blog
Q2 2023 DataCamp Donates Digest
Der Blog