MongoDB vs. MySQL

MongoDB ist eine Open-Source-Datenbank, die im Markt gegen das etablierte MySQL antritt. Die Datenbank ist nicht-relational und speichert Daten in dokumentenorientierter Form. In der Praxis ergeben sich vielfältige Unterschiede bei der Verwendung der beiden Datenbanken.

Relationalität versus Nichtrelationalität

MongoDB gehört zu den sogenannten nicht-relationalen Datenbanken, bei MySQL hingegen handelt es sich um eine relationale Datenbank. Das relationale Datenbankmodell war lange Zeit dominierend und genießt auch heute noch weltweit eine starke Verbreitung. Bei relationalen Datenbankmodellen liegt eine mathematische Beschreibung einer Tabelle sowie der Beziehungen der Tabellen untereinander vor. Jede Zeile in der Tabelle stellt einen Datensatz dar, die Eigenschaften des Datensatzes finden sich in den Spalten der Zeile. Der Vorteile bei diesem Modell besteht darin, dass sich relationale Datenbanken einfach und flexibel erstellen lassen. Über die Abfragesprache SQL ist ein Zugriff auf die Datensätze der Datenbank möglich ebenso wie deren Verknüpfung.

MongoDB unterscheidet sich mit seinem nicht-relationalen Datenbankmodell deutlich von relationalen Datenbanken. Eine NoSQL-Datenbank ist nicht auf ein Tabellenschema angewiesen und verfolgt keinen relationalen Ansatz. Das bringt eine deutliche Beschleunigung beim Zugriff auf die Datensätze mit sich. Vorteile hat das gerade bei großen Datenbanken, die mit einer relationalen Struktur ab einer gewissen Größe nicht mehr sinnvoll handhabbar sind. Der nicht-relationale Ansatz spielt daher gerade im Bereich Big-Data eine wichtige Rolle, wo der Umgang mit riesigen Datenmengen gelingen muss. Besonders vorteilhaft sind nicht-relationale bzw. NoSQL-Datenbanken, wenn es um die Speicherung von unstrukturierten Daten geht. Zu diesen können Bilder, Audiodateien oder Videos gehören ebenso wie Kommunikationsdaten, wie sie zum Beispiel in einem sozialen Netzwerk ausgetauscht werden.

Tabellen- und Dokumentenansatz

Einer der wesentlichen Unterschiede zwischen den beiden Datenbanken besteht in der Art und Weise, wie Daten gespeichert werden. SQL-Datenbanken verfolgen dabei den traditionellen Ansatz der Speicherung von Datensätzen in Tabellen. Die Tabellen geben ein festes Schema vor, in dem die Daten eingeordnet sind. Damit die Daten zueinander in Beziehung gesetzt werden können, werden Relationstabellen benötigt. Das Problem bei diesem Ansatz besteht darin, dass die Relationstabellen mit dem Wachsen der Datenbank schnell immer komplexer werden. Bei besonders großen Datenbanken kann so irgendwann ein Zustand der Unbeherrschbarkeit der Daten in komplexen und unübersichtlichen Tabellenstrukturen erreicht werden.

Der von NoSQL verfolgte Dokumentenansatz grenzt sich von den alten Tabellenstrukturen deutlich ab und verfolgt einen anderen Weg bei der Speicherung von Daten. Statt in Tabellen speichert eine Mongo-Datenbank die Datensätze in sogenannten Kollektionen. Eine Kollektion umfasst Daten verschiedener Art, wie sie auch in einer Zeile einer SQL-Datenbank gespeichert werden können. Die Speicherung der Daten erfolgt jedoch im Format BSON. Diese Dokumente ähneln von ihrer Struktur her JSON-Dokumenten und damit der Notation von Objekten, wie sie in Javascript vorgenommen wird. Das hat in der Praxis den entscheidenden Vorteil, dass die Daten sich jederzeit indizieren und abfragen lassen. Damit ergibt sich ein deutlich flexiblerer Umgang mit den Datensätzen, als es bei einer MySQL-Tabelle der Fall ist. Daten lassen sich auf natürliche Weise modellieren unabhängig davon, wie komplex und verschachtelt die Datenbank ist.

Datenzugriff

Bei jeder Datenbank stellt sich die Frage, wie der Zugriff auf die Daten erfolgt. Bei MySQL steht hierfür die Abfragesprache SQL zur Verfügung. Mithilfe der SQL-Befehle können Daten eingefügt, verändert und gelöscht werden. SQL bietet einen einfachen semantischen Aufbau, der an die englische Umgangssprache angelehnt ist. Eine Einarbeitung in SQL ist damit relativ schnell möglich. Die Datenbankabfragen werden als Queries bezeichnet und liefern ein Ergebnis, das selbst wiederum eine Tabellenstruktur aufweist. Mongo-Datenbanken hingegen verzichten auf eine solche Abfragesprache und ersetzen die Queries durch objektspezifische Methoden verschiedener Programmiersprachen wie etwa Javascript, PHP oder Ruby. Da es sich hierbei ohnehin um im Web sehr häufig verwendete Programmiersprachen handelt, sind die Entwickler der Datenbanken auf keine zusätzlichen Tools angewiesen. Die Abfragen können direkt mit den Methoden der bereits verwendeten Programmiersprachen vorgenommen werden. Das macht eine Integration von NoSQL-Datenbanken in bestehende Websysteme sehr einfach.

Unterschiede in der horizontalen Skalierbarkeit

Ein wichtiger Faktor beim Umgang mit Datenbanken besteht heute in deren horizontaler Skalierbarkeit. Darunter ist zu verstehen, auf wie viele Server eine Datenbank verteilt werden kann, wohingegen mit vertikaler Skalierung die Aufrüstung bereits bestehender Server gemeint ist. Im Bereich Big Data kann ein schnelles Wachstum der Datenbank die ebenso schnelle Einbindung weiterer Server erforderlich machen. NoSQL bietet in dieser Hinsicht große Vorteile, da bei einer horizontalen Skalierung die volle Funktionsfähigkeit der Datenbank jederzeit sichergestellt ist. Bei anderen Datenbanken wie etwa SQL ist eine solche horizontale Skalierung gar nicht oder nur sehr schwierig möglich.

Gemeinsamkeiten der beiden Datenbanken

Trotz aller teilweise erheblicher Unterschiede zwischen den beiden Datenbanken weisen diese auch Gemeinsamkeiten auf. So erhält jeder Datensatz bei Mongo-Datenbanken ebenso wie bei SQL-Datenbanken eine eindeutige ID, die den Datensatz in der Hierarchie identifizierbar macht. Die ID dient dabei als Primärschlüssel. Diese Gemeinsamkeit erleichtert in der Praxis den Umstieg von einer traditionellen Tabellendatenbank zu einer modernen Dokumentendatenbank.