MySQL vs. MongoDB

Datenbanksysteme für Web-Anwendungen im Vergleich

29.05.2014
Von 
Diego Wyllie hat Wirtschaftsinformatik an der TU München studiert und verbringt als Softwareentwickler und Fachautor viel Zeit mit Schreiben – entweder Programmcode für Web- und Mobile-Anwendungen oder Fachartikel rund um Softwarethemen.

Dokumente als Datensätze

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

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).

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.