Drupal und die nicht optimierte Datenbank
6. April 2010
Drupal kann viel, darüber sind wir uns einig, was Drupal allerdings nicht gut kann, ist eine Datenbank so zu generieren, dass aufgrund geeigneter Indizes eine schnelle Datenauswahl möglich ist. Das Code-Modul ist dabei ganz gut aufgestellt, und dem CCK ist eigentlich auch keine Schuld zuzusprechen, da es ja nur für die Datenerfassung zuständig ist. Schuld ist eher die vollkommen offene Architektur von Drupal, und somit das Views-Modul.
Dies ist kein Nachteil von Drupal, eher im Gegenteil! Zusammen mit dem CCK und Views kann ich jede erdenkliche Datenstruktur in Drupal abbilden und in jeder beliebigen Form darstellen. Dabei ist die Datenbank durchaus normalisiert und setzt man zusätzlich eine Taxonomy ein, dann kann es durchaus passieren, das ein Join über mehrere Tables durchgeführt wird, die durchaus keinen Indexe besitzen.
Bei einem „kleinen Blog“ wird dies nicht weiter auffallen, aber wenn man von größeren Seiten mit größeren Datenbeständen ausgeht, führt das schnell zu einem Problem. Hier werden die Anfragen in MySQL so langsam, dass eine geeignete Suche nicht möglich ist. Hier kann man sich entweder auf das Caching von Drupal verlassen, oder die Datenbank optimieren. Dies kann auf zwei Arten erfolgen:
a) Per Hand (z. B. mit phpMyAdmin)
b) Mittels des Plugins DB Tuner
Letzteres ist durchaus die einfachere Möglichkeit, die durchaus noch Optimierungsmöglichkeiten am Core gefunden hat, die einfach eingebunden werden können. Gerade bei großen Datenmengen, bei denen der Benutzer die Daten selbst filtern kann, und somit das Caching vor Problemen gestellt wird, spielen die Optimierungen ihre volle Leistung aus. Wer mit Views arbeitet, sollte sich das Plugin einmal ansehen, es macht sehr viel Sinn!

15. April 2010 um 14:38 Uhr
Leider gibt es für das Plugin noch keine Drupal 7 dev. Version. Werde es aber auf jeden Fall im Auge behalten.
15. Januar 2011 um 12:55 Uhr
Wird das plugin dauerhaft benötigt oder eher nur punktuell? Also ordne ich damit meine DB oder verändert das Plugin vielmehr die Schnittstelle, so dass es permanent implementiert sein muss?
17. Januar 2011 um 08:56 Uhr
Das Plugin ändert die Datenbankstrukturen von MySQL selbst, und ändert nichts an der API.