MySQL oder MongoDB: Welches Datenbanksystem ist besser?


MySQL (SQL) und MongoDB (noSQL) sind die beiden bekanntesten Vertreter zweier Datenbankmodelle, der SQL- und der NoSQL-Datenbanken. Ersteres ist ein beliebtes relationales Datenbank-Managementsystem (RDBMS), das von der Oracle Corporation, einem US-amerikanischen Softwareunternehmen, entwickelt, vertrieben und unterstützt wird. MongoDB hingegen ist ein neueres Datenbankmanagementsystem, eine nicht-relationale Datenbank, die von MongoDBInc. entwickelt wurde.

Es bietet eine umfangreiche Abfragesprache, hochfunktionale Sekundärindizes (einschließlich Textsuche und Geodaten), ein leistungsfähiges Aggregationsframework für Datenanalyse, Facettensuche, Diagrammverarbeitung und mehr. Es hat eine eigene Abfrageschnittstelle und verwendet ein JSON-Format, das einfach zu erlernen ist. Viele Konzepte der beiden Datenbanken haben ähnliche Eigenschaften. Beide verfügen darüber hinaus über eine umfangreiche Suchfunktion.

Der größte Unterschied aber ist, dass erstere eine relationale, SQL-basierte Datenbank ist und letztere ein NoSQL-System ist, das über eine JSON-basierte Kommunikation zum Lesen und Speichern von Daten verfügt. Obwohl viele relationale Datenbanken aber mittlerweile die Unterstützung für JSON hinzugefügt haben, bringt doch das einfache Hinzufügen eines JSON-Datentyps nicht unbedingt die Produktivitätsvorteile einer Dokumenten-Datenbank auf Basis von NoSQL.

Denn diese basiert auf einer verteilten Systemarchitektur und nicht auf einem monolithischen Single Node Design.

Was bedeuten SQL und NoSQL?

Die Datenbanksprache SQL ist keine vollwertige Programmiersprache. SQL steht für „Structured Query Language“ und beschreibt eine Sprache zur Kommunikation mit relationalen Datenbanken. SQL-Befehle machen das Suchen, Einfügen, Ändern oder Löschen relativ einfach.

SQL kann problemlos mit anderen Programmiersprachen kombiniert oder in Programme eingebettet werden. Im Rahmen der Abfrage ermöglicht es die Ausgabe des Ergebnisses in Tabellenform und die Wiederverwendung oder Bearbeitung der Daten als neue Tabelle. Beim Apache-Webserver zum Beispiel werden in PHP-Skripte auf dem Webserver gespeichert, die der Benutzer dann mit seinem Browser aufruft. Der Webserver erzeugt so eine HTML-Seite aus den PHP-Befehlen und dem Inhalt aus der SQL-Datenbank.

Es gibt keine umfassende positive Definition des Begriffs NoSQL, sondern nur negative, die einen Unterschied zu SQL-Datenbanken machen. Der Begriff, im Sinne von „no“, wurde erstmals für eine 1998 erschienene einfache Open-Source-Datenbank verwendet, die keine SQL-Zugriffsmöglichkeit bereitstellte.

Während relationale Datenbanken Tabellen mit Spalten und Zeilen zur Datenspeicherung verwenden, verwenden verfügbare NoSQL-Datenbanken Wertepaare, Objekte, Dokumente oder Listen und Zeilen zur Datenorganisation. Einfache Schlüsselwertspeicher stellen daher einen einfachen Datenbanktyp dar. Dies kann eine Zeichenkette, ein Text oder eine Liste sein, und ein Array kann wiederum verschachtelte Datentypen enthalten.

Die heute weit verbreiteten NoSQL- und „Not-only-SQL-Datenbanken“ sollen Probleme lösen, für die relationale Systeme ungeeignet erscheinen oder bei denen sie einfach scheitern. NoSQL-Datenbanken behandeln dabei Probleme, für die relationale Datenbanken nicht geeignet sind, besonders bei Themen wie Big Data und Cloud Computing.

Es hat dabei jedoch jede NoSQL-Datenbank spezifische Funktionen, die einem ganz bestimmten Zweck dienen. Einige NoSQL-Systeme sind vollständig auf nicht-relationale Funktionen angewiesen, während andere nur auf bestimmte Elemente wie feste Tabellenschemata verzichten. Dennoch geht es nicht um den Ersatz relationaler Datenbanken, sondern um deren Ergänzung.

MySQL

Im Internet ist es eines der am häufigsten verwendeten Datenbanksysteme. Das beliebte Open-Source-Tool LAMP (sowie XAMPP und MAMP) bietet eine Web-Entwicklungsplattform, die Linux als Betriebssystem, Apache als Webserver, MySQL als Datenbankmanagementsystem und PHP als Programmiersprache verwendet. Die Entwicklung des Datenbanksystems begann 1994 durch das schwedische Unternehmen MySQLAB und ab 1998 durch Sun Microsystems unter der Leitung von Michael Widenius, dem ehemaligen Gründer, und David Axmark. Der Quellcode ist in C und C++ geschrieben.

