Technologie · Datenbank

MariaDB — Datenbankbetrieb für Shop, CMS und eigene Anwendungen

MariaDB ist die Datenbank unter fast allem, was wir bauen: Shopware 6, TYPO3, WordPress und eigene Anwendungen auf PHP 8 und Symfony. Wir entwerfen Schemata, setzen Indizes, jagen langsame Abfragen und richten Backups ein, die auch zurückgespielt werden. Die meisten „Performance-Probleme“ eines Shops sind keine Serverfrage. Sie sind eine Index-Frage.

Standarddatenbank im Haus

Was ist MariaDB?

MariaDB ist ein relationales Datenbanksystem: Es speichert die Daten einer Anwendung in Tabellen und beantwortet Abfragen darauf — im Shop etwa Artikel, Preise und Bestellungen.

Wofür wir MariaDB einsetzen

MariaDB läuft unter jedem System, das wir betreuen. Shopware 6 legt darin Artikel, Preise, Kunden und Bestellungen ab, TYPO3 seine Seitenbäume und Inhalte, WordPress seine Beiträge. Dazu kommen eigene Anwendungen auf PHP 8 und Symfony, bei denen wir das Schema selbst entwerfen — Fachlichkeit zuerst, danach die Tabellen. Wer ein Datenmodell nachträglich geraderücken muss, zahlt das über Jahre in Migrationen.

Ein zweiter großer Teil der Arbeit sind gewachsene Bestände aus Altsystemen. Tabellen ohne Fremdschlüssel, Zeichensatzmischungen aus latin1 und utf8, Spalten, deren Bedeutung niemand mehr kennt. Wir übernehmen solche Daten in ein sauberes Modell, stellen durchgängig auf utf8mb4 um und dokumentieren, was wir dabei entscheiden. Das ist unspektakuläre Arbeit. Sie entscheidet aber darüber, ob eine Migration später ein Termin oder ein Projekt ist.

Wie wir damit arbeiten: messen, dann handeln

Bevor jemand über größere Hardware spricht, schalten wir das Slow Query Log ein und sehen nach, welche Abfragen tatsächlich Zeit kosten. Danach kommt EXPLAIN: Liest die Datenbank die halbe Tabelle, weil ein Index fehlt oder weil die Bedingung so formuliert ist, dass er nicht greift? Meistens ist es das. Ein zusammengesetzter Index an der richtigen Stelle ersetzt mehr Serverleistung, als ein Angebot vermuten lässt.

Schemaänderungen laufen bei Symfony-Anwendungen über Doctrine-Migrationen, versioniert und auf einer Kopie geprobt, bevor sie produktiv laufen. Backups gehören zum Managed Hosting auf unseren Servern in Deutschland — und zwar mit Wiederherstellungstest. Ein Backup, das nie zurückgespielt wurde, ist eine Vermutung. Wir überwachen außerdem Verbindungen, Puffergrößen und Plattenplatz, weil eine volle Platte eine Datenbank schneller anhält als jede Lastspitze.

Wann Sie kein Datenbankprojekt brauchen

Nicht jede langsame Seite ist ein Datenbankfall. Wenn ein Shop bei zwei Bestellungen am Tag träge wirkt, liegt es häufiger an unkomprimierten Bildern, an einem überladenen Frontend oder an einer Schnittstelle, die synchron auf ein ERP wartet. Wir messen das erst, bevor wir ein Angebot für Datenbankarbeit schreiben. Manchmal ist die ehrliche Antwort: Hier ist nichts zu optimieren, das Problem sitzt woanders.

Genauso selten brauchen mittelgroße Projekte einen Datenbank-Cluster, eine zweite Datenbanktechnologie daneben oder eine Aufteilung über mehrere Server. Eine gut entworfene MariaDB-Instanz trägt normale Shop- und Portallasten ohne Verrenkungen. Wer stattdessen Replikation, Sharding und einen zusätzlichen Speicher einführt, kauft sich Betriebsaufwand ein, den jemand dauerhaft tragen muss. Das kann richtig sein. Es sollte nur eine Entscheidung sein und kein Reflex.

Projekte mit MariaDB

Ein Auszug — nicht die vollständige Kundenliste.

Häufige Fragen

Warum ist unser Shop langsam, obwohl der Server stark genug ist?

In den meisten Fällen fehlt ein Index, nicht Rechenleistung. Eine Abfrage ohne passenden Index zwingt die Datenbank, große Teile einer Tabelle zu lesen — das dauert unabhängig davon, wie viele Kerne die Maschine hat. Wir schalten deshalb das Slow Query Log ein, sehen uns die teuersten Abfragen mit EXPLAIN an und ändern Index oder Abfrage. Erst wenn danach noch Last übrig bleibt, lohnt das Gespräch über Hardware.

MariaDB oder MySQL — spielt das für unser Projekt eine Rolle?

Für die meisten Web- und Shopprojekte spielt es praktisch keine Rolle, weil Shopware 6, TYPO3 und WordPress mit beiden laufen. Wir setzen MariaDB als Standard, weil sie offen entwickelt wird und in unserem Hosting sauber zu betreiben ist. Relevant wird der Unterschied erst bei speziellen Funktionen oder bei Vorgaben eines Herstellers. In dem Fall prüfen wir die konkrete Anforderung, statt eine Grundsatzdebatte zu führen.

Übernehmen Sie auch eine bestehende Datenbank, die jemand anderes gebaut hat?

Ja, das ist der Normalfall. Sharpness übernimmt gewachsene Bestände aus Altsystemen, sichtet Schema, Indizes und Zeichensätze und schreibt auf, was aufgeräumt werden sollte und was bleiben kann. Danach folgt ein Backup mit Wiederherstellungstest, damit die Ausgangslage gesichert ist, bevor jemand etwas ändert. Änderungen laufen anschließend versioniert über Migrationen. Wir tauschen nichts aus, was funktioniert, nur weil es alt aussieht.

MariaDB im Bestand oder im Neubau?

Wir übernehmen auch Systeme, die woanders gebaut wurden — nach einem Blick in Code und Hosting.

Womit wir sonst arbeiten

Anrufen Projekt anfragen