Struppi: Dateien in DB...

Beitrag lesen

Warum nicht in DB? Ein CMS wie zB zope speichert JEDEN Content-Type in einer DB.

Naja, ertsmal ging es um Dateien mit mindestens 1MB Größe und ich bezweifle das das effizient ist.

Bitte nicht falsch verstehen, ich werbe nicht für zope (muss nur gelegentlich damit arbeiten...) aber ich sehe ein paar Vorteile für das Speichern von Dateien in einer DB:

Sicherheit

  • da ists zB nicht mehr möglich Dateichen hochzuladen die im FS Schaden anrichten können.

Du kannst die Dateien durchaus in Bereiche die nicht Zugänglich sind speichern und einfach mit...

print "Content-type....."

open FH, "dateiname"....
local $/, undef;
print <FH>
close FH;

wieder ausgeben. aber das sollte in der Regel nicht nötig sein.

Weiterverarbeitung

  • Content UND Content-Type stehen in der DB, das bringt Vorteile wenn solche Dateien weiterverarbeitet werden sollen, zB. für den Mailversand: Die Daten liegen sozusagen griffbereit.

Da ich es so machen würde, das ich die Datei als Datei (wir reden vermutlich über Binäre Daten, bei Texten würde cih vermutlich auch die DB bevorzugen) abspeichere und in der Datenbank einen Schlüßel mit allen relevenaten Angaben abspeichere habe ich diese Daten ebenfalls.
Mir geht es nur um Binäre Daten (vor allem in der Größenordnung in einer DB)

Und wenn ich den Content-Type schon hab, kann ich auch gleich den richtigen header zum Browser senden, falls die Datei dahin folgen soll.

Das macht der Server für mich (wenn ich nicht den oben beschrieben Fall anwende).

Attribute

  • in einer DB können weitere Attribute bzw. Infos zur Datei abgelegt sein die im FS NICHT abgelegt werden können (Author etc).

wie gesagt das speichere ich natürlich in der DB ab.

Konsistenz

  • der Record steht an EINER Stelle in der DB, es gibt also kein Konsistenzproblem zwischen einem Link in der DB und der physischen Datei.

Da geb ich dir recht. Das muss natürlich geprüft werden und erfordert zusätzlichen Aufwand z.b. beim löschen eines Datensatzes.

Die Frage ist nur ob der etwas geringere Aufwand, die Unmmengen an größeren Zeitaufwand den der Server (Rechnezeit)  und der SQL Server (Datenübertrageung) benötigen, rechtfertigt?

So Diskussionen ich mitlllerweile schon ötfers gelesen, dass viele Webmaster den SQL Server übermaßen belasten ohne daran zu denken, das dadurch die Performance für alle User sinkt. Und wenn du sagst bei Zope ist das Standard wundern mich die Perfomranceeinbrüche bei vielen Hostern nicht.

Struppi.