mysql ist eine Neuentwicklung aus Schweden. Man kann die jeweils aktuelle Version als Source von http://www.tcx.se herunterladen. Aktuell ist im Moment noch Version 3.20.20, in den nächsten Wochen wird die stark verbesserte Version 3.21 erwartet. Zu mysql gibt es zwei Mailinglisten, eine für Ankündigungen, die andere zur Diskussion und für Bugreports. Achtung, auf der zweiten Mailingliste herrscht reger Verkehr. Auf der Web-Seite gibte es auch vorkompilierte binary-Versionen. Allerdings bekommt man die aktuelle Version meist nur für Solaris oder BSD vorcompiliert. Etwas ältere Versionen gibt es auch für Linux als binary (auch als RPM).
Auf dem selben Server findet man auch einen 32-bit-ODBC-Client (für Windoof-95 oder NT). Außerdem gibt es Programmierschnittstellen für C (native und ODBC für UNIX), Perl, Tcl/Tk, PHP/FI, Phyton und einen JDBC-Treiber für Java (Typ 4 - native protocol, Java only). Letzterer hat allerdings die dumme Eigenschaft, für jedes parallel laufende Statement eine neue Connection eröffnen zu müssen.
Die Lizenzpolitik des Herstellers von mysql (TCX Consulting) besagt, daß man die Datenbank frei nutzen darf. Das gilt ausdrücklich auch für Webserver oder geschäftliche Anwendungen. Man muß nur etwas bezahlen, wenn man mysql in eigene Produkte einbaut und diese verkauft.
mysql ist mit einer Multi-Threaded/Single-Server Architektur realisiert. Dadurch ist der Aufbau einer neuen Verbindung sehr schnell und mehrere Anfragen können vom gleichen Cache profitieren.
Leider implementiert mysql bisher nur einen Teil des SQL-Standards. Es fehlen Sub-Selects und es gibt massive Einschränkungen in der WHERE-Klausel. Diese Probleme sollen in 3.21 aber gelöst sein. Eine Unterstützung für Views, Transaktionen, statisches SQL, Prepared Statements, Stored Procedures, Trigger, referentielle Integrität oder Scrollable Cursors ist allerdings nicht in Sicht. Das hat leider die Auswirkung, daß die Datenbank sehr schwierig zu Nutzen ist, wenn es um Online Transaction Processing mit einer umfangreichen Datenbankstruktur (viele verbundene Tabellen) geht. Man muß aber sagen, daß mysql in einem rasanten Tempo weiterentwickelt wird, man darf hier durchaus gespannt sein.
Durch den recht brauchbaren ODBC-Treiber ist mysql gut geeignet, Datenbestände aus PC-Anwendungen (dBase, Access) zu zentralisieren.
Fragen zu mysql werden auf der Mailingliste vom Entwickler selbst postwendend beantwortet. Bugs treten zwar noch auf, werden aber meist in kurzer Zeit behoben und entsprechende Patches nachgereicht.
mysql verfügt über einen riesigen Satz eingebauter Zusatzfunktionen (Stringvergleiche, reguläre Ausdrücke, Datumsarithmetik u.v.m.), die sich im Moment nur in der HAVING-Klausel nutzen lassen. Ich persönlich rate allerdings jedem ab, diese zu Nutzen, falls die Chance besteht, seine Anwendung könnte irgendwann auf einer anderen Datenbank laufen.
Ein großes Manko ist die fehlende feingranulare Berechtigungssteuerung. Man kann nur Rechte bezogen auf Datenbank, Benutzername und Hostname vergeben, und das noch dazu in einer haarstreubend verkomplizierten Art und Weise.
Noch eine grobe Abweichung vom Standard: Indexe lassen sich nur über CREATE TABLE oder ALTER TABLE anlegen, CREATE INDEX ist eine Dummy-Funktion.
Der Standard-Client mysql verwendet die Readline-library und läßt sich (besonders im Gegensatz zu ingres oder mSQL) wirklich schön bedienen. Er kann gleichzeitig sehr einfach aus Shellscripten genutzt werden und liefert in diesem Fall seine Daten in einem Format, welches sich mit Standard-Tools gut weiterverarbeiten läßt. Damit läßt sich mysql auch sehr einfach in CGI-Scripte einbinden.
mysql hat eine Reihe von Eigenschaften und Werkzeugen, die das Ablösen einer mSQL-Datenbank erleichtern. So sollten sich mit msqldump ausgegebene Daten einfach importieren lassen.
Da man bei binary-Versionen an einen bestimmten Installationspfad gebunden ist, ist IMHO die source-Version vorzuziehen. Man benötigt außerdem nicht allzu alte Entwicklungswerkzeuge (gcc ab 2.7.2, libc ab 5.4.13). Weiterhin wird auch LinuxThreads, Version 0.5 benötigt. Das bekommt man auf der gleichen Web-Seite wie mysql. Neuere Versionen von mysql laufen auch mit der glibc und LinuxThreads 0.6.
Zuerst muß man LinuxThreads übersetzen. Dazu packt man das Archiv in einen geeigneten Pfad aus, und verfährt nach dem enthaltenen README. In Kurzfassung:
Dann packt man das mysql-Archiv aus. Auch hier ist die Installation recht einfach und in einer Datei INSTALL_SOURCE erklärt. In Kurzfassung:
Im mysql-Archiv sind die FAQs in den Formaten texinfo, Postscript und HTML enthalten. Diese helfen in den meisten Fällen weiter.
Auf www.tcx.se findet sich auch eine richtige Dokumentation mit ausführlichem SQL-Teil. Der Autor (Mike Miller) hat diese in Word geschrieben und nach Postscript und HTML konvertiert (mir unverständlich, warum tut er sich das an).
Weiterhin findet man auf der Webseite ein Archiv der Mailingliste, welches man bei Problemen zuerst durchsuchen sollte.
Wenn man mysql wirklich einsetzt, sollte man sich in die Mailingliste einschreiben.