Definition

MySQL ist ein im Internet weit verbreitetes relationales Datenbanksystem, das auf SQL (Abk.: Structured Query Language; dt.: strukturierte Abfragesprache) beruht. Es ist ist heutzutage eines der am weitesten verbreiteten relationalen Datenbankmanagementsysteme (RDBMS) für Internetanwendungen wie Websites.

Viele CMS wie zum Beispiel TYPO3 verwenden MySQL als Datenbanksystem. Die großen Vorteile des Datenbanksystems bestehen in der Möglichkeit, große Datenmengen schnell verarbeiten zu können.

mysql-logo-erklaerung

MySQL-Logo. Quelle: Wikipedia.

Entstehung

Seit 1994 wurde MySQL von MySQL AB entwickelt, welches im Februar 2008 vom Unternehmen Sun Microsystems übernommen wurde. Heute befindet sich MySQL sowie Sun Microsystems im Besitz von Oracle, welche stets an der Verbesserung des RDBMS arbeitet. Der MySQL Source Code ist frei verfügbar, da es ursprünglich als Freeware entwickelt wurde. Die Open Source Software ist in C und C++ geschrieben und mit den meisten Betriebsystemen kompatibel.

Funktionsweise

Grundsätzlich besteht die Idee von MySQL aus einem MySQL-Server und den MySQL-Clients. Der MySQL-Server stellt das Datenbankmanagementsystem dar, über welches die in Datenbanken gespeicherten Daten abgerufen und verteilt werden. Diese Daten können dann von einem oder mehreren MySQL-Clients angefragt werden. Auf dem MySQL-Server können mehrere Datenbanken erstellt werden, in welchen die Daten in zweidimensionalen Tabellen (Relationen) gespeichert werden. Jede Tabelle kann Spalten enthalten, in welchen die Daten einen festgelegten Datentyp besitzen (z.B. Integer (ganze Zahlen)).Diese Datentypen können aus numerischen Typen bestehen, aus Zeichenketten (char, text) oder aus Typen für Datum und Uhrzeit (date, time).

Bei den Daten der Tabellen spielt Groß- und Kleinschreibung keine Rolle. Die Zeilen einer Relation werden Tupel genannt und stellen eine konkrete Kombination von Spaltenwerten (Attributwerten) dar. Alle Tupel können spezifisch über eine Datenbank-Engine abgefragt werden. Zur Definition der Datenstrukturen in den MySQL- Datenbanken sowie zum Bearbeiten (Einfügen, Verändern, Löschen) und Abfragen der Datenbestände wird die Datenbanksprache SQL verwendet. Grundsätzlich eignet sich das MySQL zur Nutzung einer sehr großen Zahl an unterschiedlichen Datenbanken, an die von mehreren Clients gleichzeitig Anfragen gesendet werden.

MySQL-Datenbanken können sowohl öffentlich über das Web zugänglich gemacht als auch intern in einem Intranet genutzt werden. Der abfragende Client kann dabei ein schlichtes Kommandozeilenprogramm, komplexe Software oder eine Web-Anwendung sein. Der Zugriff auf MySQL-Datenbanken lässt sich wie bei allen Datenbanksystemen anhand von vergebenen Rechten steuern. So ist es zum Beispiel möglich, dass ein Browser nur auf bestimmte Datenbanken zugreifen darf, Änderungen aber nur von Administratoren durchgeführt werden dürfen.

Vorteile

Das Datenbanksystem MySQL bietet Anwendern viele Vorteile. Hierzu gehört, dass die Software allgemein als sehr sicher und stabil gilt. Zugleich ist MySQL äußerst flexibel, da es Schnittstellen zu vielen Skriptsprachen für Webanwendungen gibt. Allgemein gilt das RDBMS als besonders einfach zu bedienen. MySQL kann mit verschiedenen Plattformen genutzt werden und sowohl als Open-Source-Software sowie als kommerzielle Lizenzversion erhältlich.

Anwendung

MySQL ist von großem Nutzen in Bereichen, in denen performante und umfangreiche Datenverwaltung erforderlich ist. Ein bevorzugtes Einsatzgebiet ist zum einen die Datenspeicherung für Webdienste. Mit Hilfe der MySQL-Architektur können über die MySQL-Server die Zugriffe aus dem Netz abgewickelt werden. Beispiele für Anwender:  Facebook, Google, YouTube oder auch als Verwendung als eingebettetes Datenbanksystem.

Erweiterungen und Weiterentwicklungen

MySQL entwickelt sich ständig weiter, da die Open Source Software sehr beliebt und weit verbreitet ist. So wurden in den Jahren 2008-2012 etliche Neuerungen wie z.B. die Query-Cache zum Speichern häufig benutzter SQL-Anfragen und die Unterstützung von Views eingeführt. Die Version MySQL 5.6 bietet viele Spezialanwendungen und nützliche Features, womit dem User ein vielseitiges Werkzeug zur Verfügung gestellt wird.

