MongoDB ist eine Dokumenten orientierte OpenSource Datenbank unter GNU AGPL v3.0. Lizenz. Der Name wurde abgeleitet von dem Wort “humongous”. Klingt komisch, ist aber so…. (hugoDB hätte ich besser gefunden :) ). Geschrieben ist das System ausnahmsweise mal nicht in Erlang sondern in C++. Der Zugriff auf die Datenbank erfolgt entweder über die mitgelieferte Console oder über die verschiedenen Treiber, die für alle möglichen Sprachen zur Verfügung gestellt werden.

MongoDB bietet, wie alle anderen NoSQL Datenbanken sehr gute MongoDBLeistungen im Bereich Datendurchsatz und Replication. Des Weiteren sollen große Dateien kein Problem darstellen und performant verarbeitet werden. Das Datenmodel basiert auf den beiden Objektnotationen JSON und BSON. Einfach gesagt werden Daten extern als JSON (JavaScript Object Notation) Objekte dargestellt, intern als BSON (Bin­ary JSON Object Notation) in der Datenbank gespeichert werden. Da BSON Objekte auf eine Größe von 16MB begrenzt sind, werden größere Dateien aufgesplitet und mit Hilfe der Implementierung der GridFS Spezifikation abgespeichert. Wichtig zu wissen ist, das aktuell nicht alle Treiber diese Technik unterstützen (Unterstützt von PHP, Java, Python, Ruby und Perl). Alle anderen müssen die GridFS API, welche sehr einfach gehalten ist, direkt bemühen. Auch die Standard Features von NoSQL Datenbank wie Map/Reduce und Scaling werden von MongoDB unterstützt.

Installation

Die Installation des Systems ist absolut einfach und innerhalb von 3 Minuten zu erledigen.

  1. Neuste Version runterladen www.mongodb.com
  2. Entpacken
  3. Verzeichnis anlegen in dem die Datenbank Inhalte gespeichert werden sollen
  4. <<mongoDBDir>>/bin mongod.exe –dbpath <<PathToDataDir>> starten
  5. localhost:28017 im Browser aufrufen
  6. fertig

Datenmodel & Integration

Der Zugriff auf die Daten kann über die integrierte Konsole oder den einen entsprechenden Treiber erfolgen. Die etwas spärlich designte Weboberfläche dient eher dazu, den Status des Datenbank Systems zu überwachen und bietet im Gegensatz zu CouchDB keinen komfortablen Datenzugriff.

MongoDB beinhaltet einzelne Datenbanken die über Namen angesprochen werden können. Diese wiederum beinhalten Collections, welche im entfernten einer Tabelle in einer relationalen Datenbank ähnlich sind. Jedes Dokument was in die Datenbank geschrieben wird, wird einer Collection zugeordnet. Ein Unterschied zu einem RDBMS ist, das die interne Struktur der Collection nicht beschrieben ist, also erstmal schemalos ist.

Jetzt aber mal ein paar praktische Schritte, dazu im  /bin Verzeichnis der Installation einfach die Datenbank mit ./mongod starten und danach die Console mit ./mongo initialisieren. Bei Erfolg sollte eine ähnliche Meldung erscheinen

MongoDB shell version: 2.0.2
connecting to: test
 
// Datenbank 'modularthinkin' verwenden, falls diese nicht existiert wird sie kommentarlos erzeugt.
use modularthinkin
switched to db modularthinkin
 
// Datensatz erzeugen in der Collection mit dem Namen blog. Diese wird auch automatisch erzeugt.
// Input ist ein beliebiger JSON Datensatz
db.blog.insert({author:'andreas',title:'mongoDB'});
 
// Mit der find Methode bekommen wir alle Datensätze aus der entsprechenden Collection angezeigt
db.blog.find()
{ "_id" : ObjectId("4f55d0574ed49043e1943ad4"), "author" : "andreas", "title" : "mongoDB" }

Mit dem entsprechenden Treiber kann man dieselben Operationen auch einfach in seine Anwendung einbauen. Hier das entsprechende Beispiel in Java.

Mongo m = new Mongo();
 
// Datenbank 'modularthinkin' verwenden, falls diese nicht existiert wird sie kommentarlos erzeugt.
DB db = m.getDB( "modularthinkin" );
 
// Collection mit dem Namen blog. Diese wird auch automatisch erzeugt, falls nicht vorhanden.
DBCollection coll = db.getCollection("blog");
 
// Datensatz erzeugen und befüllen
BasicDBObject doc = new BasicDBObject();
doc.put("author", "andreas");
doc.put("title", "mongoDB");
 
// Speichern
coll.insert(doc);
 
// Alle Datensätze finden und ausgeben.
DBCursor cur = coll.find();
while(cur.hasNext()) {
System.out.println(cur.next());
}

Fazit

Installation und Configuration sind sehr einfach und in kurzer Zeit erledigt. MongoDB bietet durch seine gut dokumentierten Treiber einen einfachen Einstieg in die Integration einer NoSQL Datenbank. Eine der CouchDB entsprechenden Weboberfläche wäre sicherlich ein nettes Feature, welches den ein oder anderen freuen würde. MongoDB ist (bis jetzt) eine rein server-orientierte Anwendung. Wer also eine transportable Lösung sucht, sollte sich eher an andere Lösungen wie z.B. CouchDB halten. Für den klassischen NoSQL Einsatz auf dem Server ist MongoDB sicherlich nicht die schlechteste Wahl.

Tagged with:
 

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

About The Author

andreas