Fordele ved at gemme billeder/blobs i databasen
- At gemme billederne er automatisk en del af dine transaktioner
- Ingen grund til at rydde op i filsystemet og synkronisere det med databasen
- Adgang til billederne styres på samme måde som adgang til resten af dataene
- Kun én enkelt sikkerhedskopi at bekymre sig om
- En database er normalt bedre egnet til lagrede millioner (hvis ikke milliarder) poster. I filsystemet skal du finde en smart fordeling over flere mapper. En enkelt mappe vil ikke være i stand til at håndtere millioner af filer effektivt.
- For nogle arbejdsbelastninger kunne lagring af billederne i databasen faktisk være hurtigere.
For SQL Server har Microsoft faktisk testet dette:
http://research.microsoft.com/apps/pubs/default.aspx?id=64525
Jeg ville ikke blive overrasket, hvis andre databaser opførte sig på lignende måde.
Ulemper:
- Gør din database og dermed dine backups meget større (tænk på den tid det tager at gendanne den).
- filsystemer er normalt bedre med inkrementelle sikkerhedskopier (medmindre du har Oracles RMAN altså)
- billederne kan ikke tilgås af andre applikationer (f.eks. en webserver, værktøjer til billedstørrelsesændring, FTP-server)
- Billeder kan ikke spredes på tværs af et indholdsdistributionsnetværk til belastningsbalancering i en webapplikation (for at fjerne belastningen fra applikationsserveren)
- den almindelige opfattelse er, at hentning fra databasen vil være langsommere.
- for nogle databaser kan hentning af blobs faktisk reducere effektiviteten af databasecachen (ikke tilfældet for Oracle, SQL Server og PostgreSQL. Jeg kender dog ikke til MySQL)