Nutzen für Suchmaschinenoptimierung

MySQL kann vor allem durch die Verwendung entsprechender Operatoren nützlich sein, um große Datenbanken schnell zu verarbeiten. So kann es zum Beispiel dabei helfen, große Datensätze mit Produktdaten eines Online-Shops zu verwalten, um diese für das Einspielen in Preissuchmaschinen zu optimieren. Ebenso basieren viele Keyword-Tools auf MySQL-Datenbanken, wo Keyword-Rankings mit den entsprechenden URLs abgespeichert werden und von Usern später in aufbereiteter Form abgerufen werden können. Somit dient das Datenbanksystem nicht direkt der Suchmaschinenoptimierung wie der OnPage-Optimierung, sondern vielmehr bietet es die Grundlage für Webanalyse-Tools, die auf der Basis großer Datenmengen arbeiten.

Geschichte

Michael Widenius und David Axmark begannen 1994 mit der Entwicklung von MySQL. Es wurde zunächst als Clone für mSQL entwickelt, um Datenbanken des maskengesteuerten Datenbanksystems UNIREG in Web-Anwendungen verfügbar zu machen. (UNIREG war 1979 von Michael Widenius entwickelt und ca. 1986 in die Programmiersprache C umgeschrieben worden, damit es auch unter UNIX-Systemen lief.) MySQL war daher sowohl zu mSQL als auch UNIREG voll kompatibel.

Nach einem internen Release am 23. Mai 1995 wurde die Software im Jahr 1997 sofort unter der Versionsnummer 3.1 veröffentlicht, um zu signalisieren, dass sie auf einem Kern basiert, der schon eine lange Geschichte hat. Sie war von Anfang an für große Datenmengen und sehr gute Performance ausgelegt, teils auf Kosten von Stabilität und Verfügbarkeit. Der Funktionsumfang hingegen war zunächst beschränkt. So gab es nur wenige Tabellentypen und keine Transaktionen. Typischerweise werden neue Eigenschaften auf Wunsch der Anwender implementiert, die dadurch ein sehr großes „Mitspracherecht“ haben.

Mit der im Januar 2001 veröffentlichten Version 3.23 waren über zwei Tabellentypen mit Transaktionen, wobei der eine (InnoDB) den ACID-Kriterien genügt. Alle Operationen, die allgemeine SQL-Eigenschaften betreffen, sind für alle Tabellentypen gleich, während die Eigenschaften der Tabellentypen aufgrund der unterschiedlichen Architektur sehr verschieden sein können. So besitzt der Typ MyISAM bereits seit der frühen Version 3.23 eine sehr leistungsfähige Volltext-Suche, die beim Typ InnoDB nicht implementiert ist. Neu in Version 3.23 ist ebenfalls das Replikationssystem. Es ist für den Einsatz in einem Rechnerverbund ausgelegt und bietet sich für einen unterbrechungsfreien Betrieb an. Dabei sind dem Datenbankmanagementsystem (DBMS) mehrere Datenbanken auf unterschiedlichen Rechnerknoten zugeordnet. Eine der Datenbanken fungiert als Master; hier werden die Datenbankinhalte verändert. Das Replikationssystem verteilt anschließend die datenverändernden SQL-Kommandos auf die anderen Datenbanken, die diese Änderungen lokal auf ihren Tabellen nachvollziehen. Es handelt sich hierbei also um eine asynchrone Replikation der SQL-Kommandos. Mit dem MySQL Cluster steht ein Tabellentyp zur Verfügung, bei dem die gesamte Datenbank im Arbeitsspeicher als In-Memory-Datenbank vorgehalten werden kann. Es wird synchrone Replikation zwischen allen Clusterknoten und Transaktionsverarbeitung unterstützt, jedoch keine Volltextsuche.

Version 4.0, das im März 2003 freigegeben wurde, erlaubt die Nutzung von Unions und führte einen Query-Cache ein, der die Ergebnisse häufig benutzter SQL-Anfragen zwischenspeichert.

Im Oktober 2004 wurde Version 4.1 veröffentlicht. Es bietet eine Datenspeicherung in unterschiedlichen Zeichensätzen pro Tabelle an; unter anderem wird auch Unicode unterstützt. Unterabfragen (Subqueries/Subselects) sind möglich.

Version 5.0 wurde im Oktober 2005 freigegeben. Sie unterstützt alle im SQL3-Standard definierten Objekttypen. Neu in Version 5 ist dabei die Unterstützung von Views, Triggern, Stored Procedures und User Defined Functions.

Im Februar 2008 übernahm Sun Microsystems MySQL AB. Als Kaufwert wird eine Milliarde Dollar genannt; davon 200 Millionen in Aktienoptionen.

