Kom ihåg mig?
Home Menu

Menu


Spara bilder i Databas? Pros & Cons?

 
Ämnesverktyg Visningsalternativ
Oläst 2009-03-05, 17:40 #1
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
Enligt min uppfattning borde det vara en dålig idé att spara bilder i t.ex. MySQL. Databasen borde bli ganska tung, relativt snabbt. Men jag är gärna intresserad av andras åsikter på detta.

Exempel kod på hur man kan göra om någon är intresserad:
Kod:
//SKAPA PASSANDE TABELL
CREATE TABLE `images` (
 *`id` INT(11) NOT NULL AUTO_INCREMENT,
 *`image` BLOB NOT NULL,
 *PRIMARY KEY *(`id`)
) ENGINE=MyISAM;

//TRE STEG FÖR ATT SPARA BILDER
$image = chunk_split(base64_encode(file_get_contents("image.jpg")));
$query = "INSERT INTO images (image) VALUES('$image')";
mysql_query($query) or die(mysql_error());
echo "Image id is ".mysql_insert_id();

//VISA BILDER (SEPARAT FIL ex. visabild.php)
header('Content-type: image/jpeg');
$query = "SELECT image from images where id=1";
$rs = mysql_fetch_array(mysql_query($query));
echo base64_decode($rs["image"]);

//VISA BILD PÅ EN HTML SIDA
<img src="visabild.php" />

Som jag kan se det är för och nackdelarna:


Fördel:

* Man behöver inte bry sig om chmod inställningar.
* Enkelt att hålla ordning.
* Enklare att behandla bilderna.
* Bilderna är i säkert förvar, man kan ge personliga rättigheter åt bilderna.
* Enkelt att flytta en hel sida (finns som nackdel också se nedan)

Nackdel:

* Slöare bildhantering
* Resurskrävande
* Databasen blir lätt stor
* Vissa webbhotell ger begränsad storlek på databasen, alt. man får ställa in storleken när man skapar den.
* Svårt att flytta databasen om den blir för stor, phpMyAdmin tillåter väll max typ 50 Mb export?

Har ni fler pros and cons på ämnet? Tips?

När är det en fördel att spara bilder i en databas? Vem gör såhär?
grinditwp är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-03-05, 18:23 #2
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
Detta har ju diskuterats fram och tillbaka i all evighet. Självfallet ska man begränsa användningen av databaser för att lagra stora volymer bilddata men vad det gäller mindre bilder är ju mindre självklart.

Jag sparar produktbilderna i en webbshop i databasen vilket fungerar utmärkt. Säkerligen finns det nackdelar med detta men för min del överväger det att produkter och bilder finns organiserade och ordnade tillsammans med produkterna. En databasdump ger mig hela backup:en.

Du har nog i stort listat fördelarna och nackdelarna. För min del är det något man avgör från fall till fall.
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-03-05, 19:29 #3
kw_wasabis avatar
kw_wasabi kw_wasabi är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2008
Inlägg: 2 134
kw_wasabi kw_wasabi är inte uppkopplad
Klarade millennium-buggen
kw_wasabis avatar
 
Reg.datum: Feb 2008
Inlägg: 2 134
Hade ingen aning om att man kunde spara bilder i databas. Jag kör bara ASP och Access-databas och där kanske det inte funkar. Jag brukar bara spara filnamnet som text i databasen vilket jag antar är det vanligaste sättet även i PHP/mySQL, eller?
kw_wasabi är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-03-05, 20:09 #4
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
Citat:
Originally posted by kw_wasabi@Mar 5 2009, 19:29
Hade ingen aning om att man kunde spara bilder i databas. Jag kör bara ASP och Access-databas och där kanske det inte funkar. Jag brukar bara spara filnamnet som text i databasen vilket jag antar är det vanligaste sättet även i PHP/mySQL, eller?
Med tanke på vad för slags filnamn en del använder så är nog inte det bästa att spara filnamnen i databasen.

1. Säkerhetsrisk om du inte escape:ar ordentligt.
2. Tar mer plats än att bara använda id för att hitta bilden.
3. Du får problem att hantera det om flera bilder har samma namn.

Jag använder i sådana fall "bild34.jpg" där numret är det unika id:t till raden i databasen.

Asp+Access är väl inte världens modernaste lösning, kommer ihåg att jag använde det runt millenieskifter… :P
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-03-05, 23:49 #5
kw_wasabis avatar
kw_wasabi kw_wasabi är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2008
Inlägg: 2 134
kw_wasabi kw_wasabi är inte uppkopplad
Klarade millennium-buggen
kw_wasabis avatar
 
Reg.datum: Feb 2008
Inlägg: 2 134
Citat:
Originally posted by martine@Mar 5 2009, 20:09
Asp+Access är väl inte världens modernaste lösning, kommer ihåg att jag använde det runt millenieskifter… :P
Det funkar perfekt för mina syften.
kw_wasabi är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-03-06, 13:39 #6
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Man kan tänka som följande: bilder ska lagras och då använder man det som är bäst för lagring: disk (alltså i filstrukturen). Databsernas trevligaste uppgift är att sortera och filtrera data, alltså något som inte har med binärfiler att göra. Så det borde vara bäst att inte lagra filer i databasen, MEN det kan finnas tillfället då det är bra; det beror på helt enkelt.

Själv ser jag nyttan av att lätt kunna lägga bildfiler på separata subdomäner där de dessutom servas snabbt av webservern via fil istället för att gå ner via en serversida (.net/php etc) och sedan göra anrop till databasen, samt flytta upp allt data genom alla lager fram till klienten. Om man inte har tungan rätt i mun så kan ju dessutom databasen få låsningar medans den gör insert/update på förhållandevis stora bildfiler.
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-03-06, 14:10 #7
studiox studiox är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2004
Inlägg: 1 356
studiox studiox är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2004
Inlägg: 1 356
Citat:
Fördel:
* Man behöver inte bry sig om chmod inställningar.
Det behöver du inte annars heller, förutom en gång.

Citat:

* Enkelt att hålla ordning.
Förstår inte riktigt vad det har för betydelse

Citat:

* Enklare att behandla bilderna.
Det borde iofs. bli tvärtom. Då SQL inte kan behandla bilder alls.

Citat:

* Bilderna är i säkert förvar, man kan ge personliga rättigheter åt bilderna.
En databas kan ju krasha, och det kan ta rätt lång tid att göra en restore om den är på flera Gigabyte. Ett filsystem gör du restore på ett kick. Där kan du även göra en unrestore på en specifik fil, inte alls lika lätt i en databas.

Citat:

* Enkelt att flytta en hel sida (finns som nackdel också se nedan)
Om en sida bara bestod av databasfiler, då ska du ju lagra dina php/net filer i databasen också, typ. så ja. Annars så kopierar du väl sajten + filerna och då borde det gå lite snabbare då du inte behöver göra en databasimport som är på flera gigabyte.
studiox är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-03-06, 16:20 #8
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
Citat:
Originally posted by studiox@Mar 6 2009, 14:10

Citat:

* Enklare att behandla bilderna.
Det borde iofs. bli tvärtom. Då SQL inte kan behandla bilder alls.
Tja, jag tänkte väll snarare att man kunde sparat en bild fil i t.ex. 400x400px, när man sedan läser den ut databasen kan man när man ska printa ut den behandla den on-the-fly utan att behöva spara något. Inga dubbletter. Resurskrävande, ja!

Mina pros & cons är mest spontana tankar runt det hela. Vet ej om de är korrekta. Själv sparar jag inga bilder i databaser, men jag har läst en hel del om folk som gör det.
grinditwp är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-03-06, 23:17 #9
gibson gibson är inte uppkopplad
Medlem
 
Reg.datum: Jan 2009
Inlägg: 71
gibson gibson är inte uppkopplad
Medlem
 
Reg.datum: Jan 2009
Inlägg: 71
Ger inga direkta för- och nackdelar, berättar bara hur jag gör, om det skulle vara till någon hjälp.

Jag sparar filstruktur/filnamn i databasen och själva filerna på hårddisk.
Om man grupperar detta per användare och har en bra säkerhetskoll på filnamn så ser jag inga problem med detta. Id:n är att föredra om man inte har behov av att manuellt gå in och titta på filer och dess namn
gibson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-03-06, 23:20 #10
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Den enda fördelen med att spara bilderna binärt är väl i de fall man har särskild anledning att skydda filerna. Annars är det nog smidigare i de flesta fall att köra på "vanligt" vis.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 19:11.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017