You are here

Erster Einstieg in MongoDB

In letzter Zeit wurde häufig über den Begriff NoSQL gesprochen, auch in diesem Blog. Ich habe heute dazu mal einen kleinen Selbstversuch gemacht und mich ein wenig mit dem Vertreter MongoDB beschäftigt. Und das ganze dann auch noch unter Windows ;o) Die entsprechenden Sourcen kann man sich bequem unter folgender Adresse herunterladen: http://www.mongodb.org/downloads . Da bei mir ein 64Bit Windows läuft, habe ich natürlich auch die 64Bit Variante ausprobiert.

Nachdem das heruntergeladene Archiv entpackt wurde, empfiehlt es sich, ein Verzeichnis "C:\data\db" einzurichten, da MongoDB dies standardmäßig erwartet und ansonsten den Dienst verweigert. Das Verzeichnis kann sicherlich auch noch irgendwo konfiguriert werden, aber für den schnellen Einstieg geht es auch so.

Wenn dieses Verzeichnis eingerichtet wurde, kann der MongoDB Server aus der Kommandozeile heraus durch den Aufruf der Datei "mongod.exe" gestartet werden. Diese Datei befindet sich im Unterverzeichnis "bin" des heruntergeladenen Archivs. Es sollte sich nach dem Start des Servers in etwa folgendes Bild bieten:

Um jetzt Daten ablegen zu können, muss, wie bei SQL-Datenbanken auch, ein entsprechender Client gestartet werden. Dazu öffne ich eine zweite Kommandozeile, wechsle in das MongoDB-Bin Verzeichnis und rufe die Datei "mongo.exe" auf. Standardmäßig verbindet sich der Client mit der mitgelieferten Datenbank "test". Um eine andere Datenbank zu verwenden, nutzt man den Befehl "use". In meinem Beispiel wechsle ich mit "use adress" zur Datenbank "adress". Da diese noch nicht existiert, wird sie mit diesem Befehl auch erzeugt.

Jetzt möchte ich natürlich auch Datensätze in dieser Datenbank ablegen. Die zu übergebenden Daten kann ich direkt in die Datenbank schreiben, oder vorher in einer Variablen ablegen und diese dann speichern. Ich habe mich für die zweite Variante entschieden und als ersten Datensatz den folgenden gespeichert:

  • name: mueller
  • vorname: fritz
  • alter:34

Das besondere bei NoSQL Datenbanken ist, dass ich vorher keine Tabellenstruktur definieren muss, wie bei SQL  Datenbanken. Die Struktur wird über die Dokumente bestimmt und kann für jedes Dokument anders sein. Im Beispiel habe ich den Datensatz in der Variablen "person" abgelegt und dann mit dem Befehl "db.adress.save(person)" in der Datenbank gespeichert. Das ganze sieht dann so aus:

Jetzt will ich sehen, ob dieser Datensatz tatsächlich in der Datenbank gelandet ist. Dazu verwendet ich das Kommando "db.adress.fin()". Wie hier zu sehen ist, sind all diese Datenbankkommandos ähnlich aufgebaut. Zuerst kommt der Prefix "db", dann der Name der Datenbank, also "adress" und dann der eigentliche Befehl, in diesem Falle "find()". Zwischen den Klammern fon "find" wird das Suchkriterium angegeben. Ist dieses leer, werden alle Datensätze der Datenbank ausgegeben:

Auf einem Bein kann man nicht stehen, also füge ich jetzt einen zweiten Datensatz hinzu, der folgendermassen aussehen soll:

  • name: krumrueck
  • vorname: karsten
  • alter: 44
  • ort: berlin

Dieser zweite Datensatz hat also ein zusätzliches Feld, nämlich "ort". Bei SQL Datenbanken müsste dieses Feld auch im ersten Datensatz vorhanden sein. Hier ist das nicht erforderlich. Nach dem bewährten Schema lege ich den Datensatz zunächst in der Variablen "person" ab und speichere ihn dann in der Datenbank. Anschliessen lasse ich mir wieder alle Datensätze der Datenbank anzeigen;

Wie wir sehen, werden beide Datensätze angezeigt, obwohl sie unterschiedliche Strukturen haben. Im nächsten Schritt möchte ich nur einen bestimmten Datensatz anzeigen. Zu diesem Zweck gebe ich im "find" Befehl als Suchkriterium "name:krumrueck" an. Und siehe da, es wird nur ein Datensatz angezeigt, der dieser Bedingung entspricht:

Im letzten Schritt schließlich will ich einen Datensatz löschen. Der entsprechende Befehl lautet "remove". Diesem Befehl übergebe ich, genauso wie bei "find" das entsprechende Kriterium. Würde ich kein Kriterium angeben, würden logischerweise alle Datensätze gelöscht werden. Zum Test lasse ich mir nach dem Löschvorgang wieder alle Datensätze der Datenbank anzeigen:

So, das wars erstmal für. Eigentlich ist es gar nicht so kompliziert. Wenn man sich daran gewöhnt hat, dass man die Datenstruktur vorher nicht explizit festlegen muss und jedes Dokument anders strukturiert sein kann, ist es eigentlich ganz einfach. Und meiner Meinung nach ist es auch logischer.

Jedem Anfänger kann ich nur empfehlen, das Online Tutorial von MongoDB einmal durchzuarbeiten. Hat mir zumindest sehr geholfen. Das Tutorial findet sich auf der Homepage von mongodb unter dem Punkt "Try it out". Da es zu MongoDB noch nicht allzuviele deutsche Dokumentationen gibt, sollte man der englischen Sprache halbwegs mächtig sein. Aber das ist ja in heutigen Zeiten kein Problem, wozu gibt es schließlich leo.

AddThis: 

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer


Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1906688 bytes) in /is/htdocs/wp1031861_J8SI3FA0I9/www/drupal_blog_7/sites/all/modules/browscap/import.inc on line 104