[PHP] Datei vs. Datenbank



  • Hi,

    eine kurze frage: Was ist schneller und effektiver um ein serialisiertes Array zu sichern, auf das sehr oft zugegriffen wird.

    Eine Datei oder ein MySQL-Datensatz.

    Bei der Datei ist die ID des serialisierten Arrays der Dateiname und bei der MySQL-Datenbank ein primärschlüssel.

    Problem ist folgendes: Ich möchte über GET (wegen Sicherheit) nur eine einzigartige 64-Zeichen ID übergeben, die auf dieses serialisiertes Array (in dem die sonstigen GET-Daten enthalten sind) weisen.

    Da ich entweder Datei oder Datenbank benutzen würde, könnten diese Daten gecached werden (was auch recht Praktisch ist).

    Kurz: Was ist performanter?

    p.s.: Wenn jemand einen noch sichereren Weg kennt, bitte sagen. Ich hatte schon an eine 2-Wege Verschlüsselung für GET gedacht, doch einen String der länger als 240 Zeichen ist per GET zu übergeben, ist sehr schlimm, wenn man den Link wo posten will. Daher die Idee mit der ID, vorallem da die Daten serverseitig gesichert bleiben. 🙂

    danke im voraus!



  • Einfach alles im Speicher halten, wie? - egal.



  • Die Datenbank ist immer schneller, vorallem bei großen Datenmengen.
    Bei der Datei Version hast du immer alle Daten (als Array) aus der Datei im RAM obwohl du diese evtl. gar nicht immer brauchst.

    PS: Einen Index UNIQUE auf die Spalte ID der SQL Datenbank legen.



  • Nein, eine Datenbank ist nur bei großen Datenmengen schneller.



  • Wenn Du sonst noch etwas mit einer DB machst, dann würde ich zur DB raten, wenn Du aber nur für dieses Feature eine DB nutzen würdest, dann nimm lieber Dateien.

    Was ich mich aber frage ist, warum Du viele Zugriffe auf die Datei haben wirst. Ich würde das so machen, dass Du recht zu Anfang des Hauptscripts einmal die Daten aus der Datei liest, diese können dann u.U. modifiziert werden und am Ende des Scripts speicherst Du die Datei wieder. Idealerweise speicherst Du die Daten sofort in ein für PHP gültiges Format, so dass Du die Datei direkt per include einbinden kannst. So kannst Du Dir lästiges parsen und zuweisen ersparen.

    var_export könnte Dein Freund sein. 🙂

    Auf diese Weise hab' ich schonmal Session-Daten in einer DB gespeichert und per eval dann ausgelesen, hab' die Zeit nicht gemessen, aber fiel jetzt nicht wirklich ins Gewicht und es war ungemein praktisch.



  • Hmm ich empfehle dir, der Einfachheit und bei großen Datenmengen auch der Performance wegen, eine Datenbank zu nehmen. Hab mich letztens für ein OpenSource Gästebuch mit dem XML-Parser usw von PHP abkrücken müssen ... ist unangenehme Arbeit 😉


Anmelden zum Antworten