Ich war am Dienstag auf der MongoDBMunich, einer Konferenz zu MongoDB, der aktuell wohl beliebtesten NoSQL-Datenbank.
MongoDB ist eine sogenannte Dokumentdatenbank: Im Gegensatz zu klassischen SQL-Datenbanken (RDBMS wie Oracle und MySQL) werden in MongoDB keine Zeilen in — über Fremdschlüssel verknüpfte — Tabellen gespeichert, sondern ganze Dokumente, in diesem Fall JSON-Dokumente.
Beispiel (via):
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
MongoDB stellt einen Versuch dar, das beste aus beiden Welten zu vereinen: Das System bietet mehr Features als einfache Key/Value-Stores und mehr Spielraum für horizontale Skalierung als traditionelle, relationale Datenbanksysteme. Damit eignet sich MongoDB gut für die Cloud. So kann rasch und flexibel auf Lastspitzen reagiert werden, wenn ein unerwarteter, überbordender Erfolg die eigene Website trifft (siehe Slashdot-Effekt).
Gleichzeitig ist MongoDB “schemalos”, d.h. die Daten haben keine starre Struktur, sondern eine flexibel erweiterbare, ggf. hierarchische Strukturierung mittels Key/Value-Paaren. Dabei kann jedes “Dokument” — bei relationalen Datenbanken wäre das ein Record — seine eigene Struktur haben. Das ist praktisch wenn man Objekte verschiedener Klassen und Unterklassen speichern will. Insgesamt kann MongoDB so sehr flexibel auf neue Anforderungen reagieren. Das ist wichtig wenn ein Projekt wächst. Und das bedeutet eine konkrete Zeit- und damit Kosteneinsparung, die die IT:Agenten an ihre Kunden weitergeben können.
Hier ein Link zum kompletten Programm der Konferenz.
Toll fand ich:
- “Lean & Agile with MongoDB” von den Kollegen der comSysto GmbH mit einem Realtime-Reporting-Beispiel, das von dem am Konferenztag präsentierten noch am ehesten als Big Data durch geht. ComSysto richtet auch die Münchner MongoDB User Group aus. Ich werd’ bald mal hinschauen um auf dem laufenden zu bleiben was mit der Software aus dem Vortrag noch alles gebaut wurde!
- “MongoDB for Official Documents in Bavaria”: Christian Brensing hat BayerText von Oracle auf MongoDB umgestellt. Mit BayerText generiert der Freistaat Bayern seine ausgehenden Serienbriefe. MongoDB beherrscht keine Transaktionen — das war ein Blocker. Christian hat “Pseudo-Transaktionen”, wie er sie nennt, geschrieben, um das Problem zu lösen: Eine Implementierung des Two-Phase-Commit-Protokolls. Interessante Lösung, Kudos! Und: Die neue Lösung ist um den Faktor 10 schneller als die alte.
- Ein weiteres Highlight war der Vortrag von Mathias Stearn von 10gen: “Journaling & the Storage Engine”. Mathias ist der Autor der Storage Engine — so blieb keine Frage unbeantwortet. Allerdings habe ich sehr den Eindruck, dass er in Wirklichkeit den Vortrag MongoDB’s Storage Engine Bit by Bit gehalten hat — zumindest hat er nichts über Journaling erzählt, und die Slides wären auch die selben 🙂 Das tut dem Vortrag keinen Abbruch. Mathias hat mehrere Male geduldig meine vielen Fragen beantwortet, und jeder, der mich etwas kennt, weiß: Das alleine ist eine große Leistung 😉
Insgesamt ein sehr gelungenes Event. Ich hab mich übrigens in letzter Zeit etwas damit beschäftigt, wie leicht oder schwer es wäre, Unicode Collation in MongoDB einzubauen. MongoDB hat nämlich aktuell noch keinen Mechanismus, Zeichenketten nach unterschiedlichen Regeln zu sortieren. Wenn man MongoDB aktuell auffordert, Strings zu sortieren, landen Kleinbuchstaben konsequent hinter Großbuchstaben und nochmal dahinter zum Beispiel deutsche Umlaute. Nicht sehr 2012!
TL;DR: Ein tolles Event! Nächstes Jahr hoffentlich wieder!