Datenbanken verwalten mit MySQL

20.07.2022
extendedLogo

Unsere digitalisierte Welt beruht auf einem stetig wachsenden Datenberg. Datenbankmanagementsysteme wie MySQL fungieren dabei als zentrales Werkzeug für die Speicherung und Verwaltung dieser Datenmengen.

Gerade im E-Commerce müssen viele unterschiedliche Daten, angefangen beim Produktsortiment bis hin zu Kundendaten, teils parallel organisiert werden. Da sowohl die Ladezeiten als auch die Sicherheit der Daten gerade im Kontext von Onlineshops von hoher Bedeutung sind, muss auf das eingesetzte Datenbankmanagementsystem stets Verlass sein. Im E-Commerce- und CMS-Umfeld hat sich MySQL über die letzten Jahre als Standard etabliert und behauptet.

In diesem Beitrag beschäftigen wir uns daher eingehend mit der technischen Funktionsweise von MySQL sowie den Vor- und Nachteilen des Systems im E-Commerce. Außerdem zeigen wir, wie maxcluster Sie mit dem für Onlineshops optimierten MySQL-Hosting unterstützen kann.

Was ist MySQL?

MySQL ist das global populärste relationale Datenbankmanagementsystem (DBMS). MySQL ist quelloffen und bereits seit 1997 auf dem Markt. Der Name setzt sich aus dem Vornamen "My", einer Tochter des Mitbegründers Michael Widenius, und der strukturierten Datenbank-Abfrage-Sprache Structured Query Language zusammen. Letztere stellt die Operationen zur Abfrage und Verwaltung der Daten zur Verfügung.

Ursprünglich begann die Entwicklung im Jahr 1994 als Open-Source-Projekt durch das schwedische Unternehmen MySQL AB. Anfang 2008 übernahm Sun Microsystems das Unternehmen und führte die Entwicklung des DBMS fort, ehe Sun selbst 2010 von Oracle übernommen wurde. Seitdem gehört MySQL zum Portfolio der Oracle Corporation und steht als Open-Source-Software (OSS) unter der GNU-GPL-Lizenz zur Verfügung. Außerdem wird MySQL für Unternehmen in einer proprietären Enterprise-Version angeboten, um den MySQL-Code in individuellen Anwendungen nutzen zu können und erweiterten Support zu erhalten.

Die Entstehung von MariaDB

Innerhalb der Open-Source-Gemeinde stieß die Übernahme von MySQL durch Oracle wegen der damit einhergehenden Unterschiede zwischen den angebotenen Versionen und der geringen Beteiligung der Community überwiegend auf Kritik. So initiierte Michael Widenius gemeinsam mit einigen der ursprünglichen Entwickler noch vor der Übernahme durch Oracle den GPL-Fork MariaDB. Dieser wird seither kontinuierlich weiterentwickelt, ist mit MySQL weitestgehend kompatibel und verfolgt eine vollständigere Open-Source-Philosophie

MySQL zählt auch deswegen zu den am weitesten verbreiteten Datenbanksystemen, da es besonders häufig für die Datenverwaltung von dynamischen Webservices genutzt wird. Dabei ist MySQL in Verbindung mit der Programmiersprache PHP und Webservern wie Apache oder Nginx Bestandteil des sogenannten LAMP-Stacks (Linux / Apache / MySQL / PHP). Diese System-Architektur gilt als Voraussetzung für die gängigsten Content-Management-Systeme und E-Commerce-Plattformen, wie WordPress, Typo3, Shopware oder Magento. Übrigens wird MySQL auch von den Big Playern Google, Facebook und Twitter eingesetzt.

Wie funktioniert MySQL?

Als DBMS ist MySQL dafür zuständig, eine oder mehrere Datenbanken zu verwalten. Eine Datenbank (DB) ist eine systematische Sammlung von inhaltlich zusammenhängenden Daten. Die Kombination aus Datenbanken und ihrem verwaltenden DBMS wird als Datenbanksystem (DBS) bezeichnet.

Zu den wesentlichen Aufgaben eines DBMS zählt das Bereitstellen von Werkzeugen und Funktionen in seiner Rolle als Schnittstelle zwischen den Datenbanken und den Entwicklern. Diese Tools ermöglichen die Strukturierung bzw. Einrichtung des Datenmodells sowie die Abfrage, Änderung und Eingabe von Daten mittels SQL.

