sql >> Database >  >> RDS >> Mysql

Wanneer afbeeldingen opslaan in een database (mySQL) en wanneer niet? (Afbeelding koppelen aan item in database)

Voordelen van het opslaan van afbeeldingen/blobs in de database

  • Het opslaan van de afbeeldingen maakt automatisch deel uit van uw transacties
  • Het is niet nodig om het bestandssysteem op te schonen en te synchroniseren met de database
  • Toegang tot de afbeeldingen wordt op dezelfde manier beheerd als toegang tot de rest van de gegevens
  • Slechts één enkele back-up om om te geven
  • Een database is meestal beter geschikt voor opgeslagen miljoenen (zo niet miljarden) records. In het bestandssysteem moet je een slimme verdeling vinden over meerdere mappen. Een enkele map zal niet in staat zijn om miljoenen bestanden efficiënt te verwerken.
  • Voor sommige workloads zou het opslaan van de afbeeldingen in de database zelfs sneller kunnen zijn.
    Voor SQL Server heeft Microsoft dit daadwerkelijk getest:
    http://research.microsoft.com/apps/pubs/default.aspx?id=64525
    Het zou me niet verbazen als andere databases zich op een vergelijkbare manier zouden gedragen.

Nadelen:

  • Maakt je database en dus je back-ups een stuk groter (denk aan de tijd die het kost om het te herstellen).
  • bestandssystemen zijn meestal beter met incrementele back-ups (tenzij u RMAN van Oracle hebt, dat is)
  • de afbeeldingen zijn niet toegankelijk voor andere toepassingen (bijv. een webserver, hulpprogramma's voor het vergroten of verkleinen van afbeeldingen, FTP-server)
  • Afbeeldingen kunnen niet worden verspreid over een inhoudsdistributienetwerk voor taakverdeling in een webtoepassing (om de toepassingsserver te ontlasten)
  • de algemene overtuiging is dat het ophalen uit de database langzamer zal zijn.
  • voor sommige databases kan het ophalen van de blobs de efficiëntie van de databasecache verminderen (niet zo voor Oracle, SQL Server en PostgreSQL. Ik weet het niet voor MySQL)


  1. De parameterlimiet van 2100 bereiken (SQL Server) bij gebruik van Bevat()

  2. R12.2 Online patching gereedheidsrapport

  3. mysql importeren op windows

  4. CakePHP gebruikt meerdere databases voor modellen