Was ist MySQL?

Web-Entwicklung
Was ist MySQL?

Wer bei der Programmierung mit Daten arbeitet, wird früher oder später nicht darum herum kommen eine Datenbank zu verwenden. Bei MySQL handelt es sich um ein solches Datenbankmanagementsystem (Abk.: DBMS), welches die Verarbeitung und den Abruf von Daten erleichtern soll.

Logo von MySQL

Die schwedische Firma MySQL AB hat 1995 MySQL als Open Source Software unter der GNU General Public License herausgebracht, seit 2010 steht MySQL im Besitz der Oracle Corporation. MySQL ist neben der Open Source Variante auch als Enterpriselizenz für Geschäftskunden erhältlich.

Einer der Mitbegründer von MySQL, Micheal Widenius, benannte MySQL nach seiner Tochter My. Auch heute noch arbeitet Widenius an Datenbank Management Systemen: MariaDB, ein relativ neuer aber bekannter Fork (alternativer Entwicklungspfad) des ursprünglichen MySQL, welcher aufgrund der Oracle-Übernahme entstanden ist. Während MySQL und MariaDB in ihren grundlegenden Funktionen identisch sind, unterscheiden sie sich in der Weiterentwicklung zunehmend mehr.

Wo findet MySQL Anwendung?

Das SQL in MySQL steht im allgemeinen Sprachgebrauch für Structured Query Language. Dabei bezieht man sich auf die Datenbanksprache, die in MySQL angewendet wird. Da SQL sich für relationale Datenbankmodelle eignet, handelt es sich bei MySQL um genau so eine relationale Datenbank.

Relationale Datenbanksysteme

Relationale Datenbanken zeichnen sich durch Beziehungen (Relationen) der Tabellen und ihrer Daten aus. Wie sieht solch eine Beziehung aus? Ein einfaches Beispiel: Eine Bibliothek erfasst ihre Bücher in einer Datenbank. Ein Buch definiert sich (aber nicht ausschließlich) aus Daten wie Autor, Titel, Verlag und ISBN. Ein Kunde, welcher bereits ein Kundenkonto in der Bibliothek hat, leiht sich nun ein Buch aus. Der Kunde definiert sich beispielsweise aus Name, Vorname, Geburtsdatum und einer Anschrift. Der Kunde und das Buch bilden hierbei jeweils eine Tabelle ab.

In MySQL kann man diese beiden verschiedenen Datensätze in eine Beziehung setzen. Wenn der Kunde ein Buch ausleiht, muss erfasst werden, dass dieser Kunde ein bestimmtes Buch ausgeliehen hat. Die eindeutige Identifikation ist dabei maßgeblich für die Anwendung von relationalen Datenbanksystemen wie MySQL. Dafür wird zunächst die Beziehung der Tabellen mithilfe von sogenannten Schlüsseln oder Keys definiert. Durch diese Schlüssel lassen sich Datensätze wie ein bestimmter Kunde und ein bestimmtes Buch eindeutig identifizieren. Deshalb bleiben Schlüssel auch immer unverändert, da sie sich nicht auf die Position in der Tabelle beziehen sondern auf den Datensatz an sich.

MySQL im Einsatz in Webseiten

MySQL wird erfolgreich in dynamischen Webseiten eingesetzt und ist auf allen gängigen Betriebssystemen wie Microsoft Windows, Linux und macOS lauffähig. Große Plattformen wie Facebook, Twitter, WordPress, Google und YouTube verwenden ebenfalls MySQL.

Häufig wird MySQL in Verbindung mit dem Apache Webserver oder nginx verwendet. Wird als Skriptsprache PHP gewählt, spricht man dann vom bekannten LAMP- (Linux, Apache, MySQL, PHP) oder LEMP- (Linux, nginx, MySQL, PHP) Stack. Dieses Software-Bündel kann unter Linux Distributionen als Paket installiert werden um dynamische Webseiten zu entwickeln und bereitzustellen.

Zusammenfassung

SQL ist die strukturierte Sprache für relationale Datenbanksysteme. MySQL ist ein relationales Datenbanksystem, welches mit Beziehung zwischen Datenbanktabellen und deren Daten arbeitet. Deshalb findet MySQL am meisten Anwendung in dynamischen Webseiten die viele Beziehungen zwischen ihren Daten aufweisen, und wird häufig im Zusammenhang mit der Programmiersprache PHP und einem Webserver verwendet.

Was kann MySQL?

