Pergunta

Eu fiz uma tela de manutenção de pessoas. O cliente quer que eu armazene a foto de todas as pessoas no banco de dados, e eu o fiz sem problemas. Eu tenho uma tabela separada para as imagens com dois campos, id_person e imagem.

Estou um pouco preocupado porque é a primeira vez que trabalho com imagens no banco de dados. Terei problemas de desempenho quando a tabela crescer além de 1000/5000 imagens? Suponho que o tamanho de cada imagem fará a diferença. Tenho certeza de que precisarei controlar que o usuário não salve imagens muito grandes no banco de dados.

Qual seria um limite de bom tamanho? O cliente precisa apenas de fotos do rosto, mas tenho certeza de que alguém tentará fazer as fotos com uma câmera "Última modelo" em plena qualidade;)

Obrigado.

Foi útil?

Solução

Geralmente é preferido manter uma pasta de imagens e o banco de dados apenas referencia a pasta. Idealmente, cada pessoa tem um ID exclusivo e os arquivos na pasta "imagens" correspondem a esse ID.

Se você realmente deseja armazenar os dados binários diretamente, pode obter uma foto de qualidade razoável em 8kb de um JPEG (aproximadamente 250x250 pix a 25% de qualidade). Obviamente, isso seria inaceitável para impressão, mas é bom para identificação.

Somente você saberá se pode aceitar 8kb adicional por linha no seu servidor de banco de dados.

Outras dicas

Se você deve fazê -lo dessa maneira, eu diria que o limite a apenas alguns kilobytes cada. No entanto, todo administrador de banco de dados do mundo provavelmente dirá que as imagens em um campo de banco de dados são uma idéia muito, muito ruim. Mais notável, você verá o desempenho diminuir drasticamente quando o arquivo de banco de dados crescer além de dois gigabytes de tamanho.

Eu preferiria fazer o que Jheddings disse e ter uma pasta com o ID de cada pessoa ser o nome do arquivo e apenas usar um .jpg padrão ou algo assim em um compartilhamento de rede para que todos os computadores que usam o aplicativo possam acessar as imagens.

Alguns descobrem que simplesmente usar o ID não é bom o suficiente, caso a foto precise ser excluída ou arquivada; nesse caso, eles colocarão um campo Nvarchar (Max) em seu banco de dados e armazenarão o caminho do arquivo de rede para a imagem em vez do real imagem.

Eu só iria despertar a imagem se seu cliente absolutamente não pudesse ter um caminho de compartilhamento de rede.

Contanto que esteja em tabela separada com id | Blob, apenas não deve haver problemas de desempenho buscando essa foto, mas por outro lado eu prefiro manter o banco de dados apenas referências a arquivos em HDD (ou melhor ainda se sua única foto do usuário você Não preciso de uma referência porque o usuário com ID 1 vai para /images/1.jpg)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top