❯ ZUM LEXIKON

Defini­tion

MySQL ist ein im Inter­net weit verbrei­te­tes relatio­na­les Daten­bank­sys­tem, das auf SQL (Abk.: Struc­tu­red Query Language; dt.: struk­tu­rierte Abfra­ge­spra­che) beruht. Es ist ist heutzu­tage eines der am weites­ten verbrei­te­ten relatio­na­len Daten­bank­ma­nage­ment­sys­teme (RDBMS) für Inter­net­an­wen­dun­gen wie Websites. Viele CMS wie zum Beispiel TYPO3 verwen­den MySQL als Daten­bank­sys­tem. Die großen Vorteile des Daten­bank­sys­tems bestehen in der Möglich­keit, große Daten­men­gen schnell verar­bei­ten zu können.

mysql-logo-erklaerung

Quelle: Wikipe­dia

Entste­hung

Seit 1994 wurde MySQL von MySQL AB entwi­ckelt, welches im Februar 2008 vom Unter­neh­men Sun Micro­sys­tems übernom­men wurde. Heute befin­det sich MySQL sowie Sun Micro­sys­tems im Besitz von Oracle, welche stets an der Verbes­se­rung des RDBMS arbei­tet. Der MySQL Source Code ist frei verfüg­bar, da es ursprüng­lich als Freeware entwi­ckelt wurde. Die Open Source Software ist in C und C++ geschrie­ben und mit den meisten Betrieb­sys­te­men kompa­ti­bel.

Funkti­ons­weise

Grund­sätz­lich besteht die Idee von MySQL aus einem MySQL-Server und den MySQL-Clients. Der MySQL-Server stellt das Daten­bank­ma­nage­ment­sys­tem dar, über welches die in Daten­ban­ken gespei­cher­ten Daten abgeru­fen und verteilt werden. Diese Daten können dann von einem oder mehre­ren MySQL-Clients angefragt werden. Auf dem MySQL-Server können mehrere Daten­ban­ken erstellt werden, in welchen die Daten in zweidi­men­sio­na­len Tabel­len (Relatio­nen) gespei­chert werden. Jede Tabelle kann Spalten enthal­ten, in welchen die Daten einen festge­leg­ten Daten­typ besit­zen (z.B. Integer (ganze Zahlen)).Diese Daten­ty­pen können aus numeri­schen Typen bestehen, aus Zeichen­ket­ten (char, text) oder aus Typen für Datum und Uhrzeit (date, time).

Bei den Daten der Tabel­len spielt Groß- und Klein­schrei­bung keine Rolle. Die Zeilen einer Relation werden Tupel genannt und stellen eine konkrete Kombi­na­tion von Spalten­wer­ten (Attri­but­wer­ten) dar. Alle Tupel können spezi­fisch über eine Daten­bank-Engine abgefragt werden. Zur Defini­tion der Daten­struk­tu­ren in den MySQL- Daten­ban­ken sowie zum Bearbei­ten (Einfü­gen, Verän­dern, Löschen) und Abfra­gen der Daten­be­stände wird die Daten­bank­spra­che SQL verwen­det. Grund­sätz­lich eignet sich das MySQL zur Nutzung einer sehr großen Zahl an unter­schied­li­chen Daten­ban­ken, an die von mehre­ren Clients gleich­zei­tig Anfra­gen gesen­det werden.

MySQL-Daten­ban­ken können sowohl öffent­lich über das Web zugäng­lich gemacht als auch intern in einem Intra­net genutzt werden. Der abfra­gende Client kann dabei ein schlich­tes Komman­do­zei­len­pro­gramm, komplexe Software oder eine Web-Anwen­dung sein. Der Zugriff auf MySQL-Daten­ban­ken lässt sich wie bei allen Daten­bank­sys­te­men anhand von verge­be­nen Rechten steuern. So ist es zum Beispiel möglich, dass ein Browser nur auf bestimmte Daten­ban­ken zugrei­fen darf, Änderun­gen aber nur von Adminis­tra­to­ren durch­ge­führt werden dürfen.

Vorteile