Darüber hinaus kontrolliert das DBMS alle Lese- und Schreibzugriffe, verwaltet parallele Zugriffe und sorgt für die Einhaltung von Richtlinien bezüglich Datenintegrität und Datensicherheit. So wird sichergestellt, dass die gespeicherten Daten zu jeder Zeit persistent und konsistent bleiben.

Aufbau eines Datenbanksystems | Grafik: maxclusterAufbau eines Datenbanksystems | Grafik: maxcluster

Client-Server-Modell

Die Bereitstellung der Funktionalitäten von MySQL ist im Client-Server-Prinzip organisiert, wobei MySQL selbst den Server darstellt. Dieser bekommt unterschiedliche Anfragen von mehreren Clients, führt die gewünschten Befehle aus und liefert die zugehörigen Informationen zurück. Als Antwort können die abgefragten Daten, Bestätigungen oder auch Fehlermeldungen zurückgegeben werden.

Je nach Verwendungszweck befinden sich die Clients im Internet, im internen Netzwerk oder sogar auf der gleichen Maschine wie das Datenbanksystem. Der Zugriff der einzelnen Clients auf den Server wird über das Anlegen von Benutzern mit individuell konfigurierbaren Rechten reguliert.

Zu den möglichen Clients zählen neben dem mitgelieferten Kommandozeilenprogramm hauptsächlich Anwendungen mit direktem Datenbankzugriff, z.B. CMS, E-Commerce-Plattformen und grafische Verwaltungstools wie phpMyAdmin. Bei der erstmaligen Installation dieser Anwendungen werden die benötigten Datenbankparameter Hostname, User und Passwort abgefragt und einmalig angegeben, woraufhin Verbindungen durch die Anwendungen zu der entsprechenden MySQL-Instanz aufgebaut werden können.

Speicher-Engines

Physisch speichert MySQL jede der verwalteten Datenbanken in einem eigenen Ordner des Dateisystems, welcher die Struktur der Daten und die Daten selbst enthält. Das Format dieser Dateien ist von der verwendeten Speicher-Engine der Tabelle abhängig, von denen neben den zehn offiziell in MySQL mitgelieferten Engines auch solche anderer Hersteller zur Verfügung stehen. Jede Engine ist auf einen bestimmten Einsatzzweck hin optimiert, indem sie unterschiedliche Funktionen unterstützt und eine unterschiedliche Performance anbietet. Abhängig vom jeweiligen Verwendungszweck einer Tabelle muss somit eine passende Engine ausgewählt werden.

Zu den Anfangszeiten von MySQL war MYISAM die standardmäßige Engine, die aufgrund der fehlenden Transaktionssicherheit und des Verwaltens von parallelen Anfragen einen besonders schnellen Zugriff ermöglicht und deshalb bis heute besonders bei lesenden Anwendungen benutzt wird. Mit dem Erscheinen der MySQL-Version 5.5 wurde MYISAM jedoch von der neuen Engine InnoDB abgelöst.

InnoDB ist seither die standardmäßig aktivierte und damit meistgenutzte Speicher-Engine in MySQL, weil sie zugunsten der Datenkonsistenz transaktionssichere Lese- und Schreibzugriffe bietet. Die unterstützte Transaktionssicherheit stellt dabei sicher, dass Befehle entweder vollständig oder gar nicht ausgeführt werden.

Zudem unterstützt InnoDB seit der Version 5.6 die Volltextsuche und -indizierung, wofür zuvor MYISAM verwendet werden musste. Wir empfehlen für das Optimum an Stabilität und Performance der MySQL-Instanz, soweit möglich, InnoDB als Speicher-Engine zu verwenden. Erfahrungsgemäß kann die MySQL-Performance dabei häufig durch eine Anpassung der Größe des InnoDB Buffer Pools maßgeblich verbessert werden.

Relationales Datenbankmodell

Ein Datenbankmodell definiert, in welcher Struktur und mit welchen Beziehungen die Daten einer Datenbank abgespeichert werden, wobei das relationale Datenbankmodell die populärste Variante darstellt. Im Fall von MySQL werden die Daten somit als zweidimensionale Relation, beziehungsweise als Tabelle mit einem eindeutigen Namen gespeichert.

In jeder durch MySQL verwalteten Datenbank können mehrere solcher Tabellen angelegt werden, welche wiederum aus mehreren Zeilen und Spalten bestehen. Jede Spalte repräsentiert dabei ein Attribut und hat einen festen Datentyp. In jeder Zeile wird wiederum ein einzelner Datensatz mit konkreten Werten für die Attribute gespeichert.

