hotti: Wiki: DB vs. file

Beitrag lesen

Moin,

Meine Frage:
Wo liegen die Unterschiede (Vorteile/Nachteile) zwischen filebasierter und datenbankgestützer Wiki-Software?

Bei einem Wiki ist die Durchsuchbarkeit wichtig, die ist über eine DB recht einfach zu realisieren, allerdings muss da zur Feinabstimmung ggf. in die Serverkonfiguration eingegriffen werden, es wäre also abzuklären inwiefern das erforderlich und auch möglich ist (falls MySQL, siehe dort).

Für die Durchsuchbarkeit von Dateien ist eine geeignete Library erforderlich, die über einen Index arbeitet, so dass nicht bei jedem Suchvorgang der ganze durchsuchbare Content (eine oder mehrere Dateien) in den Hauptspeicher geladen werden muss.

Ein Wiki, an dem es mehrere Autoren gibt, sollte multi-user-fähig sein, d.h., hierzu gäbe es Vorkehrungen zu treffen, dass keine Race-Conditions auftreten, Stichwort 'lock', 'atomare prozesse', dies wäre bei beiden Formen der Datenhaltung zu beachten.

Falls der gesamte Content in einer einzigen Datei gehalten wird, bei einem Update landet der komplett im Hauptspeicher, die Datei muss neu geschrieben werden. Bei einer Datenhaltung in DB sind die Datenmengen im Hauptspeicher des Webservers i.d.R. kleiner.

Wenn Dein Server eine persistente DB-Verbindung halten kann, laufen Insert/Update sehr performant. Wenn jedoch bei jedem Aufruf der Website jedesmal eine neue DB-Verbindung aufgebaut werden muss, dauert das länger, als eine lokale Datei zu öffnen, das wäre auch abzuwägen.

200 Seiten sind nicht viel. Eine A4-Seite mit aufgelockerten Text (Leerzeilen...) hat vielleicht 5 kB, in einer Datei hätten wir dann ~1MB und über einen geeigneten Index wird für die Suche nur ein Bruchteil davon in den RAM geladen, vielleicht ein 1/100 .. 1/50, je nach Lib.

Die Bilder sollte in jedem Fall der Webserver bitteschön selbst aus dem Dateisystem laden.

Interessant sind vielleicht noch abstrakte Klassen, die so beschaffen sind, dass in der Anwendung selbst nur mit Datenstrukturen/Methoden gearbeitet wird, der Code ist unabhängig von der Art der Datenhaltung.

Hotti