sql >> Databasteknik >  >> RDS >> Mysql

När ska bilder lagras i en databas (mySQL) och när inte? (Länkar bild till objekt i databasen)

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)


  1. Behöver konvertera Oracle Merge till query till PostgreSQL

  2. Ta bort SCHEMABINDING från en vy i SQL Server

  3. Hur man inte kallar Hekaton inbyggt kompilerade lagrade procedurer

  4. Laravels tidsstämpel uppdateras utan explicit uppmaning att göra det