| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| peoplesinstinctivetravel Registriert seit: Aug 2002 Ort: konstanz
Beiträge: 775
| dateien als binary in mysql oder lieber nicht ?
Hallo zusammen, überlege grade hin und her ob ich einen internen webbasierten dateiupload lieber per .htaccess schützen soll , bzw die upgeloadeten dateien. so dass man sie per direkt link nicht downloaden kann. eine möglichkeit wäre ja auch die dateien als binaries in eine mysql db zu stopfen... da würde mich interessieren wie groß die belastung der datenbank durch sowas ist... ob es was bringt eine andere datenbank zunehmen als die das cms verwendet. es handelt sich eigentlich im wesentlichen um pdfs jpgs und docs. hat jemand mit dieser methode erfahrungen ?? würde mich über erfahrungswerte / tips freuen... vielen dank!! |
| | |
| | #2 (permalink) |
| schnarchnase Registriert seit: Jan 2002 Ort: konstanz
Beiträge: 2.953
|
ein paar aktuelle benchmarks würden mich auch interessieren - der tipp von früher, das abspeichern von BLOBs würde zu der datenbank zu viel leistung abverlangen, ist heutzutage u.U. fraglich. sollte ich heut zeit haben, mach ich selber ein paar benchmarks.
__________________ perlen vor die säue. |
| | |
| | #3 (permalink) |
| peoplesinstinctivetravel Registriert seit: Aug 2002 Ort: konstanz
Beiträge: 775
|
sehr interessant. wäre cool wenn du ne tendenz posten würdest... denke in meinem fall ist es mittlerweile praktikabel... sind nur 3 leute die momentan auf den bereich zugriff haben sollen... und wie gesagt nur .pdf, jpgs... und auch nicht solche massen... -> bringt es eigentlich was wenn ich dafür dann ne extra db anlege?? danke auf jeden fall ! |
| | |
| | #4 (permalink) |
| wuschelkopp Registriert seit: Aug 2004
Beiträge: 1.468
|
ich denke nicht, dass es gut ist, ne neuen DB anzulegen, da du somit 2 MySQL verbindungen aufbauen müsstest! Einfach ne neue Tabelle erstellen! Oder du speicherst Dateiname inkl. id in ner DB, die Dateien liegen dann in einem bestimmten durch htaccess geschütztem Verzeichnis. An die Dateien kommst Du, indem Du dann einfach an ein PHP-Wrapper die ID des jeweiligen Files übergibst!
__________________ listening to techno & minimal :> |
| | |
| | #5 (permalink) |
| peoplesinstinctivetravel Registriert seit: Aug 2002 Ort: konstanz
Beiträge: 775
|
dann müsste ich ja immer das password eingeben, das ist ja schon bisschen unkomfortabel, wenn ich als user eines login bereichs nochmal das pw eingeben ist das schon bisschen doof. oder verstehe ich was falsch ?
|
| | |
| | #6 (permalink) |
| wuschelkopp Registriert seit: Aug 2004
Beiträge: 1.468
|
nein, musst du nicht ![]() grober ansatz (ohne sicherheitsmechanismen bzw prüfung der eingabedaten des users etc) wrapper.php: PHP-Code: Code: id | filename ------------------------------- 1 bla.doc 2 foo.pdf PHP-Code:
__________________ listening to techno & minimal :> |
| | |
| | #7 (permalink) |
| peoplesinstinctivetravel Registriert seit: Aug 2002 Ort: konstanz
Beiträge: 775
|
check grad nicht wie das funktioniert, dass dann wenn ich die file im browser dann in meinem gesicherten bereich downloaden will kein htaccess eingabe mehr kommt... liegt das an dem php wrapper oder wie kommt es dass ich das password dann nicht mehr brauche ... nachdem was du sagst müsste es ja dann genau so klappen wie ich will nämlich dass ich nur derjenige der direkt auf die datei geht das htaccess pass eingeben müsste... das wäre ja optimal... |
| | |
| | #8 (permalink) |
| wuschelkopp Registriert seit: Aug 2004
Beiträge: 1.468
|
direkt auf die datei gehen geht garnicht, aber das könnte man auch implementieren... aber man muss bei mir kein passwort eingeben, da php zugriff auf die datei hat, diese somit einließt und einfach mit dem richtigen header (der bei mir noch fehlt oben im code) an deinen browser sendet!
__________________ listening to techno & minimal :> |
| | |
| | #9 (permalink) |
| Nagelneuer User Registriert seit: Dec 2005
Beiträge: 924
|
Es ist doch gar keine Frage, dass das Speichern eines Blobs keinen Sinn macht, weil der ja dann wie durch eine Pipeline aus dem Filesystem zur DB zum WebServer läuft, während ein File direkt zum Webserver fliesst. Durchsuchen kann man ihn auch nicht gross, so what? Ich bin auf die Benchmarks gespannt. mfg .h
__________________ The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D |
| | |
| | #10 (permalink) |
| Kaffee... Registriert seit: May 2004 Ort: de/en
Beiträge: 433
|
was heißt da benchmark? files vom webserver direkt zu saugen ist ganzklar performanter. vorallem wenn du z.B. ein portal auf die DB aufsetzt und dann noch die Files als Blob... phew... das gibt Einbußen... |
| | |
| | #11 (permalink) | |
| schnarchnase Registriert seit: Jan 2002 Ort: konstanz
Beiträge: 2.953
| Zitat:
1. die datenbank braucht man bei zugriffsgeschützten dingen eh - d.h. man könnte in einem query die zugriffsberechtigung überprüfen UND gleichzeitig das bild holen. -> nur eine datenbank-abfrage statt "abfrage + disk touches". 2. gerade das mysql query cache ist nicht zu verachten - 'pages' von identischen queries werden von der datenbank so lange wie möglich im RAM gehalten, d.h. subsequente anfragen geben das ergebnis aus dem RAM aus, statt jedes mal die festplatte zu nerven. der apache kann hier nichts cachen, und das dateisystem auch nicht - denn die zugriffsberechtigung muss auf jeden fall überprüft werden. 3. die safe_mode-probleme fallen weg (hoffentlich wird's mit php6 besser). 4. backup: alle files sind in einem einzigen sql-dumpfile, xml-file o.ä... keine dateien, ordner, zeug UND ein sql-dump. alles an einem ort. die springenden punkte sind (ohne dass ich bis jetzt dazugekommen wäre, einen richtig guten und repräsentativen benchmark zu machen): - es hängt vom verfügbaren RAM ab, ob die eine oder die andere lösung besser ist. - es hängt auch davon ab, ob das query cache an ist oder nicht. - es hängt auch davon ab, wie viele parallelzugriffe man bedienen können will, und ob man eine datei überhaupt auf einmal im hauptspeicher halten kann, oder ob die datei so groß ist, dass man z.b. ans memory-limit von php stößt. - mit welcher lösung fühlt man sich wohler? kann man eher das dateisystem derart optimieren, dass es nahezu genauso schnell reagiert wie die datenbank? womit hat man persönlich mehr erfahrung und weiß im ernstfall schneller, was zu tun ist, wenn was fehlschlägt? - wie viele user greifen gleichzeitig auf die selbe ressource zu, damit dieser RAM-cache-effekt seine volle wirkung entfaltet? grundsätzlich würde ich erstmal sagen, dass man mit der filesystem-variante sicherlich eh auf der sicheren seite ist, dass die db-variante aber durchaus ihre vorteile haben "könnte", vorausgesetzt, das ganze wird klug angesetzt und man kann auch an der datenbank und vor allem an den abfragen rumfeilen.
__________________ perlen vor die säue. | |
| | |
| | #12 (permalink) |
| Nagelneuer User Registriert seit: Dec 2005
Beiträge: 924
|
Ein Cache lohnt sich doch auch für Daten, die möglicherweise über 50 Joins mühsam zusammengesucht wurden, viel eher als für ein blödes Bild, das nur aus Bequemlichkeit des Admins in der DB steckt. Ein nackter Performancetest wäre auf jeden Fall trotzdem interessant. Welche Last erzeugt ein 1MB Bild vom Filesystem und aus der DB. Wenn man mal kurz googlet, sieht man jedenfalls gleich, dass alle bekannten DBs Blobs unterstützen. Also werden sie ja wohl auch benutzt. Ein Argument ist auch nicht von der Hand zu weisen. Wenn man z.B. Millionen von Bildern hat, wird es mit dem Filesystem kompliziert, weil dessen Performance häufig auf eine bestimmte Anzahl von Dateien pro Verzeichnis optimiert ist, 1024, 4096 oder ähnliches. Auch das Argument "einfaches Backup" ist nicht ganz verkehrt. Wobei ich mich gerade frage, ob man auch ein inkrementelles Datenbankbackup erstellen kann oder ob man immer alles speichern muss. Bei sehr grossen Datenbanken kann das kompliziert und teuer werden. mfg. h
__________________ The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D Geändert von hazy fantazy (30-03-2006 um 00:44 Uhr) |
| | |
| | #13 (permalink) |
| Gast
Beiträge: n/a
|
Das CMS Typo3 nutzt Blobs extensiv und hat keinerlei Perfomanceverluste dadurch. Es gibt einige Gründe, die dafür sprechen. Und andere dagegen. Großformatige Dinge (filesize) würde ich sicherlich nicht in der Datenbank ablegen wollen (sagen wir mal größer als 1 MB). Das hängt aber wieder von vielen anderen Faktoren wie etwa RAM, Prozesser und so weiter des Servers ab. Wenn die Strategie stimmt, sind Blobs kein Thema. Z |
|
| | #14 (permalink) |
| schnarchnase Registriert seit: Jan 2002 Ort: konstanz
Beiträge: 2.953
|
ok, jetzt interessiert's mich endgültig auch also: um einen ordentlichen benchmark zu machen, würde ich sagen, wird ein interface implementiert, das alle speichersysteme implementieren müssen. so kann man jede implementierung mit immer den selben aktionen testen. PHP-Code:
__________________ perlen vor die säue. Geändert von rechtschreibfan (30-03-2006 um 09:49 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |