Re­la­tio­na­le Da­ten­ban­ken waren über Jahr­zehn­te der Standard für die Da­ten­ver­wal­tung. Doch die Vielfalt an Daten moderner Web­an­wen­dun­gen hat Da­ten­ban­ken mit einem do­ku­men­ten­ori­en­tier­ten Ansatz wie MongoDB zu einer echten Al­ter­na­ti­ve zum klas­si­schen Modell gemacht. Wir zeigen dir, wie dieses Konzept funk­tio­niert und welche Vorteile es dir bietet.

Was zeichnet MongoDB aus?

MongoDB, dessen Name vom eng­li­schen Wort „humongous“ (riesig) stammt, ist ein do­ku­men­ten­ori­en­tier­tes Da­ten­bank­sys­tem. Im Gegensatz zu re­la­tio­na­len Da­ten­ban­ken, die Daten in starren Tabellen struk­tu­rie­ren, speichert MongoDB In­for­ma­tio­nen in so­ge­nann­ten un­struk­tu­rier­ten Sam­mel­map­pen (Coll­ec­tions).

Dabei ver­zich­tet MongoDB auf SQL als Ab­fra­ge­spra­che und zählt somit zu den NoSQL-Da­ten­bank­sys­te­men. Statt­des­sen kommt die auf Ja­va­Script ba­sie­ren­de MongoDB Query Language (MQL) zum Einsatz. Die Da­ten­sät­ze werden im BSON-Format ge­spei­chert, einer binären Ent­spre­chung von JSON. Da dadurch sämtliche Ja­va­Script-Da­ten­ty­pen un­ter­stützt werden, ist MongoDB die ideale Basis für viele Ja­va­Script-basierte Platt­for­men.

Ein we­sent­li­ches Merkmal von MongoDB ist zudem die ho­ri­zon­ta­le Ska­lier­bar­keit. Das bedeutet, dass die Daten einer Datenbank über mehrere Server verteilt werden können, anstatt nur auf einem zentralen System zu liegen. Das erhöht die Ver­füg­bar­keit und die Ge­samt­per­for­mance erheblich. Meist ist dieser Weg kos­ten­ef­fi­zi­en­ter, als einen einzelnen Server immer weiter mit teurer Hardware auf­zu­rüs­ten (vertikale Ska­lie­rung).

Wie arbeitet MongoDB?

Anders als etwa MySQL verfolgt MongoDB einen do­ku­men­ten­ori­en­tier­ten Ansatz bei der Da­ten­spei­che­rung. Statt Tabellen, in denen jede Zeile die exakt gleiche Spal­ten­an­zahl befüllen muss, landen die In­for­ma­tio­nen flexibel in BSON-Do­ku­men­ten. Jedes Dokument kann in­di­vi­du­ell viele Felder besitzen. Diese Dokumente ersetzen praktisch die Zeilen einer SQL-Tabelle, während die darin de­fi­nier­ten Felder die Spalten re­prä­sen­tie­ren.

Für die Arbeit mit MongoDB stehen ver­schie­de­ne Werkzeuge zur Verfügung. Neben der klas­si­schen MongoDB Shell gibt es mit MongoDB Compass auch eine grafische Ober­flä­che zur Ver­wal­tung. In unseren Bei­spie­len kon­zen­trie­ren wir uns jedoch auf die Shell-Befehle.

Da MQL auf Ja­va­Script aufbaut, stehen bereits viele Funk­tio­nen für komplexe Abfragen bereit. Die Schreib- und Le­se­be­feh­le folgen dabei einem ein­heit­li­chen Schema, wie das folgende Beispiel ver­deut­licht. Weitere Befehle zur Da­ten­bank­ver­wal­tung findest du im Detail in der MongoDB-Do­ku­men­ta­ti­on.

db.studierende.find({ Name: "Fritz" })
db.studierende.updateOne({ Name: "Fritz" }, { $set: { Semester: 2 } })
db.studierende.deleteOne({ Name: "Peter" })
db.studierende.insertOne({
    Name: "Else",
    Alter: 18,
    Semester: 1
})

In diesem Beispiel siehst du auf­ein­an­der­fol­gen­de Ope­ra­tio­nen. „db“ adres­siert die Datenbank, während „stu­die­ren­de“ die Sam­mel­map­pe angibt, in der ge­ar­bei­tet wird. Danach folgt die jeweilige Methode.

