Mysql
 sql >> Database >  >> RDS >> Mysql

Quando memorizzare le immagini in un database (mySQL) e quando no? (Collegamento dell'immagine all'elemento nel database)

Vantaggi della memorizzazione di immagini/blob nel database

  • La memorizzazione delle immagini fa automaticamente parte delle tue transazioni
  • Non è necessario ripulire il file system e sincronizzarlo con il database
  • L'accesso alle immagini è controllato con gli stessi mezzi dell'accesso al resto dei dati
  • Un solo backup di cui preoccuparsi
  • Un database è generalmente più adatto per archiviare milioni (se non miliardi) di record. Nel filesystem devi trovare una distribuzione intelligente su più directory. Una singola directory non sarà in grado di gestire milioni di file in modo efficiente.
  • Per alcuni carichi di lavoro la memorizzazione delle immagini nel database potrebbe essere effettivamente più veloce.
    Per SQL Server, Microsoft ha effettivamente testato questo:
    http://research.microsoft.com/apps/pubs/default.aspx?id=64525
    Non sarei sorpreso se altri database si comportassero in modo simile.

Svantaggi:

  • Rende il tuo database e quindi i tuoi backup molto più grandi (pensa al tempo necessario per ripristinarlo).
  • I filesystem sono generalmente migliori con i backup incrementali (a meno che tu non disponga di RMAN di Oracle)
  • Le immagini non sono accessibili da altre applicazioni (ad es. un server Web, strumenti di ridimensionamento delle immagini, server FTP)
  • Le immagini non possono essere distribuite su una rete di distribuzione dei contenuti per il bilanciamento del carico in un'applicazione Web (per alleggerire il server delle applicazioni)
  • La credenza comune è che il recupero dal database sarà più lento.
  • per alcuni database il recupero dei BLOB potrebbe effettivamente ridurre l'efficienza della cache del database (non così per Oracle, SQL Server e PostgreSQL. Non so per MySQL però)