none
Armazenar Imagens no Banco ou no HD RRS feed

  • Pergunta

  • Bom dia,

    Eu estou em um projeto que vai armazenar imagens, são dezenas de milhares de imagens em pdf tamanho de papel a4.
    E minha dúvida é a eterna "Armazenar as imagens no banco ou do HD".
    As literaturas que consegui são muito inconclusivas, todas trazem como inconveniente do armazenamento no banco o fato de que ele vai inchar, isto é meio óbvio o que eu gostaria de saber é se o banco vai perder performance, se ele vai perder então de quanto vai se esta perda, tem algum recurso para gerenciar ou mitigar esta perda, porque se eu armazenar no HD eu vou precisar criar no sistema  uma série de rotinas para gerenciar estas imagens trabalho este que o banco faz sozinho.
    Tecnicamente tem alguma literatura que recomenda não armazenar imagens no banco ou o contrario?

    Como todos devem ter percebido minha preferência seria armazenar estas imagens no banco mas o que eu não posso é esperar ele estar com 20gb pra descobrir que peguei o ônibus errado. 

    Alguém pode me ajudar com estas respostas, antecipadamente muito obrigado a todos.
    quarta-feira, 10 de junho de 2020 11:05

Respostas

  • se for para usar pdf fora do banco entao use filestream: https://docs.microsoft.com/pt-br/sql/relational-databases/blob/filestream-sql-server

    Quando usar FILESTREAM

    No SQL Server, os BLOBs podem ser dados varbinary(max) padrão que armazenam os dados em tabelas ou objetos varbinary(max) FILESTREAM que armazenam os dados no sistema de arquivos. O tamanho e o uso dos dados determinam se você deve usar armazenamento de banco de dados ou armazenamento de sistema de arquivos. Se as condições a seguir forem verdadeiras, você deve considerar o uso de FILESTREAM:

    • Os objetos que estão sendo armazenados têm, em média, mais de 1 MB.
    • O acesso rápido para leitura é importante.
    • Você está desenvolvendo aplicativos que usam uma camada intermediária para lógica de aplicativo.
     
    Para objetos menores, o armazenamento de BLOBs varbinary(max) no banco de dados, normalmente, fornece melhor desempenho de streaming.


    quarta-feira, 10 de junho de 2020 11:24

Todas as Respostas

  • se for para usar pdf fora do banco entao use filestream: https://docs.microsoft.com/pt-br/sql/relational-databases/blob/filestream-sql-server

    Quando usar FILESTREAM

    No SQL Server, os BLOBs podem ser dados varbinary(max) padrão que armazenam os dados em tabelas ou objetos varbinary(max) FILESTREAM que armazenam os dados no sistema de arquivos. O tamanho e o uso dos dados determinam se você deve usar armazenamento de banco de dados ou armazenamento de sistema de arquivos. Se as condições a seguir forem verdadeiras, você deve considerar o uso de FILESTREAM:

    • Os objetos que estão sendo armazenados têm, em média, mais de 1 MB.
    • O acesso rápido para leitura é importante.
    • Você está desenvolvendo aplicativos que usam uma camada intermediária para lógica de aplicativo.
     
    Para objetos menores, o armazenamento de BLOBs varbinary(max) no banco de dados, normalmente, fornece melhor desempenho de streaming.


    quarta-feira, 10 de junho de 2020 11:24
  • Amauri, bom dia.

    Crie colunas para registrar o nome original do arquivo e também o tipo de arquivo (pdf, jpeg, xls etc). Isto facilitará quando for necessário recriar o arquivo original fora do banco de dados.


    • Editado Delphos-TI quinta-feira, 11 de junho de 2020 12:23
    quinta-feira, 11 de junho de 2020 12:12