Schon einige male kam es auf dem DevStorage-Discord zu Diskussionen zum Thema der richtigen Datenbanksysteme. Das es aber auf diese Frage wohl keine richtige Antwort geben kann und auch in Zukunft nicht geben wird, muss man sich nun genau anschauen was die Pro- und Contraseiten der Datenbanksysteme sind und auch mit welcher Programmiersprache sich damit am besten interagieren lässt.
Wikipedia hat eine Liste mit rund 450 Programmiersprache, das Internet spricht generell von über 1.000 Sprachen; daher einen Vergleich von jeder Datenbank, mit jeder Sprache zu machen wird daher nicht möglich sein. Aber dies braucht es vielleicht auch gar nicht, denn neben der Programmiersprache ist ein großer Faktor zudem, welchen Anwendungsfall man abdecken möchte.
Popularität der DB-Engines
Laut DB-Enginges.com, einer Rangliste mit einer Liste der Popularität von Datenbankmanagementsystemen, sind Datenbanksysteme mit rationalem Datenbankmodell am weitverbreitetsten und meistgenutzten. Wobei Systeme wie Microsoft SQL Server oder IBM DBv2 und Elasticsearch wohl eher ihren Anwendungsbereich in Enterprise-Umgebungen finden werden.
| Rang Jun 2022 | Mai 2022 | Jun 2021 | DBMS Jun 2022 | Datenbankmodell Mai 2022 | Punkte Jun 2021 |
| 1. | 1. | 1. | Oracle | Relational, Multi-Model | 1287,74 |
|---|---|---|---|---|---|
| 2. | 2. | 2. | MySQL | Relational, Multi-Model | 1189,21 |
| 3. | 3. | 3. | Microsoft SQL Server | Relational, Multi-Model | 933,83 |
| 4. | 4. | 4. | PostgreSQL | Relational, Multi-Model | 620,84 |
| 5. | 5. | 5. | MongoDB | Document, Multi-Model | 480,73 |
| 6. | 6. | Redis | Key-value, Multi-Model | 175,31 | |
| 7. | 7. | IBM Db2 | Relational, Multi-Model | 159,19 | |
| 8. | 8. | 8. | Elasticsearch | Suchmaschine, Multi-Model | 156,00 |
| 9. | 9. | Microsoft Access | Relational | 141,82 | |
| 10. | 10. | SQLite | Relational | 135,44 | |
| 11. | 11. | 11. | Cassandra | Wide column | 115,45 |
| 12. | 12. | 12. | MariaDB | Relational, Multi-Model | 111,58 |
Es ist kein Geheimnis, dass MySQL die beliebteste Datenbank ist, wobei PostgreSQL knapp dahinter liegt. Aber was macht MySQL so beliebt?
Ein Faktor ist seine Einfachheit. MySQL ist sehr einfach zu benutzen und zu erlernen, besonders wenn man bereits Erfahrung mit SQL hat. Außerdem bietet es hervorragende Unterstützung für große Datenmengen und eine große Anzahl gleichzeitiger Benutzer, was für viele Projekte entscheidend sein kann.
Der größte Nachteil von MySQL ist, dass es keine ACID-Konformität unterstützt. Das bedeutet, dass Transaktionen nicht atomar, konsistent, isoliert oder dauerhaft (ACID) sind. Wenn man die ACID-Konformität der Datenbank garantieren will, sollten man sich nach einer anderen Datenbank umsehen.
Sucht man auf Stackoverflow nach den Datenbanksystemen, liegt MySQL mit 648.452 Ergebnissen an der Spitze der Suchergebnisse. MongoDB liegt mit 162.749 Ergebnissen an zweiter Stelle und PostgreSQL mit 155.068 Ergebnissen an dritter Stelle.
Einen ausführlichen Beitrag zu den prozentualen Nutzungsanteilen hat Scalegrid 2019 in einem ausführlichen Beitrag grafisch aufgearbeitet: https://scalegrid.io/blog/2019-database-trends-sql-vs-nosql-top-databases-single-vs-multiple-database-use/
Die Datenbanksysteme im Vergleich
Wenn wir uns also nun die Top-3 unserer herausgepickten Datenbanksysteme anschauen, also MySQL, MongoDB und PostgresSQL, sind zwei der drei Systeme SQL-basierend. Schauen wir uns daher nun zuerst die SQL-Systeme MySQL und PostgresSQL genauer an.
MySQL vs. PostgreSQL: Welche Lösung ist besser?
Die Wahrheit ist, dass es davon abhängt, was man zu tun versucht. Die meisten Entwickler werden sagen, dass MySQL besser für Websites und Online-Transaktionen besser geeignet ist, während PostgreSQL besser für große und komplizierte analytische Prozesse geeignet ist. Sie werden auch darauf hinweisen, dass PostgreSQL “eine Reihe großartiger Funktionen” bietet – wie Erweiterbarkeit und native NoSQL-Fähigkeiten, die dabei helfen, mit schwierigen Datenbankbedingungen umzugehen. Schließlich wird darauf hingewiesen, dass MySQL nur wenige Funktionen bietet, um sich auf “Geschwindigkeit und Zuverlässigkeit” zu konzentrieren.
Im Großen und Ganzen sind diese Ansichten richtig. Obwohl sich die Angebote von MySQL und PostgreSQL mit jedem neuen Release weiter annähern (siehe Tabelle), bedeuten die unterschiedlichen Eigenschaften dieser Datenbanksysteme, dass für bestimmte Anwendungsfälle das eine besser sein kann als das andere.
| Funktionen | PostgreSQL 10 | MySQL 8 |
| Common Table Expression (CTE) | Ja | Ja (Neu hinzugefügt) |
| Declarative Partitioning | Ja (Neu hinzugefügt) | Ja |
| Full-text Search | Ja | Ja |
| Geographic Information System (GIS) / Spatial Reference System (SRS) | Ja | Ja (Verbessert) |
| JSON | Ja | Ja (Verbessert) |
| Logical Replication | Ja (Neu hinzugefügt) | Ja |
| Semi-Synchronous Replication | Ja (Neu hinzugefügt) | Ja |
| Window Functions | Ja | Ja (Neu hinzugefügt) |
MySQL im Überblick
MySQL ist die beliebteste Datenbank der Welt und wird 2019 von 39% der Entwickler verwendet. Es handelt sich um ein schnelles, zuverlässiges, universelles relationales Datenbankmanagementsystem, das jedoch nicht über die umfangreichen Funktionen von PostgreSQL verfügt. Das bedeutet jedoch nicht, dass es sich nicht hervorragend für eine Vielzahl von Anwendungen eignet – insbesondere für Webanwendungen.
Tatsächlich ist MySQL die erste Wahl für skalierbare Webanwendungen, auch weil es standardmäßig im LAMP-Stack enthalten ist (eine Open-Source-Suite von Webanwendungen, die aus Linux, Apache HTTP Server, MySQL und PHP besteht). Darüber hinaus stützen sich beliebte Content-Management-Systeme wie Drupal und WordPress auf MySQL, so dass man MySQL praktisch überall im Web findet.
Der MySQL-Server arbeitet in einem Client/Server-Modell oder in eingebetteten Systemen. Er besteht aus einem Multi-Threaded-SQL-Server, der verschiedene Backends, verschiedene Client-Programme und -Bibliotheken, Verwaltungswerkzeuge und eine breite Palette von Anwendungsprogrammierschnittstellen (APIs) unterstützt.
MySQL lässt sich zusammengefasst also wie folgt beschreiben:
MySQL ist ein kostenloses, stabiles Datenbankmanagementsystem, das man in Produktionsanwendungen einsetzen kann. Es ist ein Leichtgewichtig im Vergleich und kann sowohl auf Servern, die große mehrschichtige Anwendungen hosten, als auch auf Desktop-Computern von Entwicklern installiert und verwendet werden. Es ist für mehrere Plattformen verfügbar: Windows, Linux und Mac.
PostgreSQL im Überblick
PostgreSQL ist mehr als ein Datenbankmanagementsystem. Es bringt eine starke Grundbasis an Funktionen und Fähigkeiten, um hochvolumige Datenoperationen mit Leichtigkeit zu verarbeiten.
PostgreSQL gibt es bereits seit 1986. Es ist ein objektrelationales Datenbankmanagementsystem (ORDBMS). Außerdem bietet es ACID-Unterstützung (Atomicity, Consistency, Isolation, Durability). Das macht es so zuverlässig und schnell bei der Ausführung komplizierter, umfangreicher Datenoperationen.
Ein weiterer Grund, warum PostgreSQL so beliebt ist, ist seine Erweiterbarkeit – es können eigene Datentypen oder Indextypen definieren oder sogar funktionale Sprachen wie Python oder PL/pgSQL hinzugefügt werden, wenn man diese nutzen will.
PostgreSQL lässt sich zusammengefasst also wie folgt beschreiben:
PostgreSQL ist ein leistungsfähiges, quelloffenes relationales Datenbankmanagementsystem, das viele der gleichen fortschrittlichen Funktionen wie kommerzielle Alternativen bietet, ohne dass die Kosten dafür anfallen. Es wird von einer Community von Entwicklern verwaltet und weiterentwickelt.
MongoDB im Überblick
MongoDB ist eine Datenbank, die auf einem nicht-relationalen Dokumentenmodell basiert. Damit unterscheidet sie sich als sogenannte NoSQL-Datenbank (NoSQL = Not-only-SQL) grundlegend von herkömmlichen relationalen Datenbanken wie Oracle, MySQL, MariaDB, PostgreSQL oder dem Microsoft SQL Server.
Der Name MongoDB leitet sich vom englischen Wort “humongous” ab, was in etwa “gigantisch” bedeutet. MongoDB wurde 2009 von dem Gründer und Entwickler Eliot Horowitz veröffentlicht, der im Jahr 2020 als Chief Technology Officer (Technischer Leiter in einer Organisation) und aus dem Vorstand von MongoDB Inc. zurücktrat, aber immer noch als technischer Berater tätig ist.
MongoDB ist eine skalierbare Datenbank, die auf Leistung, Skalierbarkeit und Verfügbarkeit ausgelegt ist, d. h. sie kann problemlos große Datenmengen verarbeiten. Darüber hinaus bietet sie eine hohe Verfügbarkeit, da sie Daten auf mehreren Servern gleichzeitig speichern kann, und ermöglicht es Entwicklern, Daten zu ändern, ohne dabei Einschränkungen oder Begrenzungen zu unterliegen.
MongoDB bietet auch offizielle Treiberunterstützung für alle gängigen Sprachen wie C, C++, C# und .Net, Go, Java, Node.js, Perl, PHP, Python, Motor, Ruby, Scala und Swift. So können damit Anwendungen in den gängigsten Sprachen entwickelt werden. Heutzutage gibt es viele Unternehmen die MongoDB verwenden, wie zum Beispiel: Facebook, Nokia, eBay, Adobe, Google uvm.
MongoDB ist ein NoSQL-Datenbankserver. Das bedeutet, dass die Daten in Collections und Dokumenten gespeichert werden und dass vor der Arbeit mit MongoDB keine Schemata erstellt werden müssen.
MongoDB unterstützt auch heterogene Daten, d. h. es können verschiedene Datentypen in demselben Dokument oder Objekt gespeichert werden.
MongoDB ist nicht nur schnell, skalierbar und zuverlässig, sondern verwendet auch BSON-Dokumente (Binary JSON), um Daten als Objekte zu speichern und nicht als Zeilen oder Spalten wie herkömmliche relationale Datenbanken. Das macht die Arbeit mit verschiedenen Datentypen und Datenmengen deutlich einfacher und flexibler.
Geschwindigkeit
MySQL vs PostgreSQL
Die Geschwindigkeit ist ein Maßstab, der sich danach richtet, wie und welche Datenbank genutzt wird. PostgreSQL ist schneller, wenn es um große Datenmengen, komplizierte Abfragen und Lese- und Schreiboperationen geht. Andererseits ist MySQL dafür bekannt, dass es bei reinen Lesebefehlen schneller ist.
Der Grund warum sich Performance-Vergleiche oft stark von Umgebung zu Umgebung unterscheiden ist, dass es stark auf die Hardware ankommt, auf welcher die Tests durchgeführt werden.
Nur selten werden MySQL Installationen auf großen Servern installiert. Oft sind es im Produktionsumfeld Server mit wenigen Prozessor-Kernen und nicht allzu viel Ram (Arbeitsspeicher). Es ist daher nicht jeder Test, auf jedem System gleich, weshalb es durchaus Sinn machen kann, wenn man die Tests selbst auf den eigenen Systemen versucht.
Der Softwarehersteller Percona hat 2017 einen umfangreichen Test im Bereich MySQL vs. PostgreSQL erstellt und die Datenbanksysteme mit verschiedenen An- & Abfragen gegeneinander aufgestellt.
SELECT Abfragen

Reines PostgreSQL kann ab 100 Clients kaum noch mithalten und sinkt sogar in den SELECT-Abfragen pro Sekunden und pendelt sich dann etwas bei 1,3 Millionen QPS (Queries per second) ein. Wohingegen MySQL erst ab 150 Clients sich auf 1,7 Millionen QPS einpendelt.
Wir sehen aber noch die grüne Linie, dass ist PostgreSQL mit PGXACT. PGXACT ist ein Implementierung in der Datenbankengine um weniger Schleifen für die Änderung des LWLock-Status zu erzeugen. Damit schafft die Datenbankengine mehr Abfragen zu handeln.
PGXACT ist jedoch kein Zaubermittel und bringt tatsächlich nur Vorteile auf starken Serversystemen!
Read-Only Abfragen

Schauen wir uns nun reines Read-Only an, merken wir das PostgreSQL etwas mehr Anfragen pro Sekunden, auf eine bestimmte Anzahl an Clients schafft. Wobei sich sowohl beide MySQL-Forks und PostgreSQL ab 150 Clients kaum noch stärker wachsen.
Read-Write Abfragen

Man sieht, dass die Ergebnisse sehr ähnlich sind: Beide Datenbanken entwickeln sich sehr schnell und arbeiten gut mit moderner Hardware.
PostgreSQL schafft asynchron, wie erwartet, deutlich mehr Operationen pro Sekunde, bei steigender Clients-Anzahl.
MySQL vs MongoDB
MongoDB eignet sich hervorragend für die Verarbeitung großer Mengen unstrukturierter Daten. Einer der Gründe dafür ist, dass MongoDB standardmäßig eine hohe Einfügerate gegenüber der Transaktionssicherheit aufweist. Das heißt, wenn man eine große Datenmenge auf einmal speichern will, kann man dies in MongoDB sicher tun, nicht aber in MySQL.
Schauen wir uns einige Beispiele an:
Wenn wir 1 Million Dokumente in unserer Datenbank in MySQL speichern wollten, müssten wir dies einzeln tun. In MongoDB können wir dank der Funktion von insertMany() sicher mehrere Einfügungen auf einmal vornehmen.
Die folgenden Diagramme beziehen sich daher nun auf das Einfügen, Abfragen und Ändern von einer Millionen Daten. Die Zeitangabe sind Sekunden.


