Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Quando armazenar imagens em um banco de dados (mySQL) e quando não? (Vinculando imagem ao item no banco de dados)


Vantagens de armazenar imagens/blobs no banco de dados
  • Armazenar as imagens faz parte automaticamente de suas transações
  • Não é necessário limpar o sistema de arquivos e sincronizá-lo com o banco de dados
  • O acesso às imagens é controlado pelos mesmos meios que o acesso ao restante dos dados
  • Apenas um único backup para se preocupar
  • Um banco de dados geralmente é mais adequado para armazenar milhões (se não bilhões) de registros. No sistema de arquivos, você precisa encontrar uma distribuição inteligente em vários diretórios. Um único diretório não será capaz de lidar com milhões de arquivos com eficiência.
  • Para algumas cargas de trabalho, armazenar as imagens no banco de dados pode ser mais rápido.
    Para o SQL Server, a Microsoft realmente testou isso:
    http://research.microsoft.com/apps/pubs/default.aspx?id=64525
    Eu não ficaria surpreso se outros bancos de dados se comportassem de maneira semelhante.

Desvantagens:
  • Torna seu banco de dados e, portanto, seus backups muito maiores (pense no tempo que leva para restaurá-lo).
  • sistemas de arquivos geralmente são melhores com backups incrementais (a menos que você tenha o RMAN da Oracle)
  • as imagens não podem ser acessadas por outros aplicativos (por exemplo, um WebServer, ferramentas de redimensionamento de imagem, servidor FTP)
  • As imagens não podem ser distribuídas em uma rede de distribuição de conteúdo para balanceamento de carga em um aplicativo da Web (para aliviar a carga do servidor de aplicativos)
  • a crença comum é que a recuperação do banco de dados será mais lenta.
  • para alguns bancos de dados, recuperar os blobs pode realmente diminuir a eficiência do cache do banco de dados (não é assim para Oracle, SQL Server e PostgreSQL. Mas não sei para MySQL)