Pergunta

Ontem eu fiz a pergunta sobre como eu deveria guardar meus arquivos.Depois de algumas pesquisas eu já decidiu ir com o armazenamento de arquivos "em" banco de dados.

Verifiquei a diferença entre armazenar os arquivos usando o filestream e armazenar os arquivos em banco de dados próprio.

Cada um tem suas vantagens e desvantagens.Para me ajudar com a minha pesquisa, esse site me ajudou muito:http://www.codeproject.com/KB/database/SqlFileStream.aspx

Então, basicamente, ele diz que salvar os arquivos usando o filestream é melhor se os arquivos são maiores do que 1 mb.

Mas eu descobri outro problema com filestreaming.Se você excluir um registro no banco de dados o arquivo ainda existe no sistema de arquivos.

Portanto, eu preciso de vocês opinião.O que usar?Filestream ou salvar os arquivos no banco de dados usando VARBINARY?

Grtz, M.

Foi útil?

Solução

Os dados no sistema de arquivos, poderá (deverá) ser removido logo após você excluir os dados do banco de dados, embora isso seja feito em um sistema separado thread em segundo plano, então ele pode permanecer no sistema de arquivos até que, basicamente, o coletor de lixo é executado novamente.No entanto, todos os resultados acedidos através de qualquer um dos filestream APIs (i.e.tsql ou streaming) será garantida a não aceder a qualquer coisa que tenha sido removido, seja ou não o sistema de arquivos de dados ainda reside no disco (ÁCIDO é assegurada com filestream).

Outras dicas

Use filestreams.

Os bancos de dados são projetados para armazenar dados relacionais, os sistemas de arquivos são projetados para armazenar arquivos.

Ouvi frequentemente dos funcionários da Microsoft que armazenando grandes blobs em um SQL Server 2000/2005 (não consigo lembrar) não é uma boa ideia.

Considere também Backup: um DatabaseFile é um arquivo (editar: se você o configurar). Se você estiver usando o FileStreams, poderá fazer backup de arquivos individuais.

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