Aus Linux-Magazin 02/2011

Maria DB als MySQL-Alternative

© maxfx, 123RF.com

Seit Version 5.2 ist Maria DB unter den MySQL-Forks eine attraktive Alternative. Nicht nur, dass MySQL-Entwickler Monty Widenius hier persönlich Hand anlegt – die Kombination von Patches und neuen Funktionen bei größtmöglicher Kompatibilität hebt Maria DB unter den Konkurrenten hervor.

Maria DB [1] ist trotz ihrer MySQL-Kompatibilität ein eigenständiges Datenbank-System. Die Mischung aus neuen und aktualisierten Engines, zusätzlichen Funktionen und Performance- und Stabilitäts-Optimierungen machen aus Maria DB mehr als die Summe ihrer Teile. Damit ragt sie auch unter den anderen MySQL-Abkömmlingen und -Patches [2] heraus. Erfreulich, dass Installation und Umstieg in der Regel leicht von der Hand gehen. Maria DB ist ein “Drop-in Replacement” für MySQL. Der Code der aktuellen Version 5.2 basiert auf MySQL 5.1 und garantiert weitgehend, dass bestehende Datenbanken, Queries, externe Clients und Bibliotheken nutzbar bleiben. Es ist möglich, einen bestehenden MySQL-Server durch Maria DB zu ersetzen. Der Download-Bereich stellt hierfür neben den Quellen vorkompilierte und paketierte Versionen bereit [3].

Das Herzstück von Maria DB ist die Aria-Engine [4], die bis Juli 2010 noch Maria hieß [5]. Aria versteht sich als moderner Ersatz für MyISAM, ist weitgehend funktionskompatibel zu MyISAM, kann jedoch, je nach Version, auf Wunsch transaktionale Tabellen führen. Zusätzlich gilt Aria als Crash-sicher, da sie nach einem Serverabsturz die Datenbank bis zum Beginn des letzten »LOCK TABLES« zurückrollt.

Engine-Kompromiss

Bestehende MyISAM-Tabellen lassen sich mit dem folgenden Kommando auf Aria umstellen:

ALTER TABLE `Tabelle` ENGINE=`ARIA`
 TRANSACTIONAL=1;

MyISAM gilt als zuverlässige Datenbank-Engine, die gegenüber Inno DB einen Geschwindigkeitsvorteil bei Tabellen besitzt, auf die hauptsächlich lesende Zugriffe erfolgen. Die Stärken von Inno DB dagegen liegen in Transaktionen und zeilenweisem Locking. Aria bietet einen Kompromiss zwischen den beiden Engines durch eine Kombination der Vorteile von MyISAM mit Datensicherheit, Transaktionen und zunehmenden Performance-Steigerungen.

Da an der Aria-Engine weiterhin stark entwickelt wird, ist es sinnvoll, den Projektfortschritt genau zu beobachten. Als weitere Features sind beispielsweise zeilenweises Locking, Group-Commits und volle Unterstützung für »COMMIT/ROLLBACK« geplant. Für MySQL 6.0 streben die Entwickler die Aufnahme der Engine als offizielle MySQL-Engine an.

Die bekannte Storage-Engine Inno DB ersetzt Maria DB durch Xtra DB [6] – eine auf dem Inno-DB-Plugin basierende Weiterentwicklung. Trotz des neuen Namens erscheint Xtra DB in »SHOW ENGINES« als »InnoDB«, da sie diese vollständig ersetzt. Neben einigen Performance-Optimierungen bietet Xtra DB beispielsweise Prozesszeiten in Millisekunden in der Datei »slow.log« sowie die Möglichkeit, den Inno-DB-Buffer vor dem Neustart eines Servers zu sichern, um die Warmlaufphase drastisch zu reduzieren. Für Anwender, die sich ausschließlich für Xtra DB interessieren, ist eventuell der Percona-Server eine Alternative [7].

Neuerungen in MySQL
5.5

  • Inno DB löst MyISAM als Standard-Engine für neue
    Tabellen ab.
  • Verbesserte Skalierung auf Mehrprozessor-Systemen.
  • Erweiterte Unterstützung für Unicode
    (»utf16«, »utf32m«,
    »utf8mb4«).
  • Verbesserte XML-Unterstützung (unter anderem »LOAD
    XML«).
  • Pluggable Authentication.
  • Neue »TO_SECONDS()«-Funktion konvertiert
    Datums-Angaben in Sekunden seit dem Jahr 0.
  • Optional semisynchrone Replikation für erhöhte
    Datenintegrität.

Statistiken

Maria DB 5.2 bietet zusätzlich Nutzungsstatistiken [8], zum Beispiel wie in Abbildung 1. Nach dem Aktivieren des Feature durch den Eintrag »userstat = 1« in der Konfigurationsdatei »my.cnf« aggregiert Maria DB in flüchtigen Tabellen unter anderem Daten über Tabellen- und Index-Nutzung. Neue »SHOW«-Befehle liefern ausführliche Laufzeit-Informationen über Häufigkeit von Lese- und Schreibzugriffen. Ohne aufwändiges Auditing ist es zum Beispiel möglich, ungenutzte Indizes oder zu häufig gelesene Tabellen zu identifizieren.

Abbildung 1: Maria DB 5.2 legt Nutzungsstatistiken an, die sich auch mit »SELECT« anzeigen lassen.

