hotti: PHP txt-datei oder mysql?

Beitrag lesen

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