[linux-l] Dateisystem als Datenbank (was: Wiki mit oder ohne DB?)

Volker Grabsch vog at notjusthosting.com
Fr Okt 14 16:10:57 CEST 2005


On Thu, Oct 13, 2005 at 07:41:45PM +0200, Olaf Radicke wrote:
> Mir kam die Überlegung, wann ein Wiki mit Datenbank sinnvoll ist und wann 
> nicht. Ohne DB ist die Installation einfacher. Und offenbar ist die DB öfter 
> mal auch Geschwindigkeitsproblem (siehe Wikipedia).

Allgemein gilt für Wikis (und jedes andere CMS), dass sehr viel mehr
gelesen als geschrieben wird. Ausnahmen bestätigen die Regel. :-)

Für diesen Typus von Datenverwaltung sind hierarchische Datenstrukturen
besser geeignet als relationale, d.h. ein LDAP-System ist der SQL-DB
vorzuziehen ... natürlich nur, soweit die Daten sich einfach
hierarchisch realisieren lassen. Konkret beim Wiki ist nochmals viel
einfacher, sodass man keinen LDAP braucht, sondern direkt die system-
interne hierarische Datenbank nutzen kann ... auch "Dateisystem"
genannt :-)

Wenn man also ein gutes Dateisystem hat, bietet das bereits die beste
Wiki-Datenbank. Aber natürlich nur, wenn man die vielen anderen Vorzüge
von "echten" Datenbanken nicht benötigt ... in einem Wiki aber i.d.R.
nicht. SQL-Datenbanken sind gerade für die  Web-Entwicklung mit PHP
einfach "trendy", "Mainstream" ... da wird es nunmal leider überbewertet
und nicht immer sinnvoll eingesetzt.

Eine ganz wesentliche Sache vielleicht noch: Konkurrierender Zugriff ist
natürlich beim Dateisystem immer ein Problem. Da braucht man einen guten
Mechanismus (z.B. Lock-Files bzw. Lock-Directories). Hier haben die
Datenbankserver natürlich wieder den Vorteil, dass sie sich selbst darum
kümmern.


Im Zusammenhang mit den Wikis sollte man sich noch Versionskontrollen
ansehen, weil dort datenbanktechnisch die gleichen Probleme herrschen.
Anfangs hat Subversion eine Berkeley-DB als Backend gehabt, also den
typischen Datenbank-Ansatz gewählt, während seit Subversion 1.1 auch
das "FSFS" möglich ist, d.h. die versionierten Dateien liegen als solche
im Dateisystem. FSFS bringt je nach Anwendungsfall mal bessere Performance,
mal schlechtere. Aber auf jeden Fall bietet es mehr Stabilität, mehr
Transparenz und entsprechend einfacheres Backup. Auch im Subversion-
Projekt wurde also verstanden, dass es schon eine weit verbreitete gute
hierarchische Datenbank gibt: das Dateisystem.


Ich finde es außerdem ein Unding, dass die meisten Wikis von
vornherein auf ein bestimmtes Backend fixiert sind ... MediaWiki auf
MySQL-Datenbanken, MoinMoinWiki auf RCS+Dateisystem, u.s.w.
Dabei wäre ein MediaWiki, das RCS einsetzt, sicher auch wünschenswert.
Oder ein MediaWiki, das CVS bzw. Subversion benutzt. Wenn ich z.B. ein
Wiki nutze, um ein Software-Projekt zu dokumentieren, dann will ich
diese Dokumentation eigentlich mit in meinem Subversion-Repository
haben. Dieses könnte die Authentifizierung übernehmen, und außerdem
wäre die Doku dann im doc/-Unterverzeichnis des Projektes, und nicht
in einem extra System mit extra Datenbank und extra Accounts.

Okay, es gibt auch Wikis, die intern Subversion benutzen, aber die
haben wieder ein paar Wiki-Features zu wenig, sodass ich doch wieder
DokuWiki oder MediaWiki einsetzen muss. Dass jedes Wiki auf ein
bestimmtes Backend fixiert ist, führt zu einem Zustand, der einen
daran hindert, sich aus allen das Beste zu nehmen (z.B. DokuWiki-Sprache
mit MediaWiki - Webinterface und mit Subversion als Backend) ...
stattdessen muss man den Kompromiss des geringstens Übels nehmen.
(Was ist wichtiger? Geeignete Wiki-Sprache, gutes Webinterface oder
schöne SVN-Integration? Arghh ...)


Viele Grüße,

	Volker

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



Mehr Informationen über die Mailingliste linux-l