Armazenamento de imagens: Bancos de Dados ou Arquivos?
O blog Grantus Maximus publicou um artigo ressuscitando a clássica discussão sobre técnicas para armazenamento de imagens, fotos e figuras e outros arquivos binários.
Aplicações com uso de imagens (como catálogos de produtos, comércio eletrônico) sempre trazem a seus arquitetos esta dúvida. As imagens podem ser armazenadas em campos BLOB de bancos de dados, o que facilita a programação e o acesso às imagens. Entretanto, o tamanho do banco de dados cresce exponencialmente e leva à segunda opção: armazenar no banco de dados o endereço da imagem no sistema de arquivos.
O acesso às imagens armazenadas em sistemas de arquivos é ligeiramente mais rápida, especialmente com o uso adequado de cache em servidores Proxy.
A armazenagem em banco de dados centraliza os dados, é mais portável e facilita a operação de backup. Adicionalmente, essa solução facilita o controle das imagens, dificultando a exclusão de imagens necessárias ou a redundância não controlada de arquivos.
Se seu aplicativo faz uso moderado de imagens e se o tamanho delas também é mediano, o uso de banco de dados pode ser aconselhável. Grande quantidade de imagens e alto tráfego recomendam o uso do sistema de arquivos.
O uso de sistemas de arquivos deve ser beneficiada com dois cuidados:
- Dividir as imagens em diversos diretórios, permitindo melhor acesso por parte do sistema operacional pela limitação do tamanho da tabela de arquivos em cada diretório.
- Utilizar um método de nomeação de arquivos e diretórios que dificulte o acesso direto às imagens, sem intermediação de seu aplicativo.