Wie bereits erwähnt ist eines der wichtigsten Features die plattformübergreifende Nutzbarkeit von MySQL. Stored Procedures, also aufrufbare Funktionen, mit denen man ganze Abfragelogiken vordefinieren kann, gehören ebenfalls zu den Funktionen von MySQL. Damit lassen sich beispielsweise auch Trigger implementieren. Damit können automatisierte Aktionen ausgeführt werden, wenn Datensätze aktualisiert oder hinzugefügt werden.

Transaktionssicherheit

Auch gilt MySQL als transaktionssichere Datenbank. Das bedeutet, dass mehrere Anfragen in einer Transaktion gebündelt von dem Datenbanksystem ausgeführt werden können. Im Fehlerfall ließen sich diese als ganzes zurückrollen. Dadurch wird beispielsweise sichergestellt, dass bei einem neuen Nutzeraccount auch immer ein neues Profil angelegt wird. Sollte nun zwischen dem Anlegen des Accounts und dem Erstellen des Profils ein wie auch immer gearteter Fehler auftreten, so übernimmt das Datenbanksystem die Aufgabe des „Aufräumens“ und sorgt dafür, dass der vorherige Stand wiederhergestellt wird. So entstehen keine Daten-Inkonsistenzen.

Vielfältige Speicherformate

MySQL besitzt unterschiedliche Speicherformate. Das wichtigste und standardmäßig verwendete nennt sich InnoDB. Je nach Anwendungsfall gibt es aber auch andere Formate, welche auf die Datenbanktabellen angewendet werden können. Beispielsweise die Nutzung des Arbeitsspeichers (Memory) um temporäre Daten zu speichern. Dies ist etwa sinnvoll, wenn es sich um Cache-Tabellen handelt, die regelmäßig neu gebildet werden.

Subselect

Häufig reichen einfache Abfragen nicht aus, um alle wichtigen Daten mehrerer Tabellen darzustellen. Deshalb müssen komplexere Abfragemöglichkeiten her, wie der Subselect. Dieser kann geschachtelte Abfragen über mehrere Tabellen ausführen und dabei Bezüge zu den jeweiligen Tabellen mit einbeziehen. Auch die bekannten Joins ließen sich durch die Subselects abbilden, sind jedoch aufgrund der Verschachtelung meist langsamer.

Joins

Joins bilden aus zwei Tabellen eine Schnittmenge, die als Ergebnistabelle zurückgegeben wird. Damit lassen sich die Beziehungen zwischen Tabellen darstellen. So ließen sich beispielsweise in einer Bücherei alle Personen auflisten die ein Buch der Harry Potter Reihe ausgeliehen haben.

Indizes

Indizes sind ein geeignetes Mittel, um Abfragen zu optimieren. Dabei kann man auf Tabellenspalten Indizes legen. MySQL spiegelt die Daten dieser Spalte dann im Arbeitsspeicher und kann so bei Abfragen schneller darauf zugreifen, ohne aufwendige Festplattenoperationen ausführen zu müssen. Außerdem lassen sich dadurch Unique-Indizes, also einzigartige Indizes, setzen, die beispielsweise verhindern können dass E-Mail-Adressen mehrfach verwendet bzw. abgespeichert werden.

Unicode Support

Das Speichern von Emojis wird von MySQL natürlich ebenfalls unterstützt. Je nach Installation ist dies allerdings nicht standardmäßig konfiguriert und kann somit zu Problemen führen. Zu beachten ist hier, dass Tabellen und Spalten mit dem utf8mb4-Zeichensatz angelegt werden müssen.

Neuere Versionen von MySQL bieten auch die Möglichkeit, JSON-Objekte nativ in der Datenbank abzulegen. Damit verwischen die Grenzen zwischen NoSQL-Datenbanken und der klassischen MySQL-Datenbank. Abfragen lassen sich basierend auf JSON-Eigenschaften durchführen und in die SQL-Queries integrieren.

Was kann MySQL — Zusammenfassung

MySQL bietet eine Reihe an Features, die vor allem die Abfragegeschwindigkeit verbessern. Stored Procedures, Joins und Indizes helfen auch dabei, Abfragen zu erleichtern und zu vereinfachen. Auch wird MySQL an heutige Anforderungen, wie das Speichern von Emojis oder JSON, angepasst. Dass damit aber noch nicht alle Funktionen von MySQL Erwähnung gefunden haben, dürfte auf der Hand liegen.

Wie verwende ich MySQL?

SQL zeichnet sich vor allem durch ihre einfach Les- und Schreibweise aus, da sie an die englische Umgangssprache angelehnt ist. Dies wurde von Gremien wie dem ISO und IEC, aber auch dem ANSI und DIN standardisiert. Dadurch wird eine vom relationalen Datenbankmanagementsystem (RDBMS) relativ unabhängige Verwendung von SQL-Befehlen gewährleistet. Diese Unabhängikeit, nicht nur vom RDBMS sondern auch von SQL, findet sich beispielsweise auch in der Entwicklung und Nutzung von NoSQL. NoSQL steht hierbei allerdings nicht für „kein SQL“, wie allgemein vermutet, sondern für „Not only SQL“, also „nicht nur SQL“.