Mit find() suchst du nach Do­ku­men­ten. Ohne Parameter werden alle Einträge der Mappe aus­ge­ge­ben; im Beispiel filtern wir nach dem Namen „Fritz“. Die Methode updateOne() über­schreibt Werte. Sie benötigt zwei Argumente: das Aus­wahl­kri­te­ri­um und das zu ändernde Schlüssel-Wert-Paar. Hier wird bei allen Personen namens „Fritz“ das Semester auf 2 gesetzt.

Die Methode deleteOne() entfernt Dokumente basierend auf dem Aus­wahl­kri­te­ri­um – im Beispiel fliegen alle Einträge mit dem Namen „Peter“ raus. insertOne() fügt ein neues Dokument im JSON-Format hinzu. Wichtig: Jedes Dokument benötigt eine ein­deu­ti­ge 12-Byte He­xa­de­zi­mal­zahl als Objekt-ID. Gibst du diese nicht händisch an, erstellt world4you bzw. MongoDB diese au­to­ma­tisch für dich.

Vorteile von MongoDB

Das Konzept von MongoDB bietet dir viel Fle­xi­bi­li­tät. Ein großer Pluspunkt: Da Einträge nicht dieselben Attribute haben müssen, lassen sich un­struk­tu­rier­te und se­mi­struk­tu­rier­te Daten pro­blem­los speichern. Du kannst einzelne Dokumente jederzeit anpassen (z. B. Felder hin­zu­fü­gen), ohne die gesamte Struktur der Sam­mel­map­pe ändern zu müssen. Durch das BSON-Format ist zudem eine nahtlose In­te­gra­ti­on in Ja­va­Script-Um­ge­bun­gen ga­ran­tiert.

Darüber hinaus punktet MongoDB mit ho­ri­zon­ta­ler Ska­lier­bar­keit, ohne die ACID-Prin­zi­pi­en (Atomicity, Con­sis­ten­cy, Isolation, Du­ra­bi­li­ty) zu ver­nach­läs­si­gen. Bei ver­teil­ten Systemen ist Da­ten­kon­sis­tenz oft eine Her­aus­for­de­rung. Seit Version 4.2 (2019) be­herrscht MongoDB jedoch Än­de­run­gen über mehrere Dokumente und Server hinweg, ohne dass die Kon­sis­tenz oder Ver­füg­bar­keit leidet. So bleibt deine Anwendung immer am neuesten Stand.

Tipp

Du suchst eine Datenbank, die mit deinen Projekten mitwächst? Mit world4you hast du das perfekte Fundament für deine Web­an­wen­dun­gen!

Wann ist MongoDB die richtige Wahl?

MongoDB ist ideal, wenn du Web­pro­jek­te mit massiven, un­struk­tu­rier­ten Da­ten­men­gen planst. Das Arbeiten ohne starres Schema ist perfekt für un­ter­schied­li­che Da­ten­ty­pen, die schnell ver­ar­bei­tet und sicher ge­spei­chert werden müssen.

Die nahezu gren­zen­lo­se ho­ri­zon­ta­le Ska­lie­rung sorgt dafür, dass deine Datenbank auch bei Erfolg glatt läuft. Zur Ab­si­che­rung der Ver­füg­bar­keit lassen sich un­kom­pli­ziert Si­cher­heits­ko­pien erstellen und auf ver­schie­de­nen Servern be­reit­stel­len. Auch beim Zu­sam­men­füh­ren von Daten aus diversen Quellen spielt das System seine Stärken voll aus.

Emp­feh­lens­wert ist MongoDB besonders für Projekte mit diesen Schwer­punk­ten:

  • Ska­lier­bar­keit: Wenn deine Zu­griffs­zah­len steigen, wächst die Datenbank einfach mit.
  • Ver­füg­bar­keit: Deine Anwendung bleibt auch bei Teil­aus­fäl­len online und er­reich­bar.
  • Fle­xi­bi­li­tät: Du kannst dein Projekt jederzeit dynamisch an neue An­for­de­run­gen anpassen.

Du bist unsicher, welches Modell passt? Oft ist auch ein Mix aus ver­schie­de­nen Da­ten­bank­ty­pen die ideale Lösung für dein An­for­de­rungs­pro­fil.

Zum Hauptmenü