Die Datensätze sind über maximal einen Primärschlüssel pro Tabelle, bestehend aus einem oder mehreren Attributen, eindeutig identifizierbar. Der Primärschlüssel, welcher bei der Erstellung der Tabelle typischerweise über eine ID festgelegt wird, muss eine eindeutige Zuordnung der Datensätze ermöglichen. Dazu darf jeder Wert des Primärschlüssels pro Tabelle nur einmal vorkommen.

Über den Verweis mithilfe eines Fremdschlüssels, d.h. einem Attribut mit Werten des Primärschlüssel einer anderen Tabelle, ist es zudem möglich, Informationen aus mehreren Tabellen logisch miteinander in Beziehung zu setzen und in SQL-Abfragen untereinander zu verknüpfen.

Beispielhafte relationale Datenbank | Grafik: maxclusterBeispielhafte relationale Datenbank | Grafik: maxcluster

Verarbeitung einer Abfrage

Der MySQL-Server ist dafür zuständig, jede SQL-Abfrage (Query) der Clients möglichst effizient und schnell zu beantworten. Um diese Performance gewährleisten zu können, wird bis zur MySQL-Version 5.7 zunächst der Query-Cache abgefragt, der die Ergebnisse der vorherigen Abfragen als Zwischenspeicher aufbewahrt.

Kommt es nun dazu, dass die angefragte Query mit einer zuvor ausgeführten identisch ist und sich der Datenbestand in der Zwischenzeit nicht geändert hat, wird direkt das im Cache abgelegte Ergebnis ausgegeben, ohne auf die zugehörige Datenbank zuzugreifen. Dieser Vorgang hat eine Entlastung des Servers zur Folge, sodass die Abfragen wesentlich schneller bearbeitet werden können.

Wird jedoch kein Ergebnis im Cache gefunden, prüft der Parser von MySQL zunächst die Query auf formale Korrektheit (Syntax) und zerlegt sie anschließend in Form eines Parse Trees in ihre Bestandteile. Zeitgleich werden Informationen über die Art der Anfrage und der angefragten Tabellen gesammelt.

Da die Reihenfolge und Art der Abarbeitung der einzelnen Bestandteile variieren kann, sucht der MySQL-Optimizer anschließend auf der Basis der Parsing-Ergebnisse den effizientesten Weg, die Anfrage zu bearbeiten. Dazu werden die benötigten Lesezugriffe aller möglichen Alternativen ermittelt und die jeweils benötigte Zeit geschätzt. Schließlich wird der vom Optimizer ermittelte Lösungsweg mit der geringsten Durchlaufzeit von der Ausführungs-Engine durch die Nutzung der Speicher-Engine ausgeführt. Das Ergebnis wird dabei im Cache abgelegt und gleichzeitig an den Client zurückgeliefert.

Verarbeitung einer SQL-Query durch MySQL | Grafik: maxclusterVerarbeitung einer SQL-Query durch MySQL | Grafik: maxcluster

Vor- und Nachteile von MySQL

Der Einsatz von Open-Source-Software hat sich besonders im E-Commerce-Hosting etabliert und ist dort in vielen Bereichen präsent. Aufgrund der Lizenzierung von MySQL als OSS entstehen grundlegende Vor- und Nachteile, auf die wir in unserem Blog-Beitrag zum Thema Open-Source im E-Commerce-Hosting eingehen.

Vorteile von MySQL

Ein wesentlicher Vorteil von MySQL ist die breite Unterstützung unterschiedlicher Betriebssysteme, einschließlich verschiedener Linux-Distributionen, Mac OS und Windows. Außerdem gibt es in nahezu jeder Programmiersprache entsprechend vorgefertigte Schnittstellen zur Verwendung von MySQL. Daneben stehen vielfältige externe Tools zur Wartung und zum Betrieb einer MySQL-Instanz sowie eine Vielzahl an unterstützten Speicher-Engines seitens MySQL zur Verfügung.

Da MySQL in den letzten 25 Jahren aufgrund dieser hohen Kompatibilität in vielen verschiedenen Szenarien getestet wurde, gilt das DBMS im Vergleich zu seinen Konkurrenten sowohl beim Schreiben als auch beim Lesen von Daten als besonders zuverlässig und schnell.

