Open Source im professionellen Einsatz
Linux-Magazin 07/2013
© gary718, 123RF.com

© gary718, 123RF.com

Die NoSQL-Datenbank Mongo DB in der Praxis

Alles inklusive

Mongo DB ist ein Musterexemplar unter den NoSQL-Datenbanken: Die Open-Source-Software hat zeitgemäße Features wie Replikation, Failover und Sharding bereits eingebaut. Der Autor setzt die Datenbank schon seit 2009 produktiv ein und breitet seinen Erfahrungsschatz aus.

438

Es gibt viele Datenbanken, die sich mit dem Etikett NoSQL schmücken. Dazu gehört auch die dokumentenorientierte Mongo DB. Der Hersteller 10gen versorgt die Open-Source-Software außerdem mit Enterprise-Support und bezeichnet sie als führende NoSQL-Datenbank [1]. Wer im Web nach Mongo DB sucht, findet allerdings ein breites Spektrum von Stimmen: Es reicht von fantastischen Behauptungen über die Skalierbarkeit der Datenbank [2] bis zu bitter enttäuschten Erwartungen [3].

Positive Erfahrungen

Das Unternehmen des Autors kann mehr als vier Jahre Erfahrung beim operativen Betrieb der Software vorweisen. Anfang 2009, noch vor der Mongo-DB-Release 1.0, hat es eine produktive Anwendung von MySQL auf die NoSQL-Datenbank umgestellt. Heute verarbeitet die Installation monatlich 20 TByte Daten. Dieser Artikel berät Umstiegswillige und vermittelt Erfahrungen aus der eigenen Betriebspraxis.

Ebenso wie MySQL, PostgreSQL und andere Datenbanken ist auch Mongo DB nicht an eine bestimmte Programmiersprache gebunden und kommuniziert über ein eigenes Protokoll mit den Anwendungen. Wie andere NoSQL-Datenbanken bietet Mongo DB zwar auch ein REST-API für den Zugriff über HTTP [4], doch Spezialtreiber bieten bessere Performance und eine sinnvolle Implementierung der Abfragesprache.

Offizielle Mongo-DB-Treiber [5] gibt es für zahlreiche Programmiersprachen, darunter C, C++, C#, Erlang, Java, Javascript, Node.js, Perl, PHP, Python und Ruby (Abbildung 1).

Abbildung 1: Für Mongo DB existieren zahlreiche Treiber und Clientbibliotheken in Programmiersprachen von C, Perl und PHP bis Erlang, Ruby und Scala.

Dass Mongo DB im Quelltext unter der AGPL vorliegt und offen spezifiziert ist, eröffnet zudem die Möglichkeit, eigene Clientsoftware zu programmieren. In der Regel sind die von 10gen unterstützten Treiber aber besser getestet, vor allem bei hohem Durchsatz. Support und Maintenance sind insbesondere im Produktiveinsatz wünschenswert.

Schemafrei mit Grenzen

Mongo DB ist schemafrei: Der Anwender braucht wie bei anderen NoSQL-Datenbanken vor ihrem Einsatz kein Schema festzulegen, was bei relationalen Datenbanken wie MySQL anfänglich oft einen großen Aufwand verursacht. Die Dokumente in Mongo DB bestehen schlicht aus Json-Code und lassen sich ad hoc verändern. Dabei dürfen sie Elemente wie Arrays oder Timestamps enthalten, ja sogar andere Dokumente [6].

Das bedeutet aber nicht, dass der Mongo-DB-Anwender sich keine Gedanken über die Gestaltung der Dokumente machen sollte. Besonders wenn diese an Umfang zunehmen, drohen Performance-Probleme. Fügt man neue Felder hinzu oder wächst die Größe (etwa die Summe der Feldnamen und -werte) eines Dokuments über den zugewiesenen Speicherplatz hinaus, speichert Mongo DB das Dokument an einer anderen Stelle der Datei.

Das beeinträchtigt allerdings die Performance, denn die Software muss die Daten neu schreiben – Updates an Ort und Stelle sind schneller. Geschieht das Neuschreiben häufig, passt Mongo DB automatisch ihren Padding-Faktor [7] an und räumt Dokumenten von Haus aus mehr Platz ein.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

comments powered by Disqus

Ausgabe 10/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.