MySQL 5
Endlich Enterprise: Eine Datenbank wird erwachsen
Die selbstbewusste Sichtweise basiert insbesondere auf neuen Funktionen, die für geschäftskritische Anwendungen wichtig sind. Hierzu gehören in der Datenbank hinterlegte Funktionen und Prozeduren (Stored Procedures), automatisch ablaufende Prozeduren (Trigger) und die Definition von SQL Modes zur Unterstützung der serverseitigen Datenintegrität sowie die seit Weiterentwicklung des mit Version 4.1 eingeführten Datenbankcluster. Mit diesen neuen Features beseitigt MySQL auch weitgehend den jahrelangen Vorwurf unzureichender Funktionen für Anwendungen, die ein Höchstmaß an Datensicherheit verlangen.
Zu den weiteren Neuerungen der Version 5 gehören Datensichten (Views), die Einführung von Metadateninformationen (Information Schema) und die Unterstützung von Transaktionen über verschiedene Datenbanken in heterogenen Umgebungen (XA Transactions). Für die Datenbankadministration steht ein neues Migration-Toolkit zur Übernahme von Daten aus MS Access, MS SQL-Server und Oracle zur Verfügung. Die Möglichkeiten der Fernwartung der Datenbank sind durch den Instance-Manager gegeben, der einen direkten externen Zugriff auf die Datenbankprozesse und deren Parameter erlaubt.
MySQL hat in den vergangenen Jahren die bekannte Massendurchdringung insbesondere bei Internetanwendungen erreicht. Laut Marktforschern von Evans Data hält dieser Trend auch unvermindert an. Von 400 befragten Datenbankentwicklern in den USA setzen 44 Prozent MySQL ein, der Einsatz von MySQL ist im vergangenen halben Jahr um 25 Prozent gestiegen. Dieser Trend wird im Moment durch eine Professionalisierung des gesamten MySQL-Umfelds unterstützt.
Ein Blick auf die Neuerungen
Funktionen und Prozeduren (Stored Procedures) bieten die Möglichkeit, Programmlogik direkt in der Datenbank zu speichern. Während Funktionen auch in SQL-Befehlen aufgerufen werden können und einen gewünschten Rückgabewert liefern, werden Prozeduren mit einem „CALL“ aufgerufen. Ein einfaches Beispiel illustriert dies: Eine häufig wiederkehrende Funktion in Anwendungen ist die Berechnung von Mehrwertsteuerzuschlägen. Die Regel ist, dass Sie den Nettowert sowie den Mehrwertsteuersatz in der Datenbank hinterlegen, um zur Laufzeit der Anwendung den entsprechenden Bruttosatz zu berechnen. Sie können diese Berechnung in der Programmiersprache oder im SQL-Befehl realisieren. Mit den Stored Procedures steht die Möglichkeit zur Verfügung, die Funktion direkt in der Datenbank zu hinterlegen. Im Vergleich zu Funktionen in der Programmiersprache haben diese den Vorteil, dass sie wesentlich schneller ausgeführt werden. Stored Procedures verfügen im Deklarationsteil über die Möglichkeit, Variablen und Bedingungen zu definieren oder sogar Schleifen auszuführen. Hierfür stehen IF-, CASE-, LOOP- oder WHILE-Befehle zur Verfügung. Für den Einsatz von Stored Procedures sind Programmierkenntnisse notwendig. Stored Procedures können sowohl zur Automatisierung von Aufgaben (z B. zur automatischen Generierung von Datenbankauszügen), aber auch in Anwendungen zur Performancesteigerung eingesetzt werden.

Das neue Migration-Toolkit erleichtert die Übernahme von Daten aus MS Access, MS SQL-Server und Oracle.
Trigger
Trigger sind automatisch ablaufende SQL-Befehle, die bei einer Speicherung oder Änderung eines Datensatzes ausgelöst werden. Trigger werden zum Beispiel eingesetzt, um während des Einfügens oder Löschens eines Datensatzes Bedingungen abzuprüfen, die nicht in der eigentlichen Abfrage enthalten sind. Ein anderes praktisches Beispiel ist die Auslösung von Bestellvorgängen, wenn der Warenbestand unter eine definierte Anzahl fällt. Auf diese Weise kann in einer Bestellliste ein entsprechender Eintrag generiert werden.
Aus dem Wesen von Triggern folgt, dass diese bei einem bestimmten Ereignis ausgelöst werden. Dies kann ein Einfüge- (INSERT), Update- (UPDATE) oder Lösch-Vorgang (DELETE) in einer Tabelle sein. Des Weiteren bestimmt die Definition des Triggers, ob vor (BEFORE) oder nach (AFTER) dem Ereignis ausgelöst wird. Über den Zeitpunkt der Auslösung kann die Logik des Triggers entsprechend gesteuert werden. Wenn Sie etwa über einen Trigger eine Statistiktabelle aktualisieren (beispielweise eine Kundenstatistik), würden Sie den Trigger erst nach der Neuanlage oder dem Löschen eines Kundendatensatzes auslösen. Wenn Sie aber eine Überprüfung eines Einfügevorgangs unterstützen, würden Sie das vor der Befehlsausführung tun.
Der folgende Trigger erhöht z.B. nach dem Einfügen eines Datensatzes in einer Kundentabelle automatisch den Kundenzähler in einer Statistiktabelle.
CREATE TRIGGER upstat AFTER INSERT ON kunde FOR EACH ROW BEGIN UPDATE statistik SET kundenanzahl = kundenanzahl + 1; ENDListing 1
MySQL kennt für Trigger bislang nur den Auslösevorgang auf Tabellen- und nicht auf Spaltenebene.
Views
Mit Version 5 wurden in MySQL Datensichten (Views) integriert. Über Views können Abfragen gespeichert werden. Views verhalten sich wie normale Tabellen und stellen dabei virtuelle Tabellen dar, weil Views keine Daten enthalten, sondern nur auf die entsprechenden Spalten der Basistabellen verweisen. Views bieten folgende Vorteile:
- Es besteht die Möglichkeit, einen eingeschränkten Zugriff auf Informationen der Datenbank einzurichten.
- Vereinfachung komplexer Datenbanklogik: Ein Update auf eine View, die aus mehreren Tabellen besteht, ist einfacher als ein Update aller Basistabellen.
- Resultate von Berechnungen müssen nicht in die Basistabellen aufgenommen werden.
Eine View kann beispielsweise mit folgendem Befehl erzeugt werden:
CREATE VIEW v_rechnung (brutto, netto)
AS
SELECT rechnungsbetrag, rechnungsbetrag * (16/100+1) FROM bestellung
Listing 2
In diesem Beispiel wird zu einem Bruttobetrag gleich die Mehrwertsteuer hinzuberechnet. Da eine View gespeichert ist, kann die Abfrage später mit dem in Listing 3 angegebenen Code einfacher erfolgen.
SELECT brutto, netto FROM v_rechnung;Listing 3
Information Schema
Mit dem Information Schema stellt MySQL Metadateninformationen, etwa für Tabellen, Tabellenspalten, Rechten, Zeichensätzen, definierte Views oder Trigger, bereit.
Diese Metadateninformationen sind nützlich, um einen genauen Einblick in die Datenbankdefinition zu erhalten und damit insbesondere für Datenbank-Administratoren interessant. Die Metadateninformationen werden über die Datenbank „information_schema“ bereitgestellt. Diese Datenbank enthält für jede Metadatengruppe eine eigene Tabelle (z. B. TABLES für die Tabelleninformationen oder VIEWS für die definierten Views). Die Metadateninformationen können dann über einen SELECT-Befehl abgerufen werden.
Die folgende Abfrage liefert beispielsweise den eingestellten Zeichensatz, das Erstellungsdatum, das letzte Update auf die Tabelle und den eingestellten Tabellentyp der Tabelle „counter“:
USE information_schema; SELECT TABLE_NAME, TABLE_COLLATION, CREATE_TIME, UPDATE_TIME, ENGINE FROM TABLES WHERE TABLE_SCHEMA = "counter"Listing 4
SQL Modes
Für den Server können ab Version 5 so genannte SQL Modes definiert werden, die das Verhalten des Servers bei Lese- und Schreibvorgängen des Clients definieren. Diese SQL Modes dienen dazu, die Datenüberprüfung sowie das Verhalten der Datenbank in heterogenen Datenbankumgebungen zu regeln.
SQL Mode ist ein globaler Serverparameter und kann beim Start des Servers (mit Startparamter -sql-modes="modes") oder zur Laufzeit (mit SET [SESSION|GLOBAL] sql_mode='modes') gesetzt werden.
Mit den SQL Modes kann zum Beispiel eingestellt werden, dass Datumswerte gültig sind (NO_ZEOR_DATE: keine 0000-00-00), Division durch Null bei „UPDATE“ oder „INSERT“ verhindert wird (ERROR_FOR_DIVISION_BY_ZERO) oder neue Benutzer nicht ohne Passwort erstellt werden können (NO_AUTO_CREATE_USER).
Fazit
MySQL 5 enthält grundsätzlich wichtige Neuerungen, mit denen der Datenbankbetrieb sicherer und effektiver gestaltet werden kann. Mit Views, Triggern und Prozeduren werden auch die fortgeschrittenen Datenbankentwickler bedient. Mit einer Vielzahl an neuen Befehlen und Optionen steigt aber auch die Anforderung an den Datenbank-Administrator.
Bis sich die Neuerungen in der Praxis durchsetzen, wird noch einige Zeit vergehen. Da MySQL insbesondere in Internetumgebungen eingesetzt wird, ist die eingesetzte MySQL-Version vom Internetprovider abhängig, soweit ein Standardangebot ohne eigenen Serverzugang genutzt wird. In der Vergangenheit haben die Internetprovider die Updates von MySQL nachvollzogen – meist jedoch mit einer Verzögerung von sechs bis 18 Monaten. So ist die vor etwa einem Jahr für den Produktiveinsatz freigegebene Version 4.1 heute noch unterrepräsentiert.
Die größte Bremse für die Verbreitung von MySQL 5 werden aber sicherlich die Anwendungsentwickler sein. Gerade weit verbreitete OpenSource-Projekte, wie auch TYPO3, räumen der Abwärtskompatibilität einen relativ hohen Stellenwert ein. So findet man in vielen OpenSource-Projekten noch nicht einmal die Neuerungen von Version MySQL 4.1, wie beispielsweise Unterabfragen. Ein nicht unbeträchtlicher Teil der Zielgruppe verfügt noch nicht über die Voraussetzung für den Einsatz der aktuellen Version und würde somit ausgeschlossen. Die Verbreitung von MySQL 5 wird deshalb wahrscheinlich über Intranetanwendungen oder Individuallösungen erfolgen und erst dann verbreitet in OpenSource-Anwendungen zu finden sein.











