Datei(en) statt SQL (etc)

Hallo!

Ich arbeite gerade an einem kleinen Projekt, bei dem ich aus praktischen Gründen statt einer richtigen Datenbank einen Ordner nehmen will, in dem eine Datei einer Zeile des Datensatzes entspricht (Spalten getrennt durch „/n/n{header:name}/n“ oder sowas in der Art).

Es soll maximal auf 20 Daten"zeilen" (pro aufgerufener Seite) zugegriffen werden… im Durchschnitt sind’s weniger, eine „Zeilen-Datei“ wird wohl im Durchschnitt so 25-50kb umfassen, höher als 200kb wollte ich auf keinen Fall gehen.

Kann mir jemand eine ungefähre Vorstellung von der (gegenüber der Benutzung von 'ner Datenbank höheren) Serverlast geben - sowie deren Verhalten mit steigenden Zugriffen/Besucherzahlen?

Auch sonstige Einwände sind willkommen (über die Vorteile bin ich mir bereits im Klaren, aber die Nachteile lassen mich mal wieder zweifeln) - falls es z.B. Probleme geben könnte, wenn gleichzeitig gelesen und geschrieben wird o.ä. und unter welchen Bedingungen es sich lohnen würde, die kompletten Seiten automatisch als html auslagern zu lassen (Das „Änderungs & Anzeige - Verhalten“ entspricht in etwa dem eines Blogs).

Danke!

P.S.: Falls zufällig jemand grad 'nen Link mit Code oder Tips zur Umsetzung von BBCode, Template-Systemen (ähnlich phpbb) oder „html-cache“ von php-erzeugten Seiten (und sonstigem für mein Problem relevantes) parat hat, immer her damit - ist immer besser auf gesammelte Erfahrungen zurückzugreifen, bevor man etwas „individuell“ umsetzt! Braucht aber keiner extra danach zu suche - das find ich auch selbst irgendwo, falls es sowas gibt.

Moien

Ich arbeite gerade an einem kleinen Projekt, bei dem ich aus
praktischen Gründen statt einer richtigen Datenbank einen
Ordner nehmen will, in dem eine Datei einer Zeile des
Datensatzes entspricht (Spalten getrennt durch
„/n/n{header:name}/n“ oder sowas in der Art).

Doofe Frage: wieso nicht SQLlite ?

SQLlite ist eine lib die es unter anderen für php gibt. Sie kann SQL-Commandos ausführen, braucht aber keinen Server dafür. D.h. während dein Skript läuft tut de Lib so als ob da ein Server wäre. Das Ding arbeitet in Wirklichkeit auf Dateien.

Kann mir jemand eine ungefähre Vorstellung von der (gegenüber
der Benutzung von 'ner Datenbank höheren) Serverlast geben -
sowie deren Verhalten mit steigenden Zugriffen/Besucherzahlen?

Beim auslesen von Daten werden die Dateien schneller sein als normale SQL-DBs. Evtl. sogar einen Tick schneller als SQLlite. Aber sobald irgendwas auf das System schreiben will wird das ganze zu einem echten Problemfall. Und es ist ein Heidenaufwand, besonders wenn man die ACID-Eigenschaften (Atomar ausgeführte Transaktionen, Konsistenz der Daten, Isolation von gleichzeitig ablaufenden Operationen, Sicherstellung der dauerhaften Operationsausführung) von Datenbanken braucht.

wieder zweifeln) - falls es z.B. Probleme geben könnte, wenn
gleichzeitig gelesen und geschrieben wird o.ä.

Das ist einfach zu beantworten: wenn ein Prozess auf eine Datei schreibt sehen alle anderen Prozesse während dem schrieben unvollständige Daten. Filelocks funktionieren, gerade bei Skriptsprachen auf MultiprozessServern nie zuverlässig.

welchen Bedingungen es sich lohnen würde, die kompletten
Seiten automatisch als html auslagern zu lassen (Das
„Änderungs & Anzeige - Verhalten“ entspricht in etwa dem eines
Blogs).

Das wird sich relativ schnell lohnen. Es gibt auch vorgefertige Skripts die die Ausgabe einer PHP-Ausführung automatisch mitschreiben. Beim nächsten identischen Aufruf wird der PHP-Code nicht ganz ausgeführt sondern nur die Mitschrift geschickt.

cu

Doofe Frage: wieso nicht SQLlite ?

Weil das Programm 1) minimal sein soll und 2) ich auf die Art auch Dinge machen kann, die mit 'ner SQL-Datenbank nicht so einfach sind (z.B. eine Spalte direkt für png’s anlegen)

Und es ist ein
Heidenaufwand, besonders wenn man die ACID-Eigenschaften
[…] von Datenbanken braucht.

Ich glaub, das kann ich ganz unprofessionell imitieren (wenn auch nur soweit es für meine Zwecke nötig ist), indem ich die unix-zeit mit angehängter ip als Dateinamen nehm (was zudem lustig aussieht).

Danke!

hallo,

ich hab’ ziemlich genau das geschrieben, was Du auch machen möchtest.
Solange die Anforderungen nicht zu groß werden, ist es von der Serverlast her kein Problem.
Einen Eindruck davon kannst Du Dir unter

http://spielwiese.sven-of-nine.de/

machen.

einfach mit admin/admin einloggen und rumspielen

Wohlgemerkt :
Alles kpl. in PHP
auch die „Datenbank“
mit User und Rechteverwaltung

MfG

Sven-of-Nine

Cool, sowas ähnliches bau ich auch grad!

Hab jetzt mal Seiten mit Zugriffen auf bis zu 20 rows/dateien (à 5 Spalten) aus 'nem Verzeichnis mit 100 Dateien mit zugehörigem png auf einmal ausprobiert (das wär dann so 'ne Art Gästebuch-mit-avatar) - läuft wie geschmiert und im Gegensatz zu 'ner Datenbank kann ich’s einfach&übersichtlich per ftp sicher, bearbeiten, migrieren & etc. ohne mich um irgendwelche server und/oder domainbeschräkungen kümmern zu müssen.

Ich frag mich, warum das nicht jeder so macht. *g*

Moien

Doofe Frage: wieso nicht SQLlite ?

Weil das Programm 1) minimal sein soll

Dann nim C.

und 2) ich auf die Art
auch Dinge machen kann, die mit 'ner SQL-Datenbank nicht so
einfach sind (z.B. eine Spalte direkt für png’s anlegen)

png’s kann man als Datentyp blob speichern.

Und es ist ein
Heidenaufwand, besonders wenn man die ACID-Eigenschaften
[…] von Datenbanken braucht.

Ich glaub, das kann ich ganz unprofessionell imitieren (wenn
auch nur soweit es für meine Zwecke nötig ist), indem ich die
unix-zeit mit angehängter ip als Dateinamen nehm (was zudem
lustig aussieht).

Damit hast du das Problem des Anlegen von Daten gelöst. Sobald aber 2 User auf die gleichen Daten zugreifen geht’s in die Hose.

cu