Es ist eines der weltweit beliebtesten relationalen Datenbank-Managementsysteme und trug dadurch zur Verbreitung von PHP bei. Das ursprünglich als Freeware veröffentlichte System ist frei verfügbar und ideal für die Speicherung und den Zugriff auf Daten.

In vielen Content-Management-Systemen bildet es die Grundlage zur Speicherung der Daten und ist als Open-Source-Software und als kommerzielle Version erhältlich. Dazu ist es mit vielen verschiedenen Betriebssystemen kompatibel.

MongoDB

Es ist eine leistungsstarke, dokumentenorientierte NoSQL-Datenbank, die ebenfalls in der Programmiersprache C++ entwickelt wurde. Die erste Veröffentlichung erfolgte im Februar 2009. Es ist die am häufigsten verwendete NoSQL-Datenbank (Stand Februar 2019). Für Entwickler von Webanwendungen kann die nicht-relationale Datenbank eine interessante Lösung sein.

Unternehmen jeder Größe nutzen es, weil sie Anwendungen schneller generieren, sehr unterschiedliche Datentypen verarbeiten und Anwendungen in großem Umfang effizienter verwalten. Es basiert auf dem JSON-Format und beruht auf einem geordneten Satz von Schlüssel/Wertpaaren, wobei auch Arrays oder Dokumente unter einem Schlüssel gespeichert werden. Der Name leitet sich von engl. „humongous“ ab, was gigantisch, wahnsinnig groß bedeutet. Da es dokumentenorientiert ist, kann es Sammlungen von JSON-ähnlichen Dokumenten verwalten.

Ein Prozess kann mehrere Datenbanken verwalten, und eine Datenbank mehrere Sammlungen enthalten. Die DB und die Sammlung bilden einen Namensraum, der durch einen Punkt getrennt ist. Wie andere NoSQL-Datenbanken unterstützt die NoSQL-Datenbank auch ein dynamisches Schema-Design, so dass Dokumente in einer Sammlung unterschiedliche Felder und Strukturen aufweisen können.

Für die Dokumentenablage und den Datenaustausch verwendet die Datenbank das so genannte BSON-Format, das eine binäre Darstellung von JSON-ähnlichen Dokumenten ermöglicht. Im Allgemeinen eignet es sich am besten für Anwendungen mit vielen sehr unstrukturierten Daten.

Zusammenfassung Vor- und Nachteile

Vorteile MySQL

  • Es ist die populärste Open-Source-Datenbank der Welt und der Standard für Online-Datenbanken.
  • Es ist Teil des vorkonfigurierten Apache-Servers und verfügbar für nahezu alle Plattformen und Systeme.
  • Es ist die ideale eingebettete Datenbank für PHP-Entwickler und Softwarehersteller, um leseintensive Anwendungen zu entwickeln.
  • SQL ermöglicht auf natürliche Weise die Suche.

Vorteile MongoDB

  • Es ist besonders geeignet für unstrukturierte Daten, für Big Data, Data-Mining und Cloud-Anwendungen.
  • Es ist besser und flexibler für unbekannte Datenstrukturen, besonders wenn die Menge und Art der Daten nicht vorhergesagt werden kann.
  • Änderungen an der Datenstruktur können leichter vorgenommen werden.
  • NoSQL-Datenbanken können große, unterschiedliche Dimensionen wie Raum, Zeit und Ort effektiv speichern.

Fazit

Für die klassischen Anwendungen in der Webentwicklung mit überschaubaren Daten und Datenstrukturen ist MySQL die bessere Lösung. Es ist in den gängigen Web-Konfigurationen und Servern vorinstalliert und direkt nutzbar. Dazu gibt es eine große Community. Für Anwendungen im Rahmen von Big Data und Machine Learning, vor allem wenn Daten unterschiedlicher Herkunft und Quellen zusammengeführt werden müssen, ist MongoDB besser geeignet. Dazu ist es flexibler und universeller einsetzbar.

Interessante Links:
Die unterschiedlichen Datenbanksysteme werden auf Computerwoche beschrieben
MongoDB und MySQL werden im Tabellenformat verglichen

Bilder: Canva


Der Autor: Sascha Thattil arbeitet bei YUHIRO und hilft Unternehmern und Unternehmen beim einfachen Aufbau von Programmier-Teams in Indien. YUHIRO ist ein deutsch-indisches Unternehmen welches IT Firmen, Agenturen und IT Abteilungen Softwareentwickler bereitstellt.

1 Kommentar
  1. Sehr schön geschrieben und aufschlussreicher Blog um schnell einen Überblick zu erhalten über MongoDB

Schreibe einen Kommentar