Open-Source-Datenbanken

Datenbanksysteme im Vergleich: MySQL vs. MongoDB

Dokumente als Datensätze

Der entscheidende Unterschied zu MySQL besteht darin, dass MongoDB Dokument-orientiert arbeitet. Dokumenten-basierende Datenbanken sind auf eine schemafreie Struktur ausgelegt.

Bei MongoDB gibt es also kein festes Tabellenschema und dadurch beispielsweise auch keine zwingenden Relationstabellen und Joins, die mit der Weiterentwicklung und dem Ausbau der Datenbank immer komplexer werden. Stattdessen lassen sich Relationen entweder direkt im Datensatz speichern oder bei Bedarf individuell bei der Datenabfrage erstellen. Dadurch ist die Datenstruktur wesentlich flexibler als bei MySQL und lässt sich auf einfache Weise horizontal skalieren (Auto-Sharding).

Objektdarstellung: Die nicht-relationale Datenbank MongoDB speichert Datensätze in Form von Dokumenten im JSON-Format. Diese sind JavaScript-Objekten sehr ähnlich.
Objektdarstellung: Die nicht-relationale Datenbank MongoDB speichert Datensätze in Form von Dokumenten im JSON-Format. Diese sind JavaScript-Objekten sehr ähnlich.
Foto: Diego Wyllie

Statt von Tabellen wird bei MongoDB von Kollektionen (Collections) gesprochen. Jede Kollektion kann Dokumente beinhalten analog zu Zeilen beziehungsweise Datensätzen in einer MySQL-Tabelle. Dokumente werden im so genannten BSON-Format gespeichert und ausgegeben und sind JavaScript-Objekten sehr ähnlich (siehe Grafik). Dieses Format stammt von dem kompakten, immer beliebteren JSON-Format (JavaScript Object Notation) ab und ist, wie das Präfix "Binary" andeutet, für eine overhead-arme Darstellung von binären Datenobjekten ausgelegt. Jedes Dokument kann dabei eine beliebige Anzahl an Feldern besitzen, während eine verschachtelte Array-Struktur ebenfalls möglich ist. Zudem dürfen Dokumente auch innerhalb eines Dokuments gespeichert werden.

Doch bei all diesen Unterschieden weisen MongoDB und MySQL auch einige wesentliche Gemeinsamkeiten auf. So wird bei beiden Datenbanklösungen eine eindeutige ID pro Datensatz als Primärschlüßel verwendet, während in beiden Fällen Select-relevante Spalten indiziert werden können, um die Performance bei der Abfrage dieser Felder zu erhöhen. Diese Gemeinsamkeiten tragen nicht zuletzt dazu bei, erfahrenen MySQL-Entwicklern den Einsteig in MongoDB zu erleichtern.