Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Armazenando arquivos no SQL Server


Há um artigo muito bom da Microsoft Research chamado To Blob or Not To Blob.

A conclusão deles após um grande número de testes e análises de desempenho é esta:

  • se suas fotos ou documentos normalmente têm tamanho inferior a 256 K, armazená-los em uma coluna VARBINARY do banco de dados é mais eficiente

  • se suas imagens ou documentos têm normalmente mais de 1 MB de tamanho, armazená-los no sistema de arquivos é mais eficiente (e com o atributo FILESTREAM do SQL Server 2008, eles ainda estão sob controle transacional e fazem parte do banco de dados)

  • entre esses dois, é um pouco difícil dependendo do seu uso

Se você decidir colocar suas imagens em uma tabela do SQL Server, eu recomendo usar uma tabela separada para armazenar essas imagens - não armazene a foto do funcionário na tabela do funcionário - mantenha-as em uma tabela separada. Dessa forma, a tabela Employee pode permanecer enxuta, média e muito eficiente, supondo que você nem sempre precise selecionar a foto do funcionário também como parte de suas consultas.

Para grupos de arquivos, confira Arquivos e arquitetura de grupo de arquivos para uma introdução. Basicamente, você criaria seu banco de dados com um grupo de arquivos separado para grandes estruturas de dados desde o início ou adicionaria um grupo de arquivos adicional posteriormente. Vamos chamá-lo de "LARGE_DATA".

Agora, sempre que você tiver uma nova tabela para criar que precise armazenar colunas VARCHAR(MAX) ou VARBINARY(MAX), você pode especificar este grupo de arquivos para os dados grandes:
 CREATE TABLE dbo.YourTable
     (....... define the fields here ......)
     ON Data                   -- the basic "Data" filegroup for the regular data
     TEXTIMAGE_ON LARGE_DATA   -- the filegroup for large chunks of data

Confira a introdução do MSDN em grupos de arquivos e brinque com ela!