Im November 2008 wurde die Version 5.1 freigegeben. Zu den Neuerungen zählen außer Partitionsfunktionen, mit denen sehr große Tabellen in mehrere physikalische Dateien aufgeteilt werden können, ein Event-Scheduler, mit dessen Hilfe zuvor definierte SQL-Kommandos in regelmäßigen Zeitabständen ausgeführt werden können, sowie Funktionen des Instanzenmanagers. Die API wurde überarbeitet, so dass nun das Laden und Entladen von Komponenten während der Laufzeit und ohne Neustart des Servers möglich ist.

Im Januar 2010 wurde Sun Microsystems von Oracle gekauft. Wenige Monate später gab Oracle bekannt, dass die bereits von begonnene Entwicklung der Datenbank-Engine Falcon eingestellt wird.

Ende 2010 wurde Version 5.5 veröffentlicht. InnoDB wurde zur Standard-Speicherengine. Die Performance wurde durch die Nutzung von asynchronem I/O verbessert. Neu sind auch die Kommandos SIGNAL/RESIGNAL, die standardkonforme Fehlerbehandlung in Stored Procedures erlauben.

Das im Jahr 2012 veröffentlichte MySQL 5.6 umfasst u. a. Memcached APIs, globale Transaktions-IDs und Verbesserungen am PERFORMANCE_SCHEMA.

Im Januar 2009, bereits bevor Oracle MySQL AB kaufte, startete Monty Widenius einen GPL-Fork, MariaDB. MariaDB basiert auf der Code-Basis von MySQL server 5.5 und hat sich das Ziel gegeben, weitgehend die Kompatibilität zu den von Oracle herausgegebenen MySQL-Versionen zu erhalten.

Die Entwicklung von MySQL 5.7 hat insgesamt über zwei Jahre in Anspruch genommen, bis es schließlich Ende Oktober 2015 veröffentlicht werden konnte. Die neue Version zeichnet sich insbesondere durch eine gesteigerte Performance, verbesserte Replikation und Logging aus. So erweiterten die MySQL Entwickler beispielsweise den Abfragenoptimierer um ein dynamisches Kostenmodell, was eine schnellere Ausführung ermöglicht und dem Nutzer mehr Eingriffsmöglichkeiten bietet.

Kritik

Seit der Übernahme von MySQL AB von Sun durch Oracle steht das Datenbanksystem immer häufiger in der Kritik. Der Unterschied zwischen der freien und kommerziellen Version von MySQL wird immer gravierender. Neue Funktionen sind häufig nur noch in der kommerziellen Version von MySQL enthalten, dazu kommen die nicht-öffentliche Datenbank mit Fehlermeldungen, veraltete Bazaar-Archive und fehlende Tests für die Fehlersuche.

Seit Ende 2012 erodiert auch der Rückhalt in der OpenSource-Gemeinschaft für MySQL. Nach Fedora und OpenSUSE haben Anfang 2013 auch Slackware und Arch Linux das MySQL-Paket durch MariaDB ersetzt, einen Fork des Mitbegründers Widenius. Auslöser seien der mangelnde Respekt gegenüber der Gemeinschaft und die zunehmend abgeschottete Entwicklung des RDBMS. Ebenso wechselte die Wikimedia-Foundation Anfang 2013 zu MariaDB.

Jaroslav Reznik, Red Hats Fedora-Projekt-Manager, erklärte, dass sich MySQL in Richtung eines geschlossenen Projektes entwickle. Alle nützlichen Informationen zu Sicherheitsfragen (CVEs) würden nicht mehr veröffentlicht. Es existierten keine vollständigen Regressionstests mehr und ein sehr großer Teil der MySQL-Bug-Datenbank sei nun nicht mehr öffentlich.

Michael Widenius, der ehemalige Gründer von MySQL AB kritisiert Oracle scharf: Oracle habe klargemacht, dass sie kein Interesse an Open Source hätten, die Zusammenarbeit mit der Community ablehnten und auch MySQL im Allgemeinen nicht mögen würden. Als Beispiele für die Missachtung der Open-Source-Prinzipien nennt er die kommerziellen Erweiterungen für MySQL, die inzwischen nichtöffentliche Fehler-Datenbank und den Mangel an Testfällen für neuen MySQL-Code. Vorzeige-Funktionen, wie das Online-Backup und Fremdschlüssel für alle Speicher-Engines, die für MySQL 6.0 versprochen wurden, seien nicht veröffentlicht worden, obwohl sie fertig entwickelt und bereit seien. Statt Fehler zu beheben, entferne Oracle Funktionen. Die meisten der ursprünglichen MySQL-Entwickler hätten Oracle verlassen. Als weitere Beweise für die „Verachtung“ der MySQL-Anwender nennt er den „scharfen“ Anstieg der Lizenz- und Support-Gebühren und das Fehlen einer offenen Roadmap.