Zudem ist der Umgang mit MySQL aufgrund der starken Ähnlichkeit zum standardisierten SQL und der starken Verbreitung schnell und leicht zu erlernen. Sollten hierbei dennoch Probleme auftreten, kann auf ein breites Know-how innerhalb der großen Community zurückgegriffen werden.

Nachteile von MySQL

Anfänglich wurde MySQL nicht für sehr große Datenmengen, wie sie zum Beispiel im Data Warehousing zu finden sind, entwickelt und ist bis heute nicht dahingehend optimiert. Auch wenn MySQL diese Mengen an Daten prinzipiell verwalten kann, kann es nicht effizient mit ihnen arbeiten und stößt schnell an die Grenzen zur Verfügung stehenden Ressourcen. Die Folge ist häufig eine schlechte Performance bei der Verarbeitung von Anfragen.

Im Gegensatz zu den kostenpflichtigen Konkurrenzprodukten stellen die direkten Entwicklungs- und Debugging-Tools von MySQL zudem einen eher geringeren Funktionsumfang zur Verfügung, weshalb häufig auf zusätzliche externe Werkzeuge zurückgegriffen werden muss.

MySQL-Hosting bei maxcluster

Bei maxcluster ist MySQL in unserem E-Commerce-Stack bereits vorkonfiguriert und kann ohne Aufpreis sofort genutzt werden. MySQL ist dabei wahlweise in der Version 5.7 oder 8.0 verfügbar, wobei ein späteres Versions-Upgrade von der Version 5.7 auf 8.0 jederzeit möglich ist.

Unabhängig vom verwendeten E-Commerce- oder Content-Management-System kann MySQL einfach über das Managed Center unter Datenbank & Suche > MySQL mit wenigen Klicks konfiguriert werden. So können neue MySQL-Datenbanken erstellt und anschließend mit Hilfe des ebenfalls vorkonfigurierten Tools phpMyAdmin verwaltet werden, das sich auf Wunsch durch nur einen Klick deaktivieren lässt.

Aktivierung und Konfiguration von MySQL im Managed Center von maxcluster | Quelle: maxclusterAktivierung und Konfiguration von MySQL im Managed Center von maxcluster | Quelle: maxcluster

Im Monitoring Center kann der Zustand der MySQL-Instanz in Verbindung mit den einsehbaren Logdateien jederzeit rückwirkend abgerufen und analysiert werden. Durch unsere Backup-Lösung werden für jede MySQL-Instanz täglich automatisiert Backups mit xtrabackup erstellt und auf Korrektheit bzw. Konsistenz geprüft. Sollte es hierbei zu Problemen kommen, wird das Backup manuell von uns nachgeholt.

Analyse von MySQL im Monitoring Center von maxcluster | Quelle: maxclusterAnalyse von MySQL im Monitoring Center von maxcluster | Quelle: maxcluster

Im Falle eines Datenschadens oder -verlust können die vorgehaltenen MySQL-Backups so kurzerhand über unser Managed Center wiederhergestellt werden. Unsere Linux-Administratoren haben außerdem alle MySQL-Werte immer im Blick und weitere Analysewerkzeuge zur Hand, um bei eventuell auftretenden Problemen sofort proaktiv eingreifen zu können.

Wenn Sie mehr über unseren E-Commerce-Stack oder unsere Managed Services erfahren wollen, freut sich unser Beratungsteam auf Ihre Anfrage per Mail an beratung@maxcluster.de oder telefonisch unter +49 5251 4141 350.

Fazit

MySQL hat die strukturierte Verwaltung von Daten maßgeblich beeinflusst und sich über die letzten Jahrzehnte erfolgreich zum Standard in der relationalen Datenverwaltung – insbesondere für dynamische Webseiten – etabliert. Das liegt vor allem daran, dass sich MySQL in vielerlei Situationen als zuverlässig und performant erwiesen hat. Durch seine breite externe Kompatibilität und die hohe Popularität bietet das DBMS außerdem einen einfachen Einstieg in den Umgang mit Datenbanksystemen.

In der Regel funktioniert eine MySQL-Datenbank dabei mit der mitgelieferten Speicher-Engine InnoDB "out of the box" sehr gut und bedarf nur selten Anpassungen. Wer jedoch großen Wert auf die ursprüngliche Open-Source-Philosophie legt, sollte sich den MySQL-Fork MariaDB, der inzwischen häufig als potenzieller Nachfolger von MySQL gehandelt wird, genauer anschauen.


Veröffentlicht am 20.07.2022 | FZ