No SQL Server 2008, você tem a opção de usar
FILESTREAM
para armazenar grandes dados binários. Nesse caso, os dados estarão disponíveis em consultas, mas armazenados fisicamente no sistema de arquivos. A Microsoft publicou um Artigo técnico do SQL Server que contém informações úteis sobre como e quando usar
FILESTREAM
. Na 8ª página, o gráfico de comparação mostra que o FILESTREAM tem vantagem sobre BLOBs armazenados no banco de dados se os dados armazenados forem maiores que 1 MB . OBSERVAÇÃO FILESTREAM não está disponível no SQL Server 2005! (E SQL Server 2005 não é mais suportado pela Microsoft - exceto o suporte estendido)
Mais alguns artigos para ler
Você pode ver alguns gráficos de comparação no blogue SQLSkills sobre seu desempenho.
A Microsoft Research também publicou um Artigo técnico:Para BLOB ou não para BLOB sobre fluxos de arquivos e BLOBS.
Você pode tentar, mas como sempre, você precisa executar algum teste específico do ambiente para ter certeza de que essa solução funciona ou não. Se este for um produto no mercado, é uma boa ideia implementar o suporte FILESTREAM como um recurso de ativação ou desativação.
Apenas uma observação
NVARCHAR
é duas vezes maior que VARBINARY
porque o SQL Server armazena cada caractere em 2 bytes no unicode (NCHAR
, NVARCHAR
, etc) colunas.