Textdateien in einer DB speichern
Horst
- sonstiges
Hallo liebe Forumer,
ab und zu wird hier über die Sinnfälligkeit hinsichtlich "Speichern von Textdateien" in einer Datenbank like MySQL gestritten.
Alle Kontras, die ich dazu gelesen habe, auch außerhalb dieses Forums, habe ich sorgfältig abgewägt und als "für meine Zwecke nicht zutreffend" befunden.
Ich fasse die Kontras einmal hier zusammen, die mir zugetragen wurden (-Kontra, +Ich):
Wie Ihr sehen könnt, sind diese Kontras ein bischen sehr dünne. Ich habe mich davon nicht beirren lassen und in den letzen Tagen meinen Downloadbereich auf eine MySQL-DB-Tabelle gesetzt. Sehr kompakt, benutzerfreundlich und skalierbar funktioniert das Alles einwandfrei ohne der Gefahr von Medienbrüchen bzw. Inkonsistenzen zwischen der DB und dem FileSystem (FS).
Viele Grüße aus der Anstalt,
Horst Haselhuhn
Hello,
- Zum Download einer Datei muss ein CGI-Prozess gestartet werden
- Muss er sowieso, weil ich einen Counter auf dem Download habe
- Die Textdatei ist in der DB größer als im FS
- spielt praktisch keine Rolle
Das ist nun im Prinzip genau anders herum, denn die DB teilt dem Record nur wenig mehr Speicherplatz zu, als er benötigt. Im Filesystem werden aber meistens 8KB-Blöcke vergeben.
- Beim Upload droht eine SQL-Injektion
- Upload mache nur ich und ich weiß was ich da mache, das Upload-Script ist einzig nur mir zugänglich
Woher sollte die kommen, wenn Du die Escape-Funktion der DB anwendest. Das musst Du ja ohnehin, denn Textdateien können Returns, Häkchen, Backslashes und sonstige betroffene Zeichen enthalten.
Wenn Du das Select als stored Procedure ausführst, kannst Du den Zähler für die Anforderung gleich der Datenbank überlassen. Dann wird jedes Select auf die betroffnenen Records automatisch gezählt.
Das schöne an der DB-Lösung ist natürlich, dass Du jede Menge Metainformationen an die Daten binden kannst und die auch bequem durchsuchbar sind.
Liebe Grüße
Tom vom Berg
Helo Tom,
in meinem Downloadbereich werde ich demnext die Anzahl der Downloads je Download-Topic angeben. Das ist mit meiner bisherigen Lösung leicht machbar (Ajax).
Btw., mein Downloadbereich: klitzekleine Progrämmche in c geschrieben. z.B. das hier:
Mein Programm arcfoto.exe nimmt Ihnen diese Arbeit ab. Programmaufruf:
D:\_c\exe>arcfoto.exe
Das Programm macht folgendes:
Stammverzeichnis auslesen, Fotos umbenennen und in ein dem Datum
entsprechenden Zielverzeichnis ablegen.
Die Fotos werden umbenannt like 23.03.2008_001.jpg, 23.03.2008_002.jpg usw.
Verteilt werden die Fotos in Unterverzeichnisse unter dem Stammverzeichnis
welche dem Bild-Datum entsprechen:
d:/arcfoto/2008/03
d:/arcfoto/2008/04
usw. Sollte das Stammverzeichnis nicht vorhanden sein, wird es angelegt.
Das Stammverzeichnis wird mit Namen 'arcfoto' auf dem Laufwerk angelegt,
von dem aus dieses Programm gestartet wird.
Vor dem Starten dieses Programms muessen lediglich die Fotos
von der Kamera in das Verzeichnis 'arcfoto' kopiert werden....
/************************************************************************/
Ergo:
Sie holen die Datei völlig unzerknittert aus meiner DB. Für Umme. Noch Fragen?
Hello Tom,
wenn Du der Meinung bist, dass MySQL zum Speichern von Text-Dateien nicht geeignet ist, ähm ja, hast Du die Entwickler von MySQL mal deswegen angeschrieben?
Viele Grüße,
Hotte
Hello,
wenn Du der Meinung bist, dass MySQL zum Speichern von Text-Dateien nicht geeignet ist, ähm ja, hast Du die Entwickler von MySQL mal deswegen angeschrieben?
Wie kommst Du den darauf?
Sowas habe ich nirgends geschrieben.
Ich habe Dich lediglich darauf aufmerksam gemacht, dass Du nicht nur aus Sicherheitserwägungen heraus die Escapefunktion benutzen sollt, sondern auch, weil sonst Datenverlust eintreten könnte.
Liebe Grüße
Tom vom Berg
Ich habe mich davon nicht beirren lassen und in den letzen Tagen meinen Downloadbereich auf eine MySQL-DB-Tabelle gesetzt. Sehr kompakt, benutzerfreundlich und skalierbar funktioniert das Alles einwandfrei ohne der Gefahr von Medienbrüchen bzw. Inkonsistenzen zwischen der DB und dem FileSystem (FS).
Machst du hier Werbung für eine Baumarkt-Kette, oder wie jetzt? Werbung wird außerdem nicht dadurch besser, daß man ein paar Allgemeinplätze bedient. Warum werden solche Postings nicht gelöscht, ist doch plumpe Werbung?
JJ