[linux-l] Vorbehalte gegen MySQL (was: MySQL PostgreSqL Drupal)

Volker Grabsch vog at notjusthosting.com
Fr Dez 28 01:57:00 CET 2007


On Thu, Dec 27, 2007 at 02:05:04PM +0100, Michael Sucha wrote:
> Und seit wann ist MySQL keine *richtige* Datenbank?

Besser wäre die Frage: Seit wann ist MySQL eine richtige DB? ;-)
Im Ernst: Muss man das wirklich erklären? Olafs Bemerkung ist sicher
provokant, aber es ist nicht lange her, da war das eine ernstzunehmende
Kritik.

Inzwischen hat MySQL endlich auch Transaktions-Unterstützung. Solange
es das nicht hatte, war es keine /richtige/ Datenbank. Ein SQL-Interpreter
mit Mehrbenutzerzugriff verdient noch nicht den Titel "Datenbank".

Inzwischen ist MySQL zu einer Datenbank geworden, wird aber dennoch
von vielen Datenbanklern abgelehnt. Die mir bekannten Gründe fasse ich
mal zusamen. Dabei beschränke ich mich auf gängige /Eindrücke/. Sollten
einige davon falsch sein, bitte ich um Korrektur:


1) Fehlende Features und Langsamkeit
------------------------------------

   Obwohl endlich Sub-SELECTs unterstützt werden, beherrscht MySQL
   nach wie vor nur einen kleinen Teil von SQL.

   Sub-SELECTs und Transaktionssicherheit sorgen für heftige Performance-
   Einbrüche. Genauso die Verwendung und Verknüpfung von sehr vielen
   Tabellen.

   Das ist natürlich nur bei richtig großen Projekten von Bedeutung,
   zeigt aber, dass MySQL eher für kleine Datenmengen bzw. einfache
   Datenschemas geeignet ist.[1]  In diese Nische ist aber auch
   PostgreSQL längst vorgedrungen.


2) Entwicklungsgeschichte
-------------------------

   In PostgreSQL wurde zuerst Wert darauf gelegt, möglichst viel vom
   SQL-Standard umzusetzen, mit Transaktionen und allem Drum und Dran.
   Erst später wurde die Geschwindigkeit erhöht. MySQL ging den
   umgekehrten Weg, was auf Außenstehende den Eindruck von verfrühter
   Optimierung macht.

   Der Eindruck wird dadurch verstärkt, dass MySQL-Backends /mit/
   Transaktionsunterstützung deutlich langsamer sind.


3) Politische Gründe
--------------------

   PostgreSQL ist ein freies Projekt, MySQL wird von einer Firma
   vermarktet. Der Umgang mit Kontributoren spricht klar für
   PostgreSQL, wie Olaf Radicke vor längerer Zeit schon berichtete.
   Das spiegelt sich auch in den Lizenzen wider (BSD-Lizenz vs.
   GPL + prop. Lizenz).

   Auch viele unseriöse Benchmarks erwecken den Eindruck, dass
   MySQL vorallem durch gutes Marketing, nicht durch Qualität,
   eine so weite Verbreitung hat. Das merkte man besonders gut an
   dem Aufschrei um den ersten Benchmark, der "PostgreSQL schneller
   als MySQL" diagnostizierte.


4) Verbreitung durch Hostinganbieter
------------------------------------

   MySQL war lange Zeit /die/ Datenbank für PHP-Webapplikationen
   schlechthin. Das Schlagwort LAMP kommt noch aus dieser Zeit.
   Selbst heute bekommt man preiswertes Webhosting vorrangig mit MySQL.

   PHP hatte viel lange Zeit keine guten DB-Abstraktionslayer wie
   Perl:DBI oder Java/JDBC. So waren die meisten Webapplikationen
   unnötigerweise MySQL-spezifisch. Das wurde zur selbsterfüllenden
   Prophezeihung:

        die meisten Webapps sind MySQL-spezifisch
    ->  höhere Nachfrage für MySQL-Webhosting
    ->  MySQL-Webhosting preiswerter als PostgreSQL-Webhosting
    ->  Neulinge kommen zuerst mit MySQL in Berührung
    ->  die meisten Webapps sind MySQL-spezifisch

   Wichtig ist, dass gutes MySQL-Marketing diesen Kreislauf in Gang
   gebracht hat: "weniger Features, aber dafür robuster und schneller".
   Obwohl das so nicht mehr stimmt, existiert dieser Kreislauf weiter.
   Von sowas distanziert man sich natürlich.

   (Mit dem neuen RubyOnRails-Hype wird dieser Kreislauf zunehmens
    durchbrochen: Ein neuer Markt bedroht die PHP-MySQL-Monokultur.
    DB-Abstraktion wird modern.)


Gruß,

    Volker


[1] Unser Datenbanken-Professor nennt das auch "Mickey-Maus-Anwendungen".

-- 
Volker Grabsch
---<<(())>>---
Administrator
NotJustHosting GbR



Mehr Informationen über die Mailingliste linux-l