MongoDB ist wesentlich schneller als MySQL, wenn es um Schreibvorgänge geht. Das liegt daran, dass MongoDB eine dokumentenorientierte Datenbank verwendet, was bedeutet, dass alle Daten in einem Dokument und nicht in einzelnen Tabellen gespeichert werden. Daher gibt es bei Schreibvorgängen keine Nachschlageprobleme – MongoDB kann einfach alle Informationen in einem einzigen Vorgang aktualisieren.
MongoDB ist hauptsächlich so strukturiert, dass Dokumente die Grundlage für die Speicherung sind, was große Abfragen und Datenspeicher fördert. Dies bedeutet, dass die Leistung von zwei Schlüsselwerten abhängt, nämlich dem Design und der Skalierung. Auf der anderen Seite werden bei MySQL die Daten in einer einzelnen Tabelle gespeichert, so dass man irgendwann die gesamte Tabelle durchsuchen muss, bevor man einen Schreibvorgang durchführt.
Zusammenfassung und Abschluss
Es gibt nicht die eine richtige Datenbank, die man verwenden sollte. Es hängt hauptsächlich davon ab, was man vorhat. Für ein Anmeldesystem mit einer einzigen Abfrage macht es absolut keinen Unterschied in der Leistung, ob man MySQL, PostgreSQL oder MongoDB verwendet. Der Geschwindigkeitsunterschied macht sich realistischerweise erst ab hunderttausend Abfragen pro Sekunde bemerkbar.
Nach dem Punkt der Geschwindigkeit kann man die gewählte Datenbank noch davon abhängig machen, wie viele Datenbankinhalte man hat und ob und welches Schema man nutzen möchte.
Letztendlich muss man abwägen, wie viel Zeit und Mühe man für die eigene Datenbank aufwenden wollen. MongoDB ist aufgrund der Schemafreiheit definitiv einfacher zu handhaben, während Sie bei MySQL separate Abfragen senden müssen, um neue Tabellen zu erstellen. Zudem man bei MySQL auf die vorhanden Datentypen zurückgreifen muss, was man mit PostgreSQL umgehen kann oder in MongoDB durch Substrukturen lösen kann.
Persönlich bin ich seit rund 5 Jahren ein Freund von MongoDB und wir nutzen auch bei uns in der Firma MongoDB und Redis für Datenspeicherungen. Ein großer Grund ist dafür ebenfalls, dass MongoDB durch BSON-Ausgabe einfach in unseren genutzten Programmiersprachen ohne große Umschreibungen direkt als JSON weiter verarbeitet werden kann.
Quellen
- https://de.wikipedia.org/wiki/Liste_von_Programmiersprachen
- https://db-engines.com/de/ranking
- https://de.wikipedia.org/wiki/PostgreSQL
- https://hevodata.com/learn/postgresql-vs-mysql/#f2
- [1] https://www.percona.com/blog/2017/01/06/millions-queries-per-second-postgresql-and-mysql-peaceful-battle-at-modern-demanding-workloads/
- [2] https://severalnines.com/database-blog/mongodb-vs-mysql-nosql-why-mongo-better