Vollständiger Leitfaden zu MongoDB: Installation, Funktionen & Best Practices auf einem VPS
MongoDB ist eine der leistungsstärksten und am weitesten verbreiteten NoSQL-Datenbanken der Welt – und das aus gutem Grund. Seine flexible, dokumentorientierte Architektur macht es zur ersten Wahl für Entwickler, die moderne, datenintensive Anwendungen erstellen, die schnell skalieren müssen. Egal ob Sie ein Startup-MVP betreiben oder eine unternehmensweite Infrastruktur verwalten – MongoDB in Kombination mit einer hochperformanten Hosting-Umgebung bietet Ihnen die Geschwindigkeit, Flexibilität und Zuverlässigkeit, die Ihre Anwendungen benötigen.
In diesem umfassenden Leitfaden erfahren Sie, was MongoDB ist, warum es sich von traditionellen relationalen Datenbanken unterscheidet, wie Sie es auf Ubuntu installieren und wie Sie wichtige Operationen mit der MongoDB-Shell durchführen.
Was ist MongoDB und warum sollten Sie es verwenden?
MongoDB ist eine Open-Source-, dokumentorientierte NoSQL-Datenbank, die Daten in flexiblen, JSON-ähnlichen Dokumenten namens BSON (Binary JSON) speichert. Im Gegensatz zu traditionellen relationalen Datenbanken, die auf starren Tabellen-Zeilen-Spalten-Strukturen basieren, ermöglicht MongoDB jedem Dokument in einer Sammlung eine eigene, einzigartige Struktur. Dies macht es außergewöhnlich gut geeignet für Anwendungen mit sich entwickelnden oder unvorhersehbaren Datenmodellen.
Wichtigste Vorteile von MongoDB gegenüber traditionellen SQL-Datenbanken
| Funktion | MongoDB (NoSQL) | Traditionelles SQL |
|---|---|---|
| Datenmodell | Flexible Dokumente (BSON) | Festes Schema (Tabellen/Zeilen) |
| Skalierbarkeit | Horizontal (Sharding) | Hauptsächlich vertikal |
| Schemaänderungen | Schemalos, dynamisch | Erfordert Migrationen |
| Abfragesprache | Umfangreiches MQL + Aggregation | SQL |
| Am besten geeignet für | Dynamische, unstrukturierte Daten | Strukturierte, relationale Daten |
| Leistung bei Skalierung | Ausgezeichnet mit Sharding | Kann ohne Optimierung abnehmen |
MongoDB ist ideal für eine breite Palette von Anwendungsfällen, einschließlich Echtzeit-Analysen, Content-Management-Systeme, E-Commerce-Plattformen, IoT-Datenerfassung, Mobile Backends und alle Anwendungen, bei denen sich Datenstrukturen wahrscheinlich im Laufe der Zeit ändern.
Warum MongoDB auf einem VPS hosten?
Das Hosten von MongoDB auf einem dedizierten virtuellen privaten Server bietet Ihnen ein Maß an Kontrolle, Leistung und Sicherheit, das gemeinsame Umgebungen einfach nicht bieten können. Mit einem VPS-Hosting-Plan von AlexHost erhalten Sie:
- Vollständigen Root-Zugriff zur Konfiguration von MongoDB genau nach Ihren Anforderungen
- Dedizierte RAM- und CPU-Ressourcen zur Bewältigung anspruchsvoller Lese-/Schreibvorgänge
- Isolierte Umgebung, die das „Noisy Neighbor”-Problem bei gemeinsamen Hosting-Umgebungen eliminiert
- Nahtlose vertikale und horizontale Skalierung mit wachsenden Daten
- Benutzerdefinierte Firewall- und Netzwerkregeln zur Sicherung des Datenbankzugriffs
Für Anwendungen mit außergewöhnlich hohen Durchsatzanforderungen bieten AlexHosts Dedicated Servers Bare-Metal-Leistung mit vollständiger Hardware-Isolation – der Gold-Standard für produktive MongoDB-Bereitstellungen.
Abschnitt 1: Verständnis von MongoDBs Kernarchitektur
Bevor Sie mit der Installation beginnen, ist es wichtig zu verstehen, wie MongoDB Daten organisiert und verwaltet.
Dokumente
Die grundlegende Dateneinheit in MongoDB ist ein Dokument – ein JSON-ähnliches Objekt, das verschachtelte Felder, Arrays und gemischte Datentypen enthalten kann. Zum Beispiel:
{
"_id": ObjectId("64b1f2c3e4b0a1d2e3f4a5b6"),
"name": "Alice",
"age": 30,
"email": "alice@example.com",
"address": {
"city": "New York",
"zip": "10001"
},
"tags": ["developer", "mongodb", "nodejs"]
}Sammlungen
Dokumente werden in Sammlungen gruppiert, die SQL-Datenbanktabellen ähneln. Im Gegensatz zu SQL-Tabellen erzwingen Sammlungen jedoch kein festes Schema – Dokumente innerhalb derselben Sammlung können völlig unterschiedliche Felder haben.
Datenbanken
Ein MongoDB-Server kann mehrere Datenbanken hosten, von denen jede einen eigenen Satz von Sammlungen enthält. Dies erleichtert die Isolierung von Daten für verschiedene Anwendungen oder Umgebungen (z. B. Entwicklung, Staging, Produktion) auf einer einzelnen Serverinstanz.
Abschnitt 2: Wichtigste Funktionen von MongoDB
2.1 Dokumentorientierte Speicherung
Mongodbis Dokumentmodell ist eines seiner leistungsstärksten Features. Da jedes Dokument eine andere Struktur haben kann, können Entwickler das Datenbankschema organisch weiterentwickeln, wenn sich die Anforderungen der Anwendung ändern – ohne komplexe ALTER TABLE-Migrationen durchzuführen oder Ausfallzeiten zu verursachen.
Diese Flexibilität ist besonders wertvoll in agilen Entwicklungsumgebungen, in denen sich die Anforderungen häufig ändern, oder in Anwendungen, die Daten aus mehreren heterogenen Quellen aggregieren.
2.2 Horizontale Skalierbarkeit mit Sharding
Eine der definierenden Fähigkeiten von MongoDB ist seine native Unterstützung für horizontale Skalierung durch Sharding. Sharding verteilt Daten auf mehrere Server (sogenannte Shards), wodurch MongoDB Datensätze und Durchsatzmengen verarbeiten kann, die einen einzelnen Computer überlasten würden.
Jeder Shard enthält eine Teilmenge der Gesamtdaten, und ein mongos-Router leitet Abfragen basierend auf einem konfigurierbaren Shard-Schlüssel an die entsprechenden Shards weiter. Diese Architektur ermöglicht eine nahezu lineare Skalierbarkeit, wenn Ihr Datenvolumen und Ihre Abfragelast wachsen.
Für hochfrequente Produktionsumgebungen stellt das Hosten von MongoDB auf AlexHosts Dedicated Servers sicher, dass jeder Shard Zugriff auf isolierte, hochperformante Hardware-Ressourcen hat.
2.3 Hohe Verfügbarkeit mit Replica Sets
MongoDB bietet integrierte Fehlertoleranz durch Replica Sets – Gruppen von MongoDB-Instanzen, die identische Kopien derselben Daten verwalten. Ein Replica Set besteht aus:
- Einem primären Knoten, der alle Schreibvorgänge empfängt
- Einem oder mehreren sekundären Knoten, die Daten vom primären Knoten replizieren
- Einem optionalen Schiedsrichter, der an Wahlen teilnimmt, ohne Daten zu speichern
Wenn der primäre Knoten ausfällt, wählt das Replica Set automatisch einen neuen primären Knoten aus den verfügbaren sekundären Knoten aus, wodurch Ausfallzeiten minimiert und die Datenhaltbarkeit gewährleistet werden.
2.4 Leistungsstarke Abfragesprache und Aggregations-Framework
Mongodbis MongoDB Query Language (MQL) unterstützt eine umfangreiche Reihe von Operationen, darunter:
- Filterung auf Feldebene mit Vergleichs-, Logik- und Element-Operatoren
- Projektion zur Rückgabe nur bestimmter Felder
- Sortierung und Paginierung mit
sort(),limit()undskip() - Volltextsuche mit Volltext-Indizes
- Geospatiale Abfragen für standortbasierte Anwendungen
Das Aggregations-Framework bietet einen Pipeline-basierten Ansatz zur Datentransformation und -analyse und unterstützt Operationen wie $match, $group, $sort, $project, $lookup (Joins), $unwind und viele mehr – mit Funktionalität vergleichbar mit komplexen SQL GROUP BY- und JOIN-Operationen.
2.5 Flexible Indizierung
MongoDB unterstützt mehrere Indextypen zur Optimierung der Abfrageleistung:
- Einzelfeld-Indizes für einfache Abfragen
- Zusammengesetzte Indizes für Multi-Feld-Abfragen
- Multikey-Indizes für Array-Felder
- Text-Indizes für Volltextsuche
- Geospatiale Indizes für Standortabfragen
- TTL-Indizes für automatisches Dokumentablaufen (nützlich für Sitzungsdaten oder Protokolle)
Abschnitt 3: Installation von MongoDB auf Ubuntu (Schritt für Schritt)
Dieser Abschnitt führt Sie durch eine vollständige MongoDB-Installation auf Ubuntu 20.04 LTS (Focal Fossa). Diese Schritte sind für eine AlexHost VPS-Umgebung mit Root- oder Sudo-Zugriff optimiert.
Voraussetzungen
- Ubuntu 20.04 LTS Server
- Ein Benutzerkonto mit
sudoBerechtigungen - Grundlegende Vertrautheit mit der Linux-Befehlszeile
Wenn Sie noch keinen Server haben, können Sie in wenigen Minuten einen vollständig konfigurierten Ubuntu VPS mit AlexHost VPS Hosting starten.
Schritt 1: Importieren Sie den öffentlichen MongoDB GPG-Schlüssel
MongoDB-Pakete sind mit einem GPG-Schlüssel signiert, um ihre Authentizität zu überprüfen. Importieren Sie den Schlüssel mit dem folgenden Befehl:
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -Sie sollten OK als Ausgabe sehen, was bestätigt, dass der Schlüssel erfolgreich importiert wurde.
Schritt 2: Fügen Sie das MongoDB-Repository hinzu
Erstellen Sie eine Listendatei, um das offizielle MongoDB-Repository zu den Paketquellen Ihres Systems hinzuzufügen:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list> Hinweis: Dieser Befehl fügt das MongoDB 6.0-Repository hinzu. Passen Sie die Versionsnummer an, wenn Sie eine andere Version benötigen.
Schritt 3: Aktualisieren Sie die Paketdatenbank
Aktualisieren Sie Ihren lokalen Paketindex, um das neu hinzugefügte MongoDB-Repository einzubeziehen:
sudo apt updateSchritt 4: Installieren Sie MongoDB
Installieren Sie die neueste stabile Version von MongoDB mit allen erforderlichen Komponenten:
sudo apt install -y mongodb-orgDies installiert die folgenden Pakete:
mongod– der MongoDB-Datenbankdaemonmongos– der MongoDB-Sharding-Routermongosh– die MongoDB-Shell (moderner Ersatz für die Legacy-mongoShell)- MongoDB-Tools und Bibliotheken
Schritt 5: Starten Sie den MongoDB-Dienst und aktivieren Sie ihn
Starten Sie den MongoDB-Dienst sofort:
sudo systemctl start mongodAktivieren Sie MongoDB, um beim Systemstart automatisch zu starten:
sudo systemctl enable mongodÜberprüfen Sie, ob MongoDB korrekt ausgeführt wird:
sudo systemctl status mongodSie sollten eine Ausgabe sehen, die anzeigt, dass der Dienst active (running) ist. Wenn MongoDB erfolgreich gestartet wurde, sehen Sie auch eine Zeile, die bestätigt, dass es auf Port 27017 lauscht.
Schritt 6: Sichern Sie Ihre MongoDB-Installation (empfohlen)
Bevor Sie MongoDB in einer produktiven oder internetgestützten Umgebung verwenden, ist es wichtig, die Authentifizierung zu aktivieren. Standardmäßig erfordert MongoDB keinen Benutzernamen oder Passwort.
Erstellen Sie einen administrativen Benutzer:
mongoshInnerhalb der MongoDB-Shell:
use admin
db.createUser({
user: "adminUser",
pwd: "YourStrongPasswordHere",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
})Aktivieren Sie die Authentifizierung durch Bearbeitung der MongoDB-Konfigurationsdatei:
sudo nano /etc/mongod.confSuchen Sie den Abschnitt security und fügen Sie hinzu:
security:
authorization: enabledStarten Sie MongoDB neu, um die Änderungen anzuwenden:
sudo systemctl restart mongodVon diesem Punkt an erfordern alle Verbindungen zu MongoDB gültige Anmeldedaten.
Abschnitt 4: Verwendung von MongoDB – wichtigste Befehle und Operationen
Mit MongoDB installiert und gesichert, lassen Sie uns die wichtigsten Operationen erkunden, die Sie täglich verwenden werden.
Schritt 1: Zugriff auf die MongoDB-Shell
Verbinden Sie sich mit Ihrer MongoDB-Instanz über die moderne mongosh Shell:
mongoshWenn die Authentifizierung aktiviert ist, verbinden Sie sich mit Anmeldedaten:
mongosh -u adminUser -p YourStrongPasswordHere --authenticationDatabase adminSchritt 2: Datenbankoperationen
Alle Datenbanken auflisten:
show dbsEine Datenbank erstellen oder zu ihr wechseln:
use mydatabase> MongoDB erstellt die Datenbank automatisch, wenn Sie zum ersten Mal Daten einfügen.
Überprüfen Sie die aktuell ausgewählte Datenbank:
dbLöschen Sie eine Datenbank:
db.dropDatabase()Schritt 3: Sammlungsoperationen
Erstellen Sie eine Sammlung explizit:
db.createCollection("users")Alle Sammlungen in der aktuellen Datenbank auflisten:
show collectionsLöschen Sie eine Sammlung:
db.users.drop()Schritt 4: Dokument-CRUD-Operationen
#### Dokumente einfügen
Ein einzelnes Dokument einfügen:
db.users.insertOne({
name: "Alice",
age: 30,
email: "alice@example.com",
role: "developer"
})Mehrere Dokumente auf einmal einfügen:
db.users.insertMany([
{ name: "Bob", age: 25, email: "bob@example.com", role: "designer" },
{ name: "Carol", age: 35, email: "carol@example.com", role: "manager" },
{ name: "Dave", age: 28, email: "dave@example.com", role: "developer" }
])#### Dokumente lesen
Alle Dokumente in einer Sammlung suchen:
db.users.find()Dokumente mit einer bestimmten Bedingung suchen:
db.users.find({ role: "developer" })Dokumente mit mehreren Bedingungen suchen:
db.users.find({ role: "developer", age: { $gte: 28 } })Nur bestimmte Felder zurückgeben (Projektion):
db.users.find({ role: "developer" }, { name: 1, email: 1, _id: 0 })Ein einzelnes Dokument suchen:
db.users.findOne({ name: "Alice" })Ergebnisse sortieren:
db.users.find().sort({ age: 1 }) // Ascending
db.users.find().sort({ age: -1 }) // DescendingErgebnisse begrenzen und paginieren:
db.users.find().limit(10).skip(20) // Page 3 with 10 results per page#### Dokumente aktualisieren
Ein einzelnes Dokument aktualisieren:
db.users.updateOne(
{ name: "Alice" },
{ $set: { age: 31, role: "senior developer" } }
)Mehrere Dokumente aktualisieren:
db.users.updateMany(
{ role: "developer" },
{ $set: { department: "Engineering" } }
)Ein numerisches Feld erhöhen:
db.users.updateOne(
{ name: "Bob" },
{ $inc: { age: 1 } }
)#### Dokumente löschen
Ein einzelnes Dokument löschen:
db.users.deleteOne({ name: "Dave" })Mehrere Dokumente löschen, die eine Bedingung erfüllen:
db.users.deleteMany({ role: "designer" })Schritt 5: Indizierung für Leistung
Das Erstellen von Indizes für häufig abgefragte Felder verbessert die Abfrageleistung dramatisch.
Erstellen Sie einen Einzelfeld-Index:
db.users.createIndex({ email: 1 })Erstellen Sie einen zusammengesetzten Index:
db.users.createIndex({ role: 1, age: -1 })Erstellen Sie einen eindeutigen Index:
db.users.createIndex({ email: 1 }, { unique: true })Alle Indizes einer Sammlung auflisten:
db.users.getIndexes()Schritt 6: Aggregations-Pipeline
Das Aggregations-Framework ermöglicht es Ihnen, komplexe Datenanalysen direkt in MongoDB durchzuführen.
Beispiel: Benutzer nach Rolle zählen und nach Anzahl sortieren:
db.users.aggregate([
{ $group: { _id: "$role", count: { $sum: 1 } } },
{ $sort: { count: -1 } }
])Beispiel: Filtern, gruppieren und durchschnittliches Alter nach Rolle berechnen:
db.users.aggregate([
{ $match: { department: "Engineering" } },
{ $group: { _id: "$role", avgAge: { $avg: "$age" }, total: { $sum: 1 } } },
{ $sort: { avgAge: 1 } }
])Abschnitt 5: MongoDB-Konfiguration und Leistungsoptimierung
Konfigurieren von mongod.conf
Mongodbis primäre Konfigurationsdatei befindet sich unter /etc/mongod.conf. Wichtige Einstellungen zum Überprüfen und Optimieren:
# Network settings
net:
port: 27017
bindIp: 127.0.0.1 # Restrict to localhost for security; use server IP for remote access
# Storage settings
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
wiredTiger:
engineConfig:
cacheSizeGB: 2 # Set to ~50% of available RAM
# Logging
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Security
security:
authorization: enabled
# Replication (for replica sets)
replication:
replSetName: "rs0"Best Practices für Leistung
- Weisen Sie ausreichend RAM zu – Mongodbis WiredTiger-Speicher-Engine verwendet einen In-Memory-Cache. Setzen Sie
cacheSizeGBauf etwa 50% des verfügbaren Systemspeichers. - Verwenden Sie geeignete Indizes – Analysieren Sie langsame Abfragen mit
db.collection.explain("executionStats")und erstellen Sie entsprechend Indizes. - Überwachen Sie mit MongoDB Atlas oder mongostat – Verwenden Sie
mongostatundmongotopBefehlszeilenwerkzeuge zur Überwachung der Echtzeitleistung. - Aktivieren Sie Journaling – Journaling ist standardmäßig aktiviert und bietet Crash-Wiederherstellung; deaktivieren Sie es nicht in der Produktion.
- Verwenden Sie Connection Pooling – Konfigurieren Sie den MongoDB-Treiber Ihrer Anwendung, um Connection Pooling zu verwenden und den Verbindungsaufwand zu reduzieren.
- Komprimieren Sie Sammlungen regelmäßig – Verwenden Sie
db.runCommand({ compact: "collectionName" }), um Speicherplatz nach großen Löschungen freizugeben.
Abschnitt 6: Sicherung und Wiederherstellung von MongoDB
Regelmäßige Sicherungen sind für jede produktive Datenbank unerlässlich. MongoDB bietet integrierte Tools für diesen Zweck.
Erstellen Sie eine Sicherung mit mongodump
mongodump --uri="mongodb://adminUser:password@localhost:27017" --out=/backup/mongodb/$(date +%Y%m%d)Wiederherstellen aus einer Sicherung mit mongorestore
mongorestore --uri="mongodb://adminUser:password@localhost:27017" /backup/mongodb/20240115/Automatisieren Sie Sicherungen mit Cron
Fügen Sie einen Cron-Job hinzu, um Sicherungen automatisch durchzuführen:
sudo crontab -eFügen Sie die folgende Zeile hinzu, um täglich um 2:00 Uhr eine Sicherung durchzuführen:
0 2 * * * mongodump --uri="mongodb://adminUser:password@localhost:27017" --out=/backup/mongodb/$(date +%Y%m%d) >> /var/log/mongodb-backup.log 2>&1Wählen Sie den richtigen AlexHost-Plan für MongoDB
Der richtige Hosting-Plan hängt von der Skalierung, dem Datenverkehr und den Datenanforderungen Ihrer Anwendung ab:
| Anwendungsfall | Empfohlener Plan | Warum |
|---|---|---|
| Entwicklung / Tests | VPS Hosting | Kostengünstig, vollständige Kontrolle, einfache Einrichtung |
| Kleine bis mittlere Produktion | VPS Hosting | Skalierbare Ressourcen, SSD-Speicher, Root-Zugriff |
