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.

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.

SQL
CREATE TRIGGER upstat AFTER INSERT
ON kunde 
FOR EACH ROW BEGIN 
 UPDATE statistik SET  kundenanzahl = kundenanzahl + 1;
 END
Listing 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:

SQL
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.

SQL
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“:

SQL
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.

- Anzeige-

Dieser Artikel stammt aus:

 

Weitere Artikel dieser Ausgabe

AJAX

Revolution oder alter Wein in neuen Schläuchen?

AJAX (Asynchronous Javascript and XML) macht seit einigen Monaten als neuer Heilsbringer für... »

Barrieren im Internet

Erkennen, abbauen, vermeiden

Zehn bis zwanzig Prozent der Weltbevölkerung leiden unter einer Behinderung. Nicht alle... »

Darf es etwas mehr sein?

Multiserver-Szenarien mit TYPO3

TYPO3 hat unterschiedliche Eigenschaften, die seinen großen Erfolg begünstigen: Funktionsumfang... »

Dynamische Bildverarbeitung mit TYPO3

Eine der größten Stärken von TYPO3 sind die zahlreichen Möglichkeiten,... »

Formulare nach Wunsch

Dynamische FlexForms für das TYPO3 Backend mit der Extension DynaFlex

FlexForms sind seit TYPO3 3.6 eine neue Art Eingabemasken im Backend zu definieren. Sie erlauben... »

Innovatives Handwerk

Meister wissen wie’s geht: Komfortabel und effizient mit TYPO3

Optisch und technisch neu präsentiert sich der Internetauftritt des Zentralverbands des... »

Lagebericht

Die TYPO3 Association zieht Bilanz

Mit Ausnahme des Mega-Events TYCON3, der weltweit ersten TYPO3-Konferenz, schien es in den letzten... »

Object-TypoScript-Workshop

Dan Frost in Darmstadt

Am 4. und 5. November 2005 veranstalteten die User Groups Darmstadt und Frankfurt in den Räumen... »

Offen für alle Gruppen

Teamarbeit mit dem Open-Xchange Server

Manchmal entsteht durch geschickte Kombination mehrerer Komponenten ein neues Produkt, das mehr... »

Open Access: Publizieren auf die freie Art

Wer mit wissenschaftlichen Arbeiten zu tun hat oder gerade über seiner eigenen brütet,... »