Client-Anwendungen

Um die Datenbanken zu administrieren gibt es eine Reihe nützlicher Clients. Das Kommandozeilenprogramm „mysql“ findet vor allem bei Servern großen Anklang. Es handelt sich hierbei um eine MySQL-Shell, die eine direkte Schnittstelle zum MySQL-Server bietet und das Ausführen von SQL-Abfragen ermöglicht.

Neben dem pragmatischen Kommandozeilenprogramm gibt es auch visuelle Anwendungen, wie beispielsweise MySQL Workbench, phpMyAdmin oder TablePlus – um nur einige der Bekanntesten zu nennen. Diese Client-Anwendungen werden besonders durch ihre leicht bedienbare Oberfläche sehr gerne genutzt. Außerdem sind hier auch Korrekturhilfen und visuell strukturierte Datenbanktabellen ein Vorteil gegenüber dem MySQL Kommandozeilenprogamm.

Integration in Programmiersprachen

Programmiersprachen wie PHP, Python, Java, C# u.v.m. bieten ebenfalls MySQL-Client-Pakete. Dadurch lässt sich über eine Schnittstelle direkt mit der Programmiersprache die SQL-Befehle ausführen. Die Integration von MySQL in gängige Programmiersprachen sorgt dafür, dass MySQL kaum noch allein über die anderen Client-Möglichkeiten verwendet wird. Schließlich lässt sich die Verarbeitung der Daten durch das Programm direkt mit den SQL-Befehlen auf die Datenbank übertragen. Sie bildet damit den Datenkern moderner Anwendungen.  Dies hat auch den Vorteil, dass Zugriffe und Abfragen über eine weitere Ebene abstrahiert werden und auch Bündelungen von Abfragen zur gleichen Zeit möglich sind.

Zusammenfassung

SQL ist eine leicht lesbare Sprache, die an die englische Umgangssprache angelehnt ist. Mithilfe verschiedenster Clients lässt sich diese Sprache anwenden um Datenbanken zu manipulieren. Programmiersprachen bieten Schnittstellen an, um SQL-Befehle zur Datenverarbeitung auszuführen.

Wie funktioniert MySQL?

MySQL ist eine Client-Server-Anwendung. Was bedeutet das genau? Die Datenbanken werden von der MySQL-Server-Anwendung verarbeitet, während der MySQL-Client Anfragen an den Server sendet oder Daten von diesem empfängt.

Dieser Ablauf wird durch das MySQL-Protokoll beschrieben. Die Hauptfunktionen des Protokolls beinhalten die Verschlüsselung durch SSL, Kompression, Austausch und Authentifizierung des Clients sowie Akzeptanz und Ausführung der Befehle (Query).

Wird ein Query ausgeführt, wird dieser zunächst auf seine Syntax geprüft. Bei dieser Prüfung, auch Parsing genannt, sammelt MySQL bereits Informationen über den Query. Beispielsweise, ob es sich um eine Abfrage oder eine Änderung der Daten handelt. Am Ende dieser Überprüfung liegt ein Parse-Baum vor, welcher noch weiter optimiert werden kann.

Der Optimizer optimiert lediglich den versendeten Query, sodass die Abfrage durch genau diesen so schnell wie möglich stattfindet. Mithilfe des Optimizers lässt sich aber auch nachvollziehen, wie die Optimierung des Queries stattgefunden hat. Somit kann oft durch kleine Änderungen des Queries auch die Abfragegeschwindigkeit drastisch verbessert werden. Hierbei hilft der Befehl „explain“.

Ausgeführte Befehle werden im Query-Cache zwischengespeichert. Damit werden identische, wiederkehrende Abfragen ohne Zugriff auf die Datenbank verarbeitet.

Zusammenfassung

MySQL wird in Verbindungen eines abfragenden Clients und eines verarbeitenden Servers verwendet. Verschlüsselung, Authentifizierung und Befehlsausführung sind im MySQL-Protokoll standardmäßig beschrieben. Queries werden auf ihre Syntax geprüft, optimiert und im Cache gespeichert um eine schnelle und effiziente Abfrage zu gewährleisten.



Sie benötigen eine WordPress Agentur? Wir stehen als Ihre Experten zur Verfügung. Treten Sie mit uns in Kontakt und vereinbaren Sie ein unverbindliches Beratungsgespräch.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.