• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Text Dateien als Datenbank

Lightstorm

New member
Hi,

mir hat neulich jemand erzählt das er für seine Webseite das in Perl programmiert ist normale Text Dateien benutzt um Daten zu speichern und keine richtige Datenbank.
Perl sei für so etwas gut optimiert und daher dabei recht schnell.
Das kann ich nur bestätigen, sein Forum hat monatlich mehrere Millionen Seitenzugriffe und das Forum ist eines der schnellsten die ich kenne.


Nun meine Frage, kann man auch in PHP ohne merklichen Geschwindigkeitsverlust die gesamten Daten einer Seite in Text Dateien speichern?

Die Vorteile dabei sind:
- SQL Injection nicht möglich.
- Simple Verwaltung der Daten
- Man muss keine Datenbank Sprache lernen

Nachteile:
- Geschwindigkeit je nach verwendeter Sprache schwächer.
- ... ???
 
Also du kannst das natürlich schon machen, aber PHP ist meines Wissens nach nicht auf Stringoperationen optimiert, so wie Perl.
Also denke ich mal, dass du schon Geschwindigkeitseinbußen haben wirst.

Ein weiterer Nachteil ist, du musst dir deine DB-Operationen alle selber schreiben - dauert sicherlich länger als z.B. MySQL zu lernen (ist nicht wirklich schwer).
Auch kann es sein, dass dein "Datenwust" schnell unübersichtlich wird.
Also ich hab' das mal probiert (habe mich auch von dem Lernen etwas drücken wollen) und dann MySQL wirklich als Erleichterung empfunden.
 
Wenn du mit der Zeit eine Menge an Daten hast, wirst du sicherlich keinen Spaß mehr mit Textdateien haben, glaube mir. Es ist besser von vorneherein auf eine vernünftige Datenbank Struktur (php mit mysql) zu setzen!
 
vorallem musst du bei Textdateien den Multiuser-Zugriff absichern, und das ist ziemlich nervig...

wenn du mit Textdateien arbeiten willst, solltest du außerdem regex beherrschen... aber ich bezweifle, dass du das kannst (ich selbst kanns auch kaum^^)
 
Die Vorteile dabei sind:
- SQL Injection nicht möglich.
ja klar, wenn du kein sql verwendest, ist sql injection nicht möglich. Das heißt aber nicht dass man deine textdatei-abfragen nicht eventuell so manipulieren kann dass es dir damit deine komplette "Datenbank" zerschießt, doofes Argument. Im Gegensatz dazu ist es relativ einfach sich gegen sql injections zu schützen, wenn du da selber was baust musste wahrscheinlich mehr denken.

- Simple Verwaltung der Daten
Genauso (un-)simpel wie mit einer richtigen datenbank, phpmyadmin & co dürften den zugriff auf die daten relativ einfach gestalten, bei deiner textdatei sieht das ganz anders aus

- Man muss keine Datenbank Sprache lernen
... sondern selbst eine entwickeln um die daten ordentlich aus der datei extrahiert zu bekommen, du musst sogar die ganze datenbank-logik dahinter entwickeln...in richtigen datenbanken steckt jahrelange erfahrung von profis die das bis ins hinterste eck optimieren.

Nachteile:
- Geschwindigkeit je nach verwendeter Sprache schwächer.
"je nach verwendeter sprache"?
ich behaupte mal dass jede datenbank um ein vielfaches schneller ist als eine textdatei (wenn man damit umgehen kann), gerade bei mehrere millionen schreibzugriffen am tag wird die load vor lauter I/O operationen konstant in den himmel schießen, bei ner datenbank nicht.


wenn du mit Textdateien arbeiten willst, solltest du außerdem regex beherrschen... aber ich bezweifle, dass du das kannst (ich selbst kanns auch kaum^^)
regex sind nicht wirklich kompliziert, schließe nicht von dir auf andere.



alles in allem ist es einfach ne megadoofe idee flatfiles einer ordentlichen datenbank vorzuziehen wenn es nicht aus irgendwelchen technischen gründen (z.b. hoster bietet keine datenbank) besser geht.
 
Ich hab mal an einem Nachrichtensystem das die Nachrichten als txt-Files auf dem Server speicherte gearbeitet. Werde ich nie wieder machen. Die Anzahl ist so in die Höhe geschossen, dass man ne knappe Minute brauchte um per ftp auf das Verzeichnis zu zugreifen. Änhnlich lange dauerte es auch Übersichten mit PHP zuerstellen, die lediglich Teile dieser Dateien auflisteten (die Nachrichten die einem Benutzer gehören).
Datenbanken sind ab einer bestimmten Datenmenge einfach nicht zu schlagen, sowohl in Geschwindigkeit als auch in Wartung und Komplexitätskapselung.
 
Gut wenn ich das so lese scheint es keine gute Idee zu sein mit PHP normale Dateien als Datenbank zu benutzen.
Aber in Perl scheint so was sehr gut zu gehen. Das von mir erwähnte Forum ist genau so schnell wie PHP Foren und der Admin erzählte mir das auch die Verwaltung der Dateien sehr simple ist. Jedes Mitglied hat sein eigenen Ordner mit ein paar Text Dateien.

Werde die Warnungen jedenfalls ernst nehmen. Danke.
 
regex sind nicht wirklich kompliziert, schließe nicht von dir auf andere.

wenn du Ausdrücke wie diesen
Code:
/\*([^*]|\*+[^/*])*\*+/
leicht verstehst, dann hast du meine Hochachtung, ich glaube aber für viele ist das nicht so einfach, gerade für Leute die gerade erst mit programmieren anfangen, was hier ja auch der Fall ist...

stammt übrigens aus dem Buch Reguläre Ausdrücke von Jeffrey E.F. Friedl (sehr zu empfehlen dieses Buch)
 
[OT]Hallo Bieber,

schreibt Herr Friedl denn auch, zu was dieser Ausdruck geeignet wäre? Denn Sinn macht er nicht wirklich, bzw. mir fiele kein Anwendungsgebiet ein, das einen solchen Ausdruck benötigt.

Scheint mir eher eine Art Ehrgeiz in Richtung Wer-kann-den-lustigsten-Ausdruck-Bilden zu sein...

Grüsse
jeko[/OT]
 
selbst wenns mit perl besser geht als mit php kann es einer richtigen datenbank niemals das wasser reichen. Flatfiles skalieren einfach nicht nach oben.
 
skooli schrieb:
Flatfiles skalieren einfach nicht nach oben
Haha, klingt ja nett der Satz...

Lightstorm:

Meines Erachtens können Textdateien sicherlich als Datenbank verwendet werden. Einen rationalen Grund, sie fertigen Datenbanken vorzuziehen, gibt es, inbesondere als Datenspeicher für ein Forum, jedoch nicht - es ergeben sich gegenüber einer fertigen Datenbank einfach keine nennenswerten Vorteile.
Ich rede hier zum Beispiel von Indizes, die einen schnelleren Zugriff auf die Daten ermöglichen, von der Möglichkeit der Datenrelation um Inkonsistenzen zu vermeiden (und so Speicher zu sparen), einer Sprache wie SQL, die eine umfassende und performante Möglichkeit zur Datenmanipulation bietet und sehr vielen weiteren Funktionen, die bereits Teil von "fertigen" Datenbanken sind.
Sicher, diese Dinge könnte man auch mit reinen Textdateien verwirklichen, jedoch müssen sie dann erst einmal von Grund auf neu erstellt werden - ein Aufwand, der sich, bezogen auf dein Projekt, schlicht nicht lohnt (da es entsprechendes eben schon gibt). "Fertige" Datenbanken speichern ihre Daten übrigens auch in Textdateien ab.

Aber gut, es muss jeder wissen wieviel er sich antun will. Dir würde ich anraten, lieber SQL zu erlernen als mit einer serverseitigen Scriptsprache in Handarbeit eigene Abfrageroutinen zu programmieren; ich wage sogar zu behaupten, dass du für letzteres einiges länger bräuchtest.

Grüsse
jeko
 
Zuletzt bearbeitet:
[OT]Hallo Bieber,

schreibt Herr Friedl denn auch, zu was dieser Ausdruck geeignet wäre? Denn Sinn macht er nicht wirklich, bzw. mir fiele kein Anwendungsgebiet ein, das einen solchen Ausdruck benötigt.

Scheint mir eher eine Art Ehrgeiz in Richtung Wer-kann-den-lustigsten-Ausdruck-Bilden zu sein...

Grüsse
jeko[/OT]

es geht darum C-Kommentare aufzubrechen... ich gebe zu ich habe einfach nur ne Seite aufgeschlagen und nicht weiter danach geschaut...war ein blödes Beispiel, sorry...man muss sich dazu den kontext durchlesen
 
es geht darum C-Kommentare aufzubrechen... ich gebe zu ich habe einfach nur ne Seite aufgeschlagen und nicht weiter danach geschaut...war ein blödes Beispiel, sorry...man muss sich dazu den kontext durchlesen
hehe, dafür war's ne harte Nuss. Ich hab mich auch gefragt was das werden soll. Im Prinzip hattest du ja recht. Man kann sich zwar erklären was der Ausdruck macht, aber ohne die Daten die er erwartet zu kennen, ist dieser Ausdruck ohne Kommentierung nur schwer zu verstehen.

Zu Flatfiles vs. Datenbank ist eigentlich alles gesagt. Perl hat zwar Vorteile, wenn es um die Auswertung von Texten geht, aber es ist kein Ersatz für eine Datenbank. Meine erstes Online Projekt mit Foren, Userverwaltung und allen drum und dran, hatte ich damals auch mit Flatfiles (genauer mit DB_File) umgesetzt. Lief auch alles, aber als mir die Möglichkeiten von SQL klar wurden, musste ich so schnell wie möglich auf eine Datenbank umsteigen.

Aber vielleicht ist es für manche auch leichter zu verstehen, wozu eine Datenbanksprache gut sein kann, wenn sie sich ein solches System mal selbst zusammen gefrickelt haben
 
Zurück
Oben