Abbildung 1: Maria DB 5.2 legt Nutzungsstatistiken an, die sich auch mit »SELECT« anzeigen lassen.

Listing 1: Virtuelle
Spalten

01 MariaDB []> INSTALL PLUGIN socket_peercred SONAME 'auth_socket.so';
02 Query OK, 0 rows affected (0.00 sec)
03 
04 MariaDB []> CREATE USER ccm IDENTIFIED VIA socket_peercred;
05 Query OK, 0 rows affected (0.00 sec)

In Anlehnung an Oracle und MS SQL unterstützt Maria DB virtuelle Spalten [9]. Dabei handelt es sich um berechnete Spalten, die die Datenbank indirekt über eine Funktion auf der Basis von Werten innerhalb der jeweiligen Zeile befüllt. Ein einfaches Beispiel – es berechnet Brutto- und Steuer-Beträge auf der Basis von Netto-Beträgen – zeigt Listing 1.

Authentifizierung

Mit Version 5.2 hat Maria DB das “Pluggable Authentication Framework” eingeführt [10]. Neben der klassischen MySQL-Authentifizierung stehen damit nahezu beliebige, auch mehrstufige, Authentifizierungswege bereit. Einige einfache Beispiele sind bereits implementiert. Komfortabel ist die »socket_peercred«-Methode, die einen Nutzer anhand seines umgebenden Shell-Login erkennt. Listing 2 zeigt, wie der Admin das Plugin aktiviert und einen dadurch authentifizierten Benutzer einrichtet.

Listing 2: Pluggable
Authentication

01 MariaDB [test]> CREATE TABLE steuern (
02     -> netto FLOAT NOT NULL,
03     -> brutto FLOAT AS (netto*1.19));
04 Query OK, 0 rows affected (0.10 sec)
05 
06 MariaDB [test]> INSERT INTO steuern VALUES (100,default);
07 Query OK, 1 row affected (0.00 sec)
08 
09 MariaDB [test]> SELECT * FROM steuern;
10 +--------+-------+
11 |  netto |brutto |
12 +--------+-------+
13 |    100 |   119 |
14 +--------+-------+
15 1 row in set (0.00 sec)
16 
17 MariaDB [test]> DESCRIBE steuern;
18 +--------+-------+------+-----+---------+---------+
19 | Field  | Type  | Null | Key | Default | Extra   |
20 +--------+-------+------+-----+---------+---------+
21 |  netto | float | NO   |     | NULL    |         |
22 | brutto | float | YES  |     | NULL    | VIRTUAL |
23 +--------+-------+------+-----+---------+---------+
24 2 rows in set (0.01 sec)

Die modulare Authentifizierung ist übrigens auch ein Feature der kommenden Version 5.5 von MySQL. Der Kasten “Neuerungen in MySQL 5.5” listet auf, was sie noch bringt.

Ein optionaler Thread-Pool bietet bei Maria DB eine Alternative zum bisherigen Ein-Client-pro-Thread-Modell, das in bestimmten Nutzungsszenarien nachteilig sein kann [11]. Der Thread-Pool entkoppelt die Verbindungen zur Datenbank von den eigentlichen Threads.

Frischzellenkur

Maria DB erfindet das Rad nicht neu, unterzieht MySQL aber einer notwendigen Frischzellenkur. Die hier nur im Groben skizzierte Zusammenstellung neuer Funktionen und der professionelle Hintergrund machen Maria DB zu einer attraktiven Alternative zum MySQL-Community-Server.

Die progressive Aufnahme von Patches ermöglicht es schon heute, Funktionen zu nutzen, die erst in Monaten, Jahren oder auch nie im offiziellen MySQL-Server erscheinen werden. Größter Wermutstropfen ist die Dokumentation, die derzeit aus einer Mischung aus Knowledge Base auf der Website Askmonty.org und der bekannten MySQL-Dokumentation besteht. (mhu)

Infos

[1] Maria DB: [http://mariadb.org]

[2] Caspar Clemens Mierau, “Moderne MySQL-Forks und -Patches”: ADMIN-Magazin 03/10: [http://www.admin-magazin.de/content/moderne-mysql-forks-und-patches]

[3] Quellen und Pakete: [http://askmonty.org/wiki/MariaDB:Download]

[4] Storage-Engine Aria: [http://kb.askmonty.org/v/aria-storage-engine]

[5] Namensänderung: [http://askmonty.org/wiki/Rename_Maria]

[6] Xtra DB: [http://www.percona.com/docs/wiki/percona-xtradb:features:start]

[7] Percona-Server: [http://www.percona.com/docs/wiki/percona-server:start]

[8] Statistiken: [http://kb.askmonty.org/v/user-statistics]

[9] Virtuelle Spalten: [http://kb.askmonty.org/v/virtual-columns]

[10] Authentifizierung: [http://kb.askmonty.org/v/development-pluggable-authentication]

[11] Thread-Pool: [http://kb.askmonty.org/v/pool-of-threads]

Der Autor:

Caspar Clemens Mierau ist Medien-Kulturwissenschaftler, arbeitet an seiner Dissertation über Entwicklungsumgebungen und berät mit seinem Projekt Screenage auch Firmen wie Moviepilot.de, Artfacts.net und Aperto.de.

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben