Wozu werden
beispielsweise alle Artikel in einer Datenbank eines
Datenbankmanagementsystems wie MySQL abgelegt?
Diese Frage kommt auf wikitech-l immer wieder und wieder auf. Wir
brauchen das wirklich nicht jede Woche von Neuem durchzukauen. RDBMSe
haben ihre klaren Vorteile, und Wiki-Systeme, die auf Dateien basieren
(wie Twiki und MoinMoin) sind für Riesenwebsites wie Wikipedia unbrauchbar.
Die Frage bezog sich nicht aufs RDBMS (das ist in der Tat für unsere
größenordnung zwingend), sondern auf mySQL im speziellen - für unsere
Größenordnung wird das Ding nämlich langsam zu klein. Die Grundkritik war
eigentlich, dass die Software keine Abstraktionsschnittstelle von der
Datenbank hat. Sie benutzt native mySQl-Features, und die machen es extrem
schwierig, jetzt auf eine andere Datenbank (z.b. PostgresSQL) zu wechseln,
die mit dem Datenvolumen besser klar kommt (weniger Locking-Probleme bereiten
würde etc.)
Die Volltextsuche ist ein anderes Thema; damit habe
ich wenig Erfahrung,
und ich weiß nicht, was es neben DBMSen da für Alternativen gibt. Evtl.
ist dafür ein anderes System besser geeignet.
Eigentlich sollten wir eine eigene Volltext-Suche schreiben (bzw. ein möglw.
existierendes OpenSource-System verwenden). Der Trick wäre, eine Indizierung
neben der eigentlichen Datenbank aufzubauen, etwa per Joblauf zu
aktualisieren (es müssten jeweils nur geänderte Artikel betrachtet werden,
und an die ist schnell darnzukommen). Also: Nicht die Texte durchuschen (im
Moment haben wir glaube ich irgendwelche %like%-Suchen über mySQL?), sonden
vorbereitete Index-Tabellen. Wenn's da noch nichts Opensourciges-gibt: Die
Algorithmen für sowas sind zumindest bekannt und gut publiziert.
Uli