Avatar billede c-sharp Nybegynder
27. juli 2006 - 11:45 Der er 19 kommentarer og
1 løsning

Billeder i databasen eller ej?

Jeg har nu kigget lidt rundt, for at finde ud af om jeg skal proppe billederne til mit næste site i datasbasen, eller ligge dem i filsystemet. Jeg har altid lagt billederne på filsystemet da jeg havde hørt dårligt om at ligge dem i databasen, men jeg kan se nogle fordele i at ligge dem i databasen, men kan ikke overskue ulemperne.

En af de problemer jeg altid kæmper med når jeg placere billederne på filsystemet er det at skulle holde dem opdateret, få dem slettet, få dem navngivet så de ikke overskriver hinanden osv. Dette kommer jeg jo helt ud over ved at vælge database løsningen :-)

Af ulemper jeg har læst om er at billederne ikke bliver cache'et af webserver og browser, billedet kan ikke downloades (kan ikke lige se hvorfor ikke?). Performance skulle være langsommer.

I de flest af de tråde jeg har læst er folk altid endt med at bruge filsystemet, alle de systemer jeg kender til der bruger billeder, der ligger billederne i filsystemet.

Er der nogen der har nogle gode råd til hvorfor jeg ikke skal bruge databasen til at placerer min billeder i?
Avatar billede the_party_dog Nybegynder
27. juli 2006 - 12:35 #1
Den største ulempe :
Plads: Hvis din side skal have mange billeder, vil meget af din database blive brugt på det. De fleste sites lejer sig ind ved deres host, der får de kun minimal database plads stillet til rådighed. Den er oftes den plads som host vil have sig bedst betalt for.

Det kan blive nogle tunge database du skal lave, hvis du nu skal hente 40 billeder ud, hver på 100 kb. Det er en del du skal have udlæst, inden du overhovedet kan begynde at overveje vise dem for folk.

Men jeg kan kun give dig ret i dine overvejelser, du slipper for at skulle tænke på navne, da det hele ligger i databasen. For mig er det største(måske eneste) argument for at benytte databasen som lager til dine billeder.

Man kunne vel nok lave en dynamisk løsning som benyttede sig af en blanding. Hvis du nu gemte alle billeder i databasen, så når folk besøgte de din side, ville siden udlæse billederne og ligge dem ned i filsystemet. Ved næste besøgende kunne du tjekke om billederne eksisterede, hvis ikke skulle du udlæse dem fra databasen og ligge dem i filsystemet.

Hvis et billede bliver opdateret i databasen, skal du bare sammenligne dato oprettelser for billedet i filsystemet, med den dato som viser hvornår billedet er blevet skrevet til din database.

Dette er en HYPOTETISK opstilling. Jeg har ikke lavet den og kender ikke til nogen som har lavet den. Men det er lige hvad jeg kan komme på der kunne være smart. Tror endda at det måske er noget jeg skal lave næste gang nogen vil have noget med billeder og administrering af billeder.
Avatar billede the_party_dog Nybegynder
27. juli 2006 - 12:35 #2
Edit:
Det kan blive nogle tunge database KALD du skal lave, hvis du nu skal hente 40 billeder ud, hver på 100 kb. Det er en del du skal have udlæst, inden du overhovedet kan begynde at overveje vise dem for folk.
Avatar billede verakso Nybegynder
27. juli 2006 - 12:39 #3
Jeg ville ligge billederne til hver en tid i filstrukturen og så kun holde pegepindende i dtabasen. DB plads er dyrre, samt tungere at tage beackup af, end filerne.

I øvrigt kan jeg ikke se at det skulle være "nemmere" at vedligholde i en DB, dels ligger billederne som BLOBS, så du kan ikke umiddelbart "se" dem, og desuden så vil den "logik" der skal til for at gøre det "nememre" ved at smidde billederne i DB'en, ikke være meget anderledes end den "logik" der skal til for at holde det styr på billederne du efterlyser.

Jeg ville bruge DB'en til at give billederne en GUID, og så ligge dem i filstrukturen, og så DB'en til at holde styr på pegepindende.
Avatar billede leif Seniormester
27. juli 2006 - 12:42 #4
Jeg har et enkelt tilfælde smidt billeder og andre filer ind i databasen, men det var fordi der var meget strenge krav til at kun personer med korrekte rettigheder må kunne hente filerne.

Men ellers kan jeg ikke se logikken i det.
Avatar billede arne_v Ekspert
27. juli 2006 - 12:53 #5
http://www.eksperten.dk/spm/720751

(det er MySQL men problem stillingen er den samme)
Avatar billede c-sharp Nybegynder
27. juli 2006 - 13:00 #6
Det er da noget være bøvl at skulle holde styr på de billeder på filsystemet!

Når man sletter en post skal man slette i database og på filsystemet.
Hvis man udskifter et billede skal man husk at slette det gamle billede.
Hvis brugeren uploader 2 billeder med samme navn skal man håndtere det.

Derudover kan der gå en masse ting galt så man kun får slettet enten posten i databsen eller selv filen.
Avatar billede arne_v Ekspert
27. juli 2006 - 13:15 #7
Eller endnu være - man bruger transaktioner - fil systemer er normalt ikke
XA compliant.
Avatar billede c-sharp Nybegynder
28. juli 2006 - 06:07 #8
arne hvad mener du med den sidste kommentar?
Avatar billede arne_v Ekspert
28. juli 2006 - 13:38 #9
at man ikke kan bruge commit / rollback på fil systemet

(er det "XA compliant" du studser over ?)
Avatar billede c-sharp Nybegynder
07. august 2006 - 15:53 #10
Jeg er godt nok meget i tvivl om hvad jeg skal konkludere af dette her spørgsmål? De fleste taler for at bruge filsystemet til at lager billeder på, og kan ikke se nogle fordele i at bruge databasen :-/

Som jeg ser det er der kommet følgende frem omkring fordele og ulemper:

Ulemper:
1. Dyrt at host database plads (har ikke undersøgt endnu)
2. Tunge database (En database er vel lavet til at opbevare data)
3. Dårlig performance (Arnes eksepmel viser vel at det perfomer ok)

Fordele
1. Alle data samlet et sted
2. Nemmere administration (slet, overskriv osv.)
3. Nemmere at lave fortryd funktioner


Som jeg ser det er der næsten kun fordele ved at bruge DB til billeder, er der ikke flere der har en kommentar til emnet?
Avatar billede the_party_dog Nybegynder
08. august 2006 - 08:38 #11
c-sharp> Efter at have set det arne har skrevet, vil jeg da mene at database opbevaring er den bedste løsning, hvis ikke pladsen bliver for dyr. Jeg kan kun give dig ret i fordelene, de overskygger langt de meste. Du har kun prisen tilbage omkring hvad database pladsen koster.
Avatar billede verakso Nybegynder
08. august 2006 - 09:59 #12
Et billede siger mnere end NVARCHAR(1000)...

Anyway, så kommer det vel ned til i sidste ende, med hvad man selv foretrækker.
Du foretrækker at lave det i DB, da det er nemmere for dig, jeg foretrækker at lade billederne ligge som filer (med et GUID til db'en) da jeg bedre kan lide at jeg kan rode rundt i filstrukturen og se billederne, frem for at skulle rode med BLOB data i db'en.

Smag og behag kan som bekendt diskuteres, men man bliver sjældent enig.

The bottom line: Gør det du finder nemmest, der er indtil videre ikke nogle tekniske belæg for at gøre det anderledes. Så længe du har DB plads nok og den ikke er for dyr.
Den ISP jeg bruger giver 1.000MB diskplads med kun 50MB DB plads, så det er givet på forhånd at billeder ligger på disken ;)
Avatar billede c-sharp Nybegynder
08. august 2006 - 10:16 #13
Jeg har været lidt rundt og kigge priser for MS Sql hostning og jeg kan godt se at det bestemt ikke er billigt! Hvorfor skal det være så dyrt det er vel bare alm. harddisk plads?
Avatar billede arne_v Ekspert
09. august 2006 - 01:14 #14
godt spørgsmål

backup måske ?

antagelse om at
  databaser server belastning = k * database plads
måske ?

salgs trick - det lyder fint med 1 GB plads men hvis man ikke må have ISO, ZIP
eller lignende så er der ingen der kan bruge pladsen og det gennemsnitlige
forbrug er kun 10 MB - måske
Avatar billede verakso Nybegynder
09. august 2006 - 08:49 #15
Nok snarre et spørgsmål om økonomi og forrentning.
Har I set hvad en MS SQL koster nu om dage? - jeg må indrømme at der nok lige går en hel del tid inden jeg skifter til en 2005 der kræver mere end en Express udgave.

Jeg vil gætte på at en box med en stak diske og OS koster ca. 20K
SKal der så ligges en MS SQL på der skal hoste og bruges til web kan du godt ligge ca. 40K oven i...

Det undrer mig ikke at de fleste udbyder MySQL i stedet.
Avatar billede arne_v Ekspert
11. september 2006 - 23:50 #16
c-sharp>

Tid at få afsluttet her ?
Avatar billede c-sharp Nybegynder
13. september 2006 - 09:18 #17
Beklager!

I skal alle have tak for at bidrage med jeres kommentare, smid nogle svar så er der point.
Avatar billede arne_v Ekspert
13. september 2006 - 15:48 #18
.
Avatar billede c-sharp Nybegynder
19. september 2006 - 12:51 #19
Er der ikke flere der vil have point?
Avatar billede c-sharp Nybegynder
20. september 2006 - 10:00 #20
så lukker jeg igen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester