Por quê não é recomendado gravar arquivos e imagens no database?

4 respostas
vpmaciel1981

Por quê não é recomendado gravar arquivos e imagens no database ?

4 Respostas

TerraSkilll

Há casos e casos, pode haver momentos em que gravar no banco de dados é algo viável (ou mesmo necessário).

O que ocorre muito é o desenvolvedor querer tratar arquivos no geral (imagens, documentos, áudios) como outros tipos de dados (varchar, datetime, float, decimal, int), sendo que o contexto de uso de um arquivo geralmente é diferente do contexto de uso desses dados, muitas vezes por simples preguiça de lidar com cópia de arquivos. Por isso, para esse tipo de pergunta, a recomendação geral é não gravar.

Alguns exemplos baseado na minha experiência em aplicações comerciais (ERPs, CRM e CMS’s):

  • arquivos normalmente são maiores que outros campos, e tê-los dentro da base aumenta o tamanho dela, dificultando a manutenção;
  • raramente é necessário - ou mesmo possível - fazer buscas no conteúdo de um arquivo (como fazer where numa imagem, por exemplo?);
  • consultas que retornam os campos com arquivos podem ser lentas e usar muita memória, sem que o arquivo seja imediatamente necessário. É mais viável ter os arquivos fora do banco para diversos processamentos, deixando-os acessíveis diretamente;
  • os tipos de dados que o banco suporta às vezes exigem conversões para armazenar arquivos. Ficar convertendo a cada vez que o arquivo é necessário torna-se custoso;

Que me lembre, só em 1 ou 2 casos até hoje trabalhei em projetos que mantinham arquivos binários na base de dados, por motivos bem específicos.

Abraço.

edpickler

Porque é pesado, exige processamento, desnecessário de se fazer, e vai competir com as transações do sistema. Uma bomba relógio.

wallacecampanha

Simples, pense em 1000 cadastros com imagens de 2mb, quanto de armazenamento você teria de ter ? Pense agora em um crescimento mensal de 50%, gigante os resultados certo?

Você precisa separar as responsabilidades e tratá-las cada uma da melhor maneira (pensando sempre em uma aplicação grande, o que é facil de ocorrer).

TerraSkilll

@edpickler @wallacecampanha

Buscar ajudar e adicionar pontos de vista aos tópicos é válido, mas recomendo sempre darem uma olhada nas datas dos tópicos e das últimas respostas antes de responder, e focar nos tópicos mais recentes.

Infelizmente, noto que isso é comum em sites que usam o sistema Discourse, pois ele costuma recomendar tópicos antigos, quando não são mais relevantes e, em alguns casos, o usuário que fez a pergunta original já nem participa mais. Então acaba recaindo pros usuários prestar atenção nas datas das postagens.

Abraços.

Criado 29 de outubro de 2021
Ultima resposta 21 de dez. de 2022
Respostas 4
Participantes 4