MongoDB ist eine Open-Source-Datenbank, die auf einer dokumentenbasierten Architektur basiert. Sie bietet robuste Skalierbarkeit, hohe Performance und Flexibilität, was sie ideal für moderne Internetanwendungen macht.
Anstelle von Tabellen, wie in relationalen Datenbanken, speichert MongoDB Daten als Dokumente im BSON-Format (Binary JSON). Dieses Format ermöglicht es, unterschiedliche Datenstrukturen in einer Kollektion abzulegen, ohne ein starres Schema vordefinieren zu müssen.
MongoDB ist für hohe Skalierbarkeit optimiert und unterstützt sowohl vertikale als auch horizontale Skalierung:
Automatische Replikation und Failover-Mechanismen sorgen zudem für hohe Verfügbarkeit und Ausfallsicherheit.
Die schemalose Architektur von MongoDB erlaubt es, Datenmodelle ohne feste Strukturen zu definieren:
MongoDB unterstützt eingebaute Replikation über Replikationssets, bestehend aus einem primären und mehreren sekundären Knoten. Änderungen werden effizient über ein Oplog (Operations Log) propagiert, was hohe Verfügbarkeit und Datenkonsistenz gewährleistet.
Sharding ermöglicht die Verteilung großer Datenmengen auf mehrere Server. Ein definierter Shard Key teilt Daten in Chunks auf, die gleichmäßig auf die Shards verteilt werden.
Beispiel für Sharding-Konfiguration:
Shard-Server starten:
bash mongod --shardsvr --dbpath /data/shard1 --port 27018
Konfigurationsserver starten:
bash mongod --configsvr --dbpath /data/config --port 27019
MongoS starten:
bash mongos --configdb configServerAddress --port 27017
Shard hinzufügen:
javascript sh.addShard("shardServerAddress")
Shard Key definieren:
javascript sh.shardCollection("database.collection", { "shardKeyField" : 1 })
MongoDB bietet eine JSON-ähnliche Abfragesprache, die leicht verständlich ist und eine Vielzahl an Operatoren für Filter, Sortierung und Aggregation bereitstellt:
Suche nach einem Dokument:
db.collection.find({ "name": "John" })Filter und Sortierung:
db.collection.find({ "age": { "$gt": 21 } }).sort({ "age": 1 })Aggregation:
db.collection.aggregate([
{ "$match": { "status": "active" } },
{ "$group": { "_id": "$category", "total": { "$sum": "$amount" } } }
])MongoDB ermöglicht so die effiziente Ausführung von komplexen Datenoperationen mit minimalem Aufwand.