Fördelar med att lagra bilder/blobbar i databasen
- Att lagra bilderna är automatiskt en del av dina transaktioner
- Du behöver inte rensa filsystemet och synkronisera det med databasen
- Åtkomst till bilderna styrs på samma sätt som åtkomst till resten av data
- Bara en enda säkerhetskopia att bry sig om
- En databas är vanligtvis bättre lämpad för lagrade miljoner (om inte miljarder) poster. I filsystemet måste du hitta en smart fördelning över flera kataloger. En enda katalog kommer inte att kunna hantera miljontals filer effektivt.
- För vissa arbetsbelastningar kan det faktiskt gå snabbare att lagra bilderna i databasen.
För SQL Server har Microsoft faktiskt testat detta:
http://research.microsoft.com/apps/pubs/default.aspx?id=64525
Jag skulle inte bli förvånad om andra databaser beter sig på liknande sätt.
Nackdelar:
- Gör din databas och därmed dina säkerhetskopior mycket större (tänk på tiden det tar att återställa den).
- filsystem är vanligtvis bättre med inkrementella säkerhetskopior (såvida du inte har Oracles RMAN alltså)
- bilderna kan inte nås av andra applikationer (t.ex. en webbserver, verktyg för att ändra storlek på bilder, FTP-server)
- Bilder kan inte spridas över ett innehållsdistributionsnätverk för belastningsbalansering i en webbapplikation (för att ta bort belastningen från applikationsservern)
- vanlig tro är att hämtningen från databasen kommer att gå långsammare.
- för vissa databaser kan hämtning av blobbar faktiskt minska effektiviteten i databascachen (inte så för Oracle, SQL Server och PostgreSQL. Jag vet dock inte för MySQL)