arquivos do disco no servidor ou binário para arquivos de som e imagem em SQL com aplicação ASP.Net
-
22-08-2019 - |
Pergunta
Estou construindo uma aplicação web # ASP.Net C que será usando lotes de arquivos de som e arquivos de imagem. desempenho, considerando, seria melhor ser para armazenar todos os arquivos em SQL como o tipo de dados de imagem e recuperar do banco de dados ou armazenar / arquivar o arquivo de disco no servidor e armazenar o caminho em sql? Im curioso sobre os prós e contras -. Diferentes da óbvia de espaço de armazenamento e gerenciamento
Nenhuma solução correta
Outras dicas
Meu cliente atual está actualmente a analisar as mesmas opções. Existem algumas desvantagens a considerar:
Guardar como tipo de dados IMAGE:
- Você só precisa fazer backup de seu banco de dados em vez do DB e locais no sistema de arquivos
- Você não tem que se preocupar com arquivos que estão sendo deslocadas sem DB sendo atualizado com a nova localização ou quaisquer outros problemas com pendurado ponteiros para arquivos inexistentes
O armazenamento como um arquivo com um caminho no DB:
- ligeiramente mais rápido de acesso (nós estaremos quantificar isso nos próximos dias)
Inicialmente eu pensei que também seria um problema com o cache do lado do cliente de imagens. Por exemplo, quando NET recebe a imagem fora do DB navegador do cliente não pode armazenar em cache-lo - parece que uma nova imagem de cada vez. Soube então que a menos que você está dando aos usuários acesso em nível de arquivo (a segurança não-não) você tiver o mesmo problema usando acesso direto ao arquivo.
A partir de uma perspectiva de desempenho deve ser melhor para armazenar os sons / imagens como arquivos e apenas manter uma referência para o local no banco de dados. Isso vai poupar você de ter que transferir os dados do banco de dados para o servidor web e reconstituir o "file" através de um manipulador sempre que é referenciado. Claro, caching poderia ajudar a isso, mas você ainda pagar a pena em cada cache miss. Esta solução é também, para o meu dinheiro, um pouco menos complicado em termos de código que precisa ser desenvolvido, embora você tem problemas com colisões e alguma configuração segurança extra (potencialmente) para fazer se você está permitindo upload.