Hello,
bei der Betrachtung von Textdatei kontra Datenbank sollte man auch nicht vergessen, dass bei der Verwendung von Textdateien jeder Request die volle Datenmenge selber einlesen muss, wenn er Änderungen in der Textdatei vornhemen will. Bei einer Datenbank macht dies die Datenbankmaschine, aber nicht für jeden Client gesondert, sondern für alle zusammen. Änderungen können koordiniert im Speicher gehalten werden und werden immer erst dann auf die HDD zurückgeschrieben, wenn es sich lohnt... Darum muss man ja einen Datenbankserver auch erst herunterfahren, bevor man die Tabellen-Files anderweitig anfasst.
Logo, auf einem DB-Server wird auch nur mit Wasser gekocht ;-)
Es gibt aber über klassische Textdateien hinaus eine Vielzahl anderer Modelle, die einen wesentlich schnelleren Zugriff ermöglichen und es nicht erfoderlich machen, für eine Änderung die gesamte Datei inzulesen.
- Textdateien, sequenziell
wird komplett gelesen, der Begriff sequentiell schließt jedoch ein Anhängen nicht aus.
- Textdateien mit fester Satzlänge
bei festen Satzlängen entfällt das Berechnen derer, sehr performant.
- Random Access Dateien, Dateien mit fester Satzlänge und festem Satzaufbau
Ja, sehr performant, es braucht einen Index (Inhaltsverzeichnis) für wahlfreien Zugriff, ggf. entsteht jedoch ein Vakuum, weil gelöschte Sätze immer noch Platz belegen (bei den heutigen Massenspeichern aber auch kein Thema).
- direktgestreute Dateien
kenne ich nicht, haste maln Link?
und diverse komplexere Dtrukturen, die dann aber schon nahe an der Datenbank sind.
Wie schon gesagt, einen Performancegewinn gegenüber DB-Zugriff kriegst Du, weil Du mit einer Datenhaltung in Dateien "näher dran" bist, sofern nach dem Einlesen einer Datei die Daten sofort in einer programmgefälligen Struktur (struct, hash, array...) vorliegen, was natürlich einen geschickten Algorithmus voraussetzt, der beim Lesen (und auch beim Schreiben) Verwendung findet. Perl z.b. unterstützt sowas mit Low-Level-Funktionen wie pack() und unpack(), die byteorientiert arbeiten und sehr schnell sind (Umrechnen von IP-Adressen über bytes mit pack/unpack geht schneller als das Rechnen mit Zahlen und algebraischen Funktionen als Beispiel).
Schöne Grüße,
Horst Hauser