Ist MariaDB das bessere MySQL?
Seit 2009 gibt es die von MySQL abgespaltete Datenbank MariaDB. Ursprünglich noch etwas unter dem Radar wird die Datenbank-Engine stetig beliebter. Heute setzen viele Linux-Distributionen MariaDB als Standard-Datenbank ein. In diesem Artikel beschäftigen wir uns daher damit, weshalb dem so ist und wieso MariaDB die bessere Alternative zu MySQL ist.
Wer bereits auf MariaDB setzt
Bevor wir uns mit den Argumenten beschäftigen, weshalb MariaDB das bessere MySQL ist, betrachten wir, wie weit die MySQL-Abspaltung in der Praxis eingesetzt wird.
Seit einigen Jahren setzen alle bekannten Linux-Distributionen (ab Debian 9.0, Fedora 19, RHEL 7, usw.) MariaDB als Standard-Datenbank ein. Das bedeutet, dass sich MariaDB in vielen Fällen, insbesondere bei neueren Webserver-Installation, bereits im Einsatz befindet.
Auch in namhaften Organisationen wie Google oder der Wikimedia Foundation hat MariaDB mittlerweile MySQL abgelöst.
Entwicklung von MariaDB in den Jahren 2009 bis heute
Weshalb sich der Umstieg auf MariaDB lohnt
Die unabhängige Entwicklung von MariaDB führte dazu, dass MariaDB mittlerweile in vielen Punkten überlegen und damit zu einer bemerkenswerten Alternative geworden ist. Im Folgenden gehen wir auf die Argumente ein, die für MariaDB als Alternative sprechen:
- Geschwindigkeitsverbesserungen
- Erweiterungen und neue Features
- Bessere Tests und weniger Warnungen und Bugs
- Mehr Storage-Engines
- Vollständig Open Source
Geschwindigkeitsverbesserungen
In vielen Anwendungsszenarien bringt MariaDB beträchtliche Geschwindigkeitsverbesserungen gegenüber MySQL. Bei Systemen mit vielen Nutzeraccounts und Datenbanken ist die Berechtigungsprüfung deutlich schneller. Replikation ist zum Teil deutlich schneller und außerdem wurde die Geschwindigkeit der Storage-Engines (den zentralen Kernelementen der Datenbank) deutlich verbessert.
Erweiterungen und neue Features
Viele neue Features wurden in verschiedenen Versionen von MariaDB hinzugefügt (für eine vollständige Liste siehe einzelne Release-Notes). Hervorzuheben sind u.a. versionierte Tabellen, die Möglichkeit die Gültigkeitsdauer von Passwörtern zu beschränken, verbesserte Informationen über Query-Optimierungen (Optimizer Trace), Engine-unabhängige Tabellenstatistiken, differenziertere Verschlüsselungsfunktionen, GIS-Unterstützung und schnellere Sub-Queries.
Bessere Tests und weniger Warnungen und Bugs
Im Vergleich zu MySQL hat MariaDB eine größere Testsuite. Die Entwickler geben außerdem an, viele Bugs eliminiert zu haben, die in MySQL noch existieren. Zudem wurde der Code aufgeräumt und verbessert, so dass nun deutlich weniger Compiler-Warnungen erzeugt werden.
Mehr Storage-Engines
MariaDB unterstützt im Vergleich zu MySQL eine deutlich größere Zahl von modernen Storage-Engines. So z.B. MyRocks (optimiert auf Schnelligkeit, geringe Latenz und deutlich bessere Kompression im Vergleich zu InnoDB), Aria (schnellere komplexe Queries, interne temporäre Tabellen), TokuDB oder ColumnStore.
Vollständig Open Source
Sämtlicher MariaDB Code ist unter den freien Lizenzen GPL, LGPL oder BSD veröffentlicht und beinhaltet keine Closed-Source-Module. Ein großer Vorteil ist, dass die MariaDB Client-Bibliotheken unter der LGPL veröffentlicht sind, so dass sie (im Gegensatz zu den unter GPL stehenden MySQL Client-Bibliotheken) auch in kommerzieller Software verwendet werden können.
Außerdem stellt MariaDB sämtliche Bugs und Roadmaps der Öffentlichkeit zur Verfügung und reklamiert für sich, die Entwicklung der Datenbanklösung im Gegensatz zu MySQL im wahren Open-Source-Geist weiterzuführen. Oracle arbeitet nicht öffentlich und veröffentlicht z.B. auch Meldungen zu sicherheitskritischen Fehlern ohne Details, so dass diese nur schwierig einzuschätzen sind. MariaDB ist hier deutlich offener. So können wir schneller und gezielter auf Sicherheitsrisiken reagieren.
Zwischenfazit - Hohe Kompatibilität zu MySQL
Da MariaDB aus MySQL hervorgegangen ist (sogenannter Fork), basieren beide Datenbank-Engines auf dem selben grundlegenden Quellcode. Obwohl MariaDB unabhängig weiterentwickelt wurde, kann es in den meisten Fällen direkt anstelle von MySQL verwendet werden. Dies ist insbesondere bis zur MySQL-Version 8 der Fall. Alle wichtigen Schnittstellen und Daten sind binärequivalent. Außerdem sind APIs, Dateinamen, Pfade, Ports, Sockets, etc. identisch. Das bedeutet, dass die Schnittstellen aller Benutzerprogramme weiterhin ohne Änderungen funktionieren.
Daher ist es der Regel nicht notwendig, existierenden Code beim Umstieg auf MariaDB anzupassen. Standard-Software lässt sich unserer Erfahrung nach ohne Probleme sowohl unter MySQL als auch unter MariaDB nutzen. Wir empfehlen Ihnen jedoch, falls Sie selbst entwickelte Software mit komplexen Datenbank-Abfragen verwenden, sich mit den kleineren Unterschieden vorab vertraut zu machen. Einzelne Inkompatibilitäten können je nach Einsatz auftreten. Bekannte Inkompatibilitäten sind auf der offiziellen Webseite von MariaDB gut dokumentiert.
Fazit
Die Tatsache, dass fast das ganze ursprüngliche MySQL-Entwicklerteam mittlerweile an der Entwicklung von MariaDB arbeitet und das Datenbanksystem im ursprünglichen Open-Source-Entwicklungsmodell weiterentwickelt, zeigt uns, dass in MariaDB die Zukunft liegt. Benchmarks zeigen, dass MariaDB schon heute oft schneller als MySQL ist. Außerdem bietet das Datenbanksystem mittlerweile viele neue Features im Vergleich zu MySQL.
Da sich die Datenbanksysteme MySQL und MariaDB zunehmend auseinander entwickeln werden, was eine Migration in Zukunft erschweren wird, empfehlen wir unseren Kunden eine zeitnahe Umstellung auf MariaDB. Bis einschließlich der MySQL-Version 5.7 geht das in der überwiegenden Zahl von Fällen vollkommen problemlos vonstatten, was durch interne Tests bei uns auch bestätigt wurde. Vereinzelt können zwar kleinere Inkompatibilitäten auftreten, diese sind jedoch in der Regel gut dokumentiert und treten meist nur in Nicht-Standard-Setups auf. Nur in seltenen Ausnahmefällen muss clientseitiger Code modifiziert werden.
Wenn Sie als Kunde an einer Umstellung interessiert sind, kontaktieren Sie uns. Wir beraten Sie gerne und besprechen mit Ihnen eine Migrationsstrategie.
Wie sich MariaDB entwickelte
Wie bereits erwähnt ist MariaDB ein Fork der Open-Source Datenbank MySQL von 2009. Initiiert wurde die Abspaltung vom ehemaligen Hauptautor von MySQL, Michael Widenius. Grund dafür war das Vorhaben, die Datenbank als Community-Projekt weiterentwickeln zu können, da MySQL im Vorjahr an Sun Microsystems (später Oracle) verkauft wurde. Der Fokus von MariaDB sollte dabei auf einem offenen Quellcode und einer öffentliche Dokumentation der Entwicklungsschritte liegen. Organisatorisch wurde dies zunächst durch die Gründung der MariaDB-Foundation und anschließend der Fusion der Firmen Monty Program AB und SkySQL zur MariaDB Corporation unterstützt.
Es bestand Grund zur Sorge, dass Oracle die Entwicklung von MySQL aus eigenen Geschäftsinteressen heraus langfristig vernachlässigen würde. Oracle vertreibt nämlich eigene kommerzielle Datenbanklösungen, die teilweise in direkter Konkurrenz zu MySQL stehen. Man fürchtete demnach, dass neue Patches nicht mehr rechtzeitig eingespielt werden würden. Des Weiteren vermutete man, dass Oracle langfristig keine kostengünstigen kommerziellen Lizenzen mehr zur Verfügung stellen oder die Open-Source-Entwicklung von MySQL komplett einstellen würde.
Nachdem die Europäische Kommission die Übernahme schließlich trotz dieser Bedenken genehmigte, setzte Michael Widenius die Entwicklung von MariaDB schließlich zusammen mit einem Team von ehemaligen MySQL-Entwicklern fort.
Die ursprünglichen Bedenken bestätigten sich schließlich: Viele neue MySQL-Funktionen sind nur noch in der kommerziellen Version der Software zu finden, Regressionstests werden teils nicht mehr veröffentlicht. Der Bugtracker wird zunehmend vernachlässigt und ist in Teilen auch nicht mehr öffentlich. Zudem stiegen die Lizenz- und Support-Kosten. Aufgrund des Fehlens einer offenen Roadmap und der Abwanderung vieler ehemaliger Entwickler zu MariaDB wird die Entwicklung von MySQL zunehmend behindert.