Das Daten­bank­sys­tem MySQL bietet Anwen­dern viele Vorteile. Hierzu gehört, dass die Software allge­mein als sehr sicher und stabil gilt. Zugleich ist MySQL äußerst flexi­bel, da es Schnitt­stel­len zu vielen Skript­spra­chen für Weban­wen­dun­gen gibt. Allge­mein gilt das RDBMS als beson­ders einfach zu bedie­nen. MySQL kann mit verschie­de­nen Platt­for­men genutzt werden und sowohl als Open-Source-Software sowie als kommer­zi­elle Lizenz­ver­sion erhält­lich.

Anwen­dung

MySQL ist von großem Nutzen in Berei­chen, in denen perfor­mante und umfang­rei­che Daten­ver­wal­tung erfor­der­lich ist. Ein bevor­zug­tes Einsatz­ge­biet ist zum einen die Daten­spei­che­rung für Webdienste. Mit Hilfe der MySQL-Archi­tek­tur können über die MySQL-Server die Zugriffe aus dem Netz abgewi­ckelt werden. Beispiele für Anwen­der:  Facebook, Google, YouTube oder auch als Verwen­dung als einge­bet­te­tes Daten­bank­sys­tem.

Erwei­te­run­gen und Weiter­ent­wick­lun­gen

MySQL entwi­ckelt sich ständig weiter, da die Open Source Software sehr beliebt und weit verbrei­tet ist. So wurden in den Jahren 2008–2012 etliche Neuerun­gen wie z.B. die Query-Cache zum Speichern häufig benutz­ter SQL-Anfra­gen und die Unter­stüt­zung von Views einge­führt. Die Version MySQL 5.6 bietet viele Spezi­al­an­wen­dun­gen und nützli­che Features, womit dem User ein vielsei­ti­ges Werkzeug zur Verfü­gung gestellt wird.

Nutzen für Suchma­schi­nen­op­ti­mie­rung

MySQL kann vor allem durch die Verwen­dung entspre­chen­der Opera­to­ren nützlich sein, um große Daten­ban­ken schnell zu verar­bei­ten. So kann es zum Beispiel dabei helfen, große Daten­sätze mit Produkt­da­ten eines Online-Shops zu verwal­ten, um diese für das Einspie­len in Preis­such­ma­schi­nen zu optimie­ren. Ebenso basie­ren viele Keyword-Tools auf MySQL-Daten­ban­ken, wo Keyword-Rankings mit den entspre­chen­den URLs abgespei­chert werden und von Usern später in aufbe­rei­te­ter Form abgeru­fen werden können. Somit dient das Daten­bank­sys­tem nicht direkt der Suchma­schi­nen­op­ti­mie­rung wie der OnPage-Optimie­rung, sondern vielmehr bietet es die Grund­lage für Webana­lyse-Tools, die auf der Basis großer Daten­men­gen arbei­ten.

Geschichte

Michael Widenius und David Axmark began­nen 1994 mit der Entwick­lung von MySQL. Es wurde zunächst als Clone für mSQL entwi­ckelt, um Daten­ban­ken des masken­ge­steu­er­ten Daten­bank­sys­tems UNIREG in Web-Anwen­dun­gen verfüg­bar zu machen. (UNIREG war 1979 von Michael Widenius entwi­ckelt und ca. 1986 in die Program­mier­spra­che C umgeschrie­ben worden, damit es auch unter UNIX-Syste­men lief.) MySQL war daher sowohl zu mSQL als auch UNIREG voll kompa­ti­bel.

Nach einem inter­nen Release am 23. Mai 1995 wurde die Software im Jahr 1997 sofort unter der Versi­ons­num­mer 3.1 veröf­fent­licht, um zu signa­li­sie­ren, dass sie auf einem Kern basiert, der schon eine lange Geschichte hat. Sie war von Anfang an für große Daten­men­gen und sehr gute Perfor­mance ausge­legt, teils auf Kosten von Stabi­li­tät und Verfüg­bar­keit. Der Funkti­ons­um­fang hinge­gen war zunächst beschränkt. So gab es nur wenige Tabel­len­ty­pen und keine Trans­ak­tio­nen. Typischer­weise werden neue Eigen­schaf­ten auf Wunsch der Anwen­der imple­men­tiert, die dadurch ein sehr großes „Mitspra­che­recht“ haben.

Mit der im Januar 2001 veröf­fent­lich­ten Version 3.23 waren über zwei Tabel­len­ty­pen mit Trans­ak­tio­nen, wobei der eine (InnoDB) den ACID-Krite­rien genügt. Alle Opera­tio­nen, die allge­meine SQL-Eigen­schaf­ten betref­fen, sind für alle Tabel­len­ty­pen gleich, während die Eigen­schaf­ten der Tabel­len­ty­pen aufgrund der unter­schied­li­chen Archi­tek­tur sehr verschie­den sein können. So besitzt der Typ MyISAM bereits seit der frühen Version 3.23 eine sehr leistungs­fä­hige Volltext-Suche, die beim Typ InnoDB nicht imple­men­tiert ist. Neu in Version 3.23 ist ebenfalls das Repli­ka­ti­ons­sys­tem. Es ist für den Einsatz in einem Rechner­ver­bund ausge­legt und bietet sich für einen unter­bre­chungs­freien Betrieb an. Dabei sind dem Daten­bank­ma­nage­ment­sys­tem (DBMS) mehrere Daten­ban­ken auf unter­schied­li­chen Rechner­kno­ten zugeord­net. Eine der Daten­ban­ken fungiert als Master; hier werden die Daten­bank­in­halte verän­dert. Das Repli­ka­ti­ons­sys­tem verteilt anschlie­ßend die daten­ver­än­dern­den SQL-Komman­dos auf die anderen Daten­ban­ken, die diese Änderun­gen lokal auf ihren Tabel­len nachvoll­zie­hen. Es handelt sich hierbei also um eine asynchrone Repli­ka­tion der SQL-Komman­dos. Mit dem MySQL Cluster steht ein Tabel­len­typ zur Verfü­gung, bei dem die gesamte Daten­bank im Arbeits­spei­cher als In-Memory-Daten­bank vorge­hal­ten werden kann. Es wird synchrone Repli­ka­tion zwischen allen Cluster­kno­ten und Trans­ak­ti­ons­ver­ar­bei­tung unter­stützt, jedoch keine Volltext­su­che.

Version 4.0, das im März 2003 freige­ge­ben wurde, erlaubt die Nutzung von Unions und führte einen Query-Cache ein, der die Ergeb­nisse häufig benutz­ter SQL-Anfra­gen zwischen­spei­chert.

Im Oktober 2004 wurde Version 4.1 veröf­fent­licht. Es bietet eine Daten­spei­che­rung in unter­schied­li­chen Zeichen­sät­zen pro Tabelle an; unter anderem wird auch Unicode unter­stützt. Unter­ab­fra­gen (Subqueries/Subselects) sind möglich.

Version 5.0 wurde im Oktober 2005 freige­ge­ben. Sie unter­stützt alle im SQL3-Standard definier­ten Objekt­ty­pen. Neu in Version 5 ist dabei die Unter­stüt­zung von Views, Triggern, Stored Proce­du­res und User Defined Functions.

Im Februar 2008 übernahm Sun Micro­sys­tems MySQL AB. Als Kaufwert wird eine Milli­arde Dollar genannt; davon 200 Millio­nen in Aktien­op­tio­nen.

Im Novem­ber 2008 wurde die Version 5.1 freige­ge­ben. Zu den Neuerun­gen zählen außer Parti­ti­ons­funk­tio­nen, mit denen sehr große Tabel­len in mehrere physi­ka­li­sche Dateien aufge­teilt werden können, ein Event-Schedu­ler, mit dessen Hilfe zuvor definierte SQL-Komman­dos in regel­mä­ßi­gen Zeitab­stän­den ausge­führt werden können, sowie Funktio­nen des Instan­zen­ma­na­gers. Die API wurde überar­bei­tet, so dass nun das Laden und Entla­den von Kompo­nen­ten während der Laufzeit und ohne Neustart des Servers möglich ist.

Im Januar 2010 wurde Sun Micro­sys­tems von Oracle gekauft. Wenige Monate später gab Oracle bekannt, dass die bereits von begon­nene Entwick­lung der Daten­bank-Engine Falcon einge­stellt wird.

Ende 2010 wurde Version 5.5 veröf­fent­licht. InnoDB wurde zur Standard-Speiche­ren­gine. Die Perfor­mance wurde durch die Nutzung von asynchro­nem I/O verbes­sert. Neu sind auch die Komman­dos SIGNAL/RESIGNAL, die standard­kon­forme Fehler­be­hand­lung in Stored Proce­du­res erlau­ben.

Das im Jahr 2012 veröf­fent­lichte MySQL 5.6 umfasst u. a. Memcached APIs, globale Trans­ak­ti­ons-IDs und Verbes­se­run­gen 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, weitge­hend die Kompa­ti­bi­li­tät zu den von Oracle heraus­ge­ge­be­nen MySQL-Versio­nen zu erhal­ten.

Die Entwick­lung von MySQL 5.7 hat insge­samt über zwei Jahre in Anspruch genom­men, bis es schließ­lich Ende Oktober 2015 veröf­fent­licht werden konnte. Die neue Version zeich­net sich insbe­son­dere durch eine gestei­gerte Perfor­mance, verbes­serte Repli­ka­tion und Logging aus. So erwei­ter­ten die MySQL Entwick­ler beispiels­weise den Abfra­gen­op­ti­mie­rer um ein dynami­sches Kosten­mo­dell, was eine schnel­lere Ausfüh­rung ermög­licht und dem Nutzer mehr Eingriffs­mög­lich­kei­ten bietet.

Kritik

Seit der Übernahme von MySQL AB von Sun durch Oracle steht das Daten­bank­sys­tem immer häufi­ger in der Kritik. Der Unter­schied zwischen der freien und kommer­zi­el­len Version von MySQL wird immer gravie­ren­der. Neue Funktio­nen sind häufig nur noch in der kommer­zi­el­len Version von MySQL enthal­ten, dazu kommen die nicht-öffent­li­che Daten­bank mit Fehler­mel­dun­gen, veral­tete Bazaar-Archive und fehlende Tests für die Fehler­su­che.

Seit Ende 2012 erodiert auch der Rückhalt in der OpenSo­urce-Gemein­schaft für MySQL. Nach Fedora und OpenSUSE haben Anfang 2013 auch Slack­ware und Arch Linux das MySQL-Paket durch MariaDB ersetzt, einen Fork des Mitbe­grün­ders Widenius. Auslö­ser seien der mangelnde Respekt gegen­über der Gemein­schaft und die zuneh­mend abgeschot­tete Entwick­lung des RDBMS. Ebenso wechselte die Wikime­dia-Founda­tion Anfang 2013 zu MariaDB.

Jaros­lav Reznik, Red Hats Fedora-Projekt-Manager, erklärte, dass sich MySQL in Richtung eines geschlos­se­nen Projek­tes entwickle. Alle nützli­chen Infor­ma­tio­nen zu Sicher­heits­fra­gen (CVEs) würden nicht mehr veröf­fent­licht. Es existier­ten keine vollstän­di­gen Regres­si­ons­tests mehr und ein sehr großer Teil der MySQL-Bug-Daten­bank sei nun nicht mehr öffent­lich.

Michael Widenius, der ehema­lige Gründer von MySQL AB kriti­siert Oracle scharf: Oracle habe klarge­macht, dass sie kein Inter­esse an Open Source hätten, die Zusam­men­ar­beit mit der Commu­nity ablehn­ten und auch MySQL im Allge­mei­nen nicht mögen würden. Als Beispiele für die Missach­tung der Open-Source-Prinzi­pien nennt er die kommer­zi­el­len Erwei­te­run­gen für MySQL, die inzwi­schen nicht­öf­fent­li­che Fehler-Daten­bank und den Mangel an Testfäl­len für neuen MySQL-Code. Vorzeige-Funktio­nen, wie das Online-Backup und Fremd­schlüs­sel für alle Speicher-Engines, die für MySQL 6.0 verspro­chen wurden, seien nicht veröf­fent­licht worden, obwohl sie fertig entwi­ckelt und bereit seien. Statt Fehler zu beheben, entferne Oracle Funktio­nen. Die meisten der ursprüng­li­chen MySQL-Entwick­ler hätten Oracle verlas­sen. Als weitere Beweise für die „Verach­tung“ der MySQL-Anwen­der nennt er den „schar­fen“ Anstieg der Lizenz- und Support-Gebüh­ren und das Fehlen einer offenen Roadmap.