Vollzeitblogger

Was ist eigentlich MongoDB?

March 21, 2014

MongoDB ist eine Dokumententorientierte Datenbank. Im Vergleich zu Datenbanksystemen wie MySQL wird die Struktur der Daten nicht pro Tabelle, sondern pro Eintrag festgelegt, was höhere Flexibilität mich sich bringt. Der Name kommt übrigens von humongous, zu Deutsch gigantisch.

MongoDB ist open source und wird von der MongoDB Inc. entwickelt. Durch die Skalierbarkeit und die Beliebtheit in der Node.js Szene, hat MongoDB eine Menge Aufmerksamkeit bekommen und erst Mitte 2013 von Firmen wie Red Hat 150 Million Risikokapital erhalten.

Die Installationsdateien für MongoDB sind für Linux, MacOS und Windows verfügbar.

MongoDB Queries

Um Queries durchzuführen, folgt man bei MongoDB einer JavaScriptartigen Syntax. Hier ein Beispiel um alle Einträge einer collection zu finden, gefolgt vom SQL-Beispiel:

MongoDB

<code>db.authors.find();
</code>

SQL:

<code>SELECT * FROM `authors`;
</code>

MongoDB Insert

Um neue Dokumente in eine Collection zu speichern, wählt man zunächst eine Datenbank. Danach kann man direkt mit dem Anlegen von neuen Dokumenten anfangen und muss sich nicht um das Anlegen einer Collection kümmern.

<code>> use jsnews;
switched to db jsnews

> db.zitate.insert({ autor: 'Linus Torvalds', inhalt: "Real quality means making sure that people are proud of the code they write, that they're involved and taking it personally."});

> db.zitate.find();
{ "_id" : ObjectId("52c4a2b0249712a209a1b0df"), "autor" : "Linus Torvalds", "inhalt" : "Real quality means making sure that people are proud of the code they write, that they're involved and taking it personally." }
</code>

Wir sehen, dass automatisch das _id Feld hinzugefügt wird, das als einzigartiger Index agiert.

MongoDB Vokabular

Im Gegensatz zu MySQL oder ähnlichen RDB Systemen, ist die Struktur der Daten und das Vokabular etwas anders. Eine ungefähre Übersetzung der SQL Begriffe ist dennoch möglich:

  • Database = Database
  • Table ~ Collection
  • Row ~ Document
  • Field = Field

Eine Tabelle einer relationalen Datenbank entspricht ungefähr einer collection in MongoDB. Eine Sammlung verschiedener Dokumente also.

Eine collection erzwingt jedoch keine Datenstruktur oder Datentypen wie eine Tabelle in SQL-basierten Systemen.

Mit MongoDB kann man die Struktur der Daten per Dokument ändern, das heißt es können pro Dokument verschiedene Schlüssel und Wertepaare vergeben, die nicht bei anderen Dokumenten vorzufinden sind.

MongoDB BSON Datentypen

Die verschiedenen Datentypen reichen bei MongoDB über das gesamte BSON-Spektrum, was eigentlich nur eine binäre Variante von JSON ist.

Zu den Datentypen gehören zum Beispiel Strings, Arrays, Zahlen verschiedener Maximallängen und auch der automatische Index jedes Dokuments die ObjectId.

Hier noch einmal die gesamte Liste der von MongoDB unterstützten Datentypen.

MongoDB ausprobieren / nutzen

Unter try.mongodb.org/ gibt es ein interaktives Tutorial zu MongoDB. Dort stiftet man Bekanntschaft mit den üblichsten Funktionen und darf die syntax im Allgemeinen einmal ausprobieren.

Zusammenfassung

MongoDB eignet sich in vielen Fällen als SQL-Ersatz und besonders für Datenbanken, die über mehrere Server verstreut sind und mit großen Datenmengen zu tun haben. Treiber sind für viele Programmiersprachen zu haben, die hier in der Dokumentation aufgelistet sind: http://docs.mongodb.org/ecosystem/drivers/.

Obwohl das Projekt relativ jung ist, ist es derzeit die beliebteste NoSQL Datenbank und ich kann nur empfehlen, sich das Projekt einmal anzuschauen, wenn man Bedarf an flexiblen Strukturen oder einer Datenbank für rapid prototyping hat.