Weiteres zu Drupal

Was mir bei meinen Spielereien mit Drupal noch aufgefallen ist: im Unterschied zu WordPress ist das Datenbankmodell recht komplex. WordPress ist ziemlich stumpf - einfach ein paar Tabellen mit Daten drin, das meiste recht straight forward. Wenn man was ändern will kann man jederzeit auf SQL Ebene damit rumwurschteln und z.B. Importscripte, Reparaturscripte etc. schreiben. Alles wird immer on the fly ermittelt - Zähler, Listen etc.

Drupal hingegen benutzt recht aufwändige Caching-Mechanismen in der Datenbank. Auch Sachen aus dem Filesystem werden gecached. Dadurch hat man mit kleinen Scripten höheren Aufwand, da man wesentlich mehr Stellen berücksichtigen muss - mindestens den Cache beseitigen, damit er rekonstruiert wird. Auch ist das Datenmodell wesentlich stärker ausnormalisiert. Das ist natürlich gut vom Design her - aber für kleine Scripte natürlich aufwändiger, da man an mehr Stellen anpacken muss.

Das ist jetzt keine Wertung, nur eine Beobachtung - beides hat Vor- und Nachteile. Die Vorteile des Drupal-Ansatzes scheinen sich in der Performance zu zeigen, die nicht nur wegen der etwas aufgeräumteren PHP-Struktur etwas besser als die von WordPress scheint (wobei ich da keine harten Zahlen habe - erst brauche ich ein brauchbares Import-Script für meine Postings um mit gleichen Ansätzen zu arbeiten).

Was mir noch aufgefallen ist: die PostgreSQL-Unterstützung (ja, ich habs jetzt endlich laufen!) in Drupal ist definitiv hinter der von MySQL zurück. Zum Teil gibts mit PostgreSQL Fehlermeldungen die mit MySQL nicht auftreten. Zum Beispiel beim Passwort-Wechsel gabs Probleme weil ein nicht existentes Feld angesprochen wurde. Oder bei der Übersicht der im Newsreader abonnierten Quellen gabs ne Meldung weil ein nicht-aggregiertes Feld eines komplexen SELECTs nicht als Gruppierungsfeld aufgeführt wurde. Oder beim ersten Zugriff, wo für das Feld uid in der Tabelle sessions kein Wert angegeben wurde, obwohl es als NOT NULL deklariert ist. PostgreSQL ist halt deutlich pingeliger als der Karteikasten. Mit PostgreSQL wird man definitiv Hand an den PHP-Code legen müssen. Mal schauen, wenn ich fertig bin mache ich vielleicht mal einen Patch fertig, der diese Probleme behebt. Bis jetzt sinds nur Kleinigkeiten, die aber für Nicht-Programmierer durchaus eine Hürde darstellen können. Zum Teil basieren die aber sicherlich auch auf den etwas älteren Versionen aus der Debian Stable (z.B. ist das PgSQL API in PHP in neueren Versionen deutlich anders benannt als in der 4.1.2).

tags: CMS, Drupal