Bericht vom NoSQL Day der WebTechCon 2012

Schneller mit MongoDB
Kommentare

Seit einigen Jahren wird das Konzept relationaler Datenbanken zunehmend in Frage gestellt: Gerade das Web stellt mehr und mehr Anforderungen, die auf relationalem Weg nicht gelöst werden können, und da kommen neue Datenbanklösungen ins Spiel, die ebenfalls Open-Source bereitgestellt werden und einen vollkommen neuen Ansatz verfolgen.

NoSQL klingt zunächst etwas ablehnend, bedeutet aber „Not only SQL“ und soll Alternativen für relationale Datenbanken aufzeigen. Entstanden ist dieses Konzept in erster Linie als Reaktion zur Unflexibilität sowie zur relativ schwierigen Skalierbarkeit von klassischen Datenbanksystemen, bei denen die Daten nach einem stark strukturierten Modell gespeichert werden müssen. Bei NoSQL gilt: Vereinfachung der Datenhaltung für die Entwicklung und verbesserte horizontale Skalierbarkeit im Betrieb.

Ein beispielhaftes Anwendungsszenario, in dem man mit einer relationalen Datenbank nicht mehr weitergekommen ist, sind die 3D-Stadtmodelle des Fraunhofer IGD. Michel Krämer berichtete bei IPC/WTC 2012 in Mainz, wieso MongoDB die relationale Datenbank MySQL in diesem Projekt eindeutig geschlagen hat. Bei dem Projekt „CityServer3D“ treffen texturierte Geometrien auf Metadaten wie Straßennamen, Hausnummer oder Baujahre. Das Modell setzt sich also aus verschiedenen „Datentöpfen“ zusammen, was bei der Summe an Informationen sehr komplex ist.

Daten für unterschiedliche Nutzergruppen aufbereiten

Hinzu kommen verschiedene User-Gruppen, die das Modell mit unterschiedlichen Ansprüchen aufrufen: Bürger nutzen es womöglich eher als Navigationshilfe, die Stadtplanung erstellt damit Bebauungspläne. Für all diese User, die mit ganz verschiedenen Interessen auf die Datenbank zugreifen, muss die Performance sichergestellt werden. Eine Möglichkeit wäre es, mehrere MySQL Server einzusetzen, um Loadbalancing sicherzustellen. Doch eine aufwendige Infrastruktur einzurichten, so Krämer, sei für viele allein schon finanziell keine Option.

Der Grund, warum die Performance bei relationalen Datenbanken oft schlecht sei, verberge sich hinter deren Joins. Hier kommt schon die erste Eigenheit von NoSQL gegenüber SQL zum Tragen: Die Performancegewinne bei einer NoSQL-Datenbank wie MongoDB erreicht man zum Teil eben dadurch, dass man versucht, ohne Joins auszukommen. Das bedeutet, dass man zum Beispiel alle Seitendaten in einen einzigen Datenbankeintrag schreibt.

Im Falle des CityServer3D habe sich eine dokumententorientierte Datenbank als sehr gut erwiesen: Jedes Gebäude stellt ein Dokument dar, in dem sich hierarchisch die Geometrien und dazugehörenden Fachdaten befinden. Es gibt keine Relationen, sondern die Dokumente sind verschachtelt.

Ordnung vs. Performance?

Dies kann wiederum zu Redundanzen führen, z.B. wenn mehrere Leute die gleiche Adresse haben, aber so Krämer: „Damit kann und muss man leben.“ Womit man bei der Nutzung von MongoDB rechnen muss: Es wird eine hohe Anzahl an Speicher voralloziiert, man sollte also viel Arbeitsspeicher haben, damit die Datenbank wirklich performant arbeiten kann.

MongoDB verzichtet zugunsten der Leichtgewichtigkeit und Schnelligkeit außerdem auf Transaktionen. Stattdessen werden Transaktionen mittels MVCC simuliert: MongoMVCC. Dieses Projekt implementiert das Multiversion-Concurrency-Control-Paradigma (MVCC) auf MongoDB.

MVCC ermöglicht einen Lock-freien und gleichzeitigen Zugriff auf die Datenbank. Jede Verbindung erhält einen eigenen Datenbank-Snapshot (auch als Version oder Commit bekannt). Datenbank-Reads und -Writes können gleichzeitig durchgeführt werden, ohne dass die Konsistenz der Daten beeinträchtigt wird.

Wenngleich das Beispiel aus Krämers Session auf der IPC12 sehr speziell war, haben wir einiges über die Vorzüge einer nichtrelationalen Datenbank gelernt. Wenn Euer Service ebenfalls mit vielen gemischten Daten arbeitet und diese für unterschiedliche Zwecke aufbereitet werden müssen, dann lohnt sich für Euch eventuell auch der Abschied von Tabellen und Schemas.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -