Weitere Punkte die gegen ein Speichern in der Datenbank sprechen: (nicht alles auf Bilder bezogen sondern zum Teil allgemein auf binäre Daten)
1) Datensicherung und wiederherstellung führt oftmals zu problemen, weil die Dumps extrem groß werden
2) Starke Limitierung der Dateigröße da bei den meisten hostern ein query maximal zwischen 512 kb und 2 MB haben darf
3) will ich informationen wie typ, größe (auflösung) etc, muss ich erst die komplette Daten aus der DB holen -> viel unnötiger overhead stichwort www.php.net/getimagesize und exif-informationen etc ..
4) Viele Programme kommen nicht mit Datenbankdumps klar die binäre Daten enthalten, können sie nicht richtig speichern etc
5) Querys in der Größe die dafür nötig sind, gehen auch gut zu lasten des mysql-servers, und auch hier kommt der speed wieder ins spiel, weil unter umständen der mysql-server eben nicht lokal auf dem webserver läuft, sondern der ganze anfragenkram auch noch übers netzwerk muss und somit doppelter traffik entsteht
-> vom mysql-server zum webserver, und bei Ausgabe etc dann vom webserver zum User/Browser
Was mich mal interessieren würde, was du hier mit Inkonsitenz und höherer Komplexität meinst.
Die Chance dass bei nem query hin und her irgendwo mal ein fehler auftritt halte ich für höher wie wenn die Datei nur aus dem Dateisystem kommt
Komplexität ?
- Öhm blub ? Dateisystem ? ich speiche die Dateien einfach alle mit der ID die sie haben sollten in nem Ordner, ohne Endung oder was und leg ne .htaccess mit "DENY FROM ALL" rein, damit von aussen so keiner rankommt.
- Also Zugriffsrechte für nen Ordner ausreichend zu setzen, dass ein Script drauf zugreifen kann, sollte jeder programmierer beherschen ... Imho erledigt sowas im Normalfall (Überprüfung und setzen) die Installationsroutine.
- Stellt sich doch die Frage, was DU auf deinem Webspace/Server laufen lässt, was das bewerkstelligt, ich mein natürlich könnte auch irgendein Script den zugriff auf die Dateien die deine Tabelle in der MYSQL-Datenbank darstellen unterbinden, kommt sich hier gleich.
Ich hab 1 Jahr an einem CMS weitergearbeitet, dass von den Programmierern so gebaut worden war, dass SÄMTLICHE binärDaten in der DB standen, das hat von vorne bis hinten Probleme gemacht, seien es die Backups, Umzüge zu anderen Providern, die maximale Dateigrößen, besonders wenn mehrere Bilder auf einer Seite waren und ne Seite wirklich mal zugriffe hatte, ging die Auslastung der Mysql-Datenbank sehr schnell, sehr hoch.
Und grade dann war Performance nicht mehr da. Und jenachdem für was das Script gedacht ist und was im Endeffekt das produktive Umfeld ist kann es oftmals ein Problem werden.
Während es deinem Hoster schön egal ist, wenn du deinen Eigenen Server hast, störst du mit solcher unnötiger Auslastung bei nem Shared-Host anbieter unter umständen das komplette Gleichgewicht, bringst den Mysql-Server an seine Grenzen und dann sagt dir dein Hoster, Ne du, is ned, deine Applikation ist zu hungrig, mach was oder such dir nen anderen hoster. (In eigentlich fast jeder AGB von Providern gibts Klauseln um User die Scripte laufen lassen die zu viel Performance fressen los zu werden).
mfg
robo47
1) Datensicherung und wiederherstellung führt oftmals zu problemen, weil die Dumps extrem groß werden
2) Starke Limitierung der Dateigröße da bei den meisten hostern ein query maximal zwischen 512 kb und 2 MB haben darf
3) will ich informationen wie typ, größe (auflösung) etc, muss ich erst die komplette Daten aus der DB holen -> viel unnötiger overhead stichwort www.php.net/getimagesize und exif-informationen etc ..
4) Viele Programme kommen nicht mit Datenbankdumps klar die binäre Daten enthalten, können sie nicht richtig speichern etc
5) Querys in der Größe die dafür nötig sind, gehen auch gut zu lasten des mysql-servers, und auch hier kommt der speed wieder ins spiel, weil unter umständen der mysql-server eben nicht lokal auf dem webserver läuft, sondern der ganze anfragenkram auch noch übers netzwerk muss und somit doppelter traffik entsteht
-> vom mysql-server zum webserver, und bei Ausgabe etc dann vom webserver zum User/Browser
Was mich mal interessieren würde, was du hier mit Inkonsitenz und höherer Komplexität meinst.
Die Chance dass bei nem query hin und her irgendwo mal ein fehler auftritt halte ich für höher wie wenn die Datei nur aus dem Dateisystem kommt
Komplexität ?
- Als erstes braucht man sowiso nen Dateisystem
- Berechtigungen auf Verzeichnis müssen gesetzt werden
- Wenn das Dateisystem mal den Zugriff verweigert weil nen anderes Programm die Datei exklusiv geöffnet hat geht sowiso nix mehr
- Berechtigungen auf Verzeichnis müssen gesetzt werden
- Wenn das Dateisystem mal den Zugriff verweigert weil nen anderes Programm die Datei exklusiv geöffnet hat geht sowiso nix mehr
- Also Zugriffsrechte für nen Ordner ausreichend zu setzen, dass ein Script drauf zugreifen kann, sollte jeder programmierer beherschen ... Imho erledigt sowas im Normalfall (Überprüfung und setzen) die Installationsroutine.
- Stellt sich doch die Frage, was DU auf deinem Webspace/Server laufen lässt, was das bewerkstelligt, ich mein natürlich könnte auch irgendein Script den zugriff auf die Dateien die deine Tabelle in der MYSQL-Datenbank darstellen unterbinden, kommt sich hier gleich.
Ich hab 1 Jahr an einem CMS weitergearbeitet, dass von den Programmierern so gebaut worden war, dass SÄMTLICHE binärDaten in der DB standen, das hat von vorne bis hinten Probleme gemacht, seien es die Backups, Umzüge zu anderen Providern, die maximale Dateigrößen, besonders wenn mehrere Bilder auf einer Seite waren und ne Seite wirklich mal zugriffe hatte, ging die Auslastung der Mysql-Datenbank sehr schnell, sehr hoch.
Und grade dann war Performance nicht mehr da. Und jenachdem für was das Script gedacht ist und was im Endeffekt das produktive Umfeld ist kann es oftmals ein Problem werden.
Während es deinem Hoster schön egal ist, wenn du deinen Eigenen Server hast, störst du mit solcher unnötiger Auslastung bei nem Shared-Host anbieter unter umständen das komplette Gleichgewicht, bringst den Mysql-Server an seine Grenzen und dann sagt dir dein Hoster, Ne du, is ned, deine Applikation ist zu hungrig, mach was oder such dir nen anderen hoster. (In eigentlich fast jeder AGB von Providern gibts Klauseln um User die Scripte laufen lassen die zu viel Performance fressen los zu werden).
mfg
robo47
Kommentar