Forum: PC-Programmierung Braucht es wirklich eine Datenbank für ein einfaches Forum?


von emi (Gast)


Lesenswert?

WIeso kann man nicht einfach ein Textfile anlegen und jedes mal wenn 
jemand was in ein Forum hineinschreibt wird dort  etwas angehängt und 
danach kommt ein Trenner.
Wenn jetzt die Forenseite geladen hat, dann erscheint es mit Hilfe eines 
Php-Skripts welches das Textfile ausliest.

Was spräche dagegen?

von Peter II (Gast)


Lesenswert?

emi schrieb:
> Was spräche dagegen?

wie willst du Einträge löschen? Was ist wenn 2 Einträge gleichzeitig 
hinzugefügt werden?

Wie willst du schnell suchen?

von tk (Gast)


Lesenswert?

Prinzipiell spricht nichts dagegen, kann in ausgewählten 
Anwendungsfällen sogar perfomanter sein. In manchen Wiki-Systemen wird 
es beispielsweise genau so gehandhabt.

Bei einem Forum schaffst du dir dabei jedoch diverse Probleme, da du 
durchaus komplexere Datenstrukturen hast und auch gleichzeitige Zugriffe 
synchronisieren musst. Wenn du das alles verwalten willst, bist du 
letztendlich wieder bei einem Datenbanksystem. Auch ein Datenbankserver 
schreibt den ganzen Kram letztendlich in Dateien.

von tk (Gast)


Lesenswert?

Nachtrag:
Es soll jetzt keine echte Empfehlung sein, aber wenn du unbedingt auf 
einen Datenbankserver verzichten willst, könntest du dir mal dBase 
anschauen. Wird direkt von PHP unterstützt und für kleine Projekte 
könnte man sich evtl. mit den Nachteilen arrangieren.

von eric (Gast)


Lesenswert?

Alles in eine Datei führt schnell zu Performanceproblemen, im 
schlimmsten Fall muss jede Operation die Datei einmal abarbeiten. 
Gleichzeitige Zugriffe werden auch ein Problem.

Man könnte beispielsweise eine Datei pro Thread verwenden und - oh 
Wunder - schon benutzt man das Dateisystem als einfache Datenbank.

von Jan H. (j_hansen)


Lesenswert?

emi schrieb:
> Wenn jetzt die Forenseite geladen hat, dann erscheint es mit Hilfe eines
> Php-Skripts welches das Textfile ausliest.
>
> Was spräche dagegen?

Prinzipiell nichts. Solange es ein Mini-Forum ist. Performant ist es 
halt nicht, wenn du bei jedem Seitenaufruf die Datei lesen und parsen 
musst. Also wirst du die Datei wohl im Speicher geeignet 
zwischenspeichern. Damit hast du schon mehr Arbeit als hättest du gleich 
eine Datenbank verwendet. Da gibt es ganz schlanke Systeme, z.B. HSQLDB. 
Die können die Datenbank auch in einer Datei ablegen. Und du hast keine 
Umstände damit, kannst alles geordnet ablegen, suchen, erweitern...

von Michael B. (alter_mann)


Lesenswert?

Was wäre das wohl für ein Forum?
Ein gaaanz einfaches, ohne User!
Schon dafür ist eine Datenbank notwendig, um die Usernamen und ggf. 
Anmeldedaten zu speichern.

von Nase (Gast)


Lesenswert?

SQLite..?

von emi (Gast)


Lesenswert?

ok, also doch datenbank... danke.

von Lukas K. (carrotindustries)


Lesenswert?

emi schrieb:
> ok, also doch datenbank... danke.

Wenn deine Anforderungen wirklich sehr gering / deine Daten sehr einfach 
strukturiert sind, ist eine Dokumentenbasierte Datenbank, wie z.B. 
Mongodb vielleicht das richtige für dich. Da kannst du unstrukturiertes 
JSON reinspeichern und danach suchen, brauchst dir also keine Gedanken 
um Schemas und so zu machen.

von LOL (Gast)


Lesenswert?

Naja, prinzipiell geht sowas schon ohne Datenbank.
Ich mein, DokuWiki braucht auch keine - nur indizierte Textdateien und 
gut ist. (Klar, die werden vorgerendert gecached und indiziert, aber das 
sind letztendlich nur Performance-Tweaks.)

Ein Forum ist so doll anders nun auch nicht, im Gegenteil: Es werden 
bestehende Beiträge eher selten geändert, es kommen nur neue hinzu.

Dürfte halt nur schwierig sein, die Performance hoch zu halten.
Ein Ansatz wie "Timestamp als Dateiname pro Post, Unterverzeichnis für 
alle Postings eines Threads" hört sich erstmal nicht schlecht an, aber 
bei ein paar tausend Dateien wird das Verzeichnislisting schnell 
ineffektiv.
Hängt vermutlich vor allem davon ab, wie das schreib/lese Verhältnis ist 
und wie viel RAM/Cache der Server hat.

Machbar dürfte sowas aber schon sein, schließlich hat das Internet mal 
mit Gopher angefangen und da hat sich auch keiner beschwert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.