10 Gb não é uma grande quantidade de dados, então você provavelmente pode usar o banco de dados para armazená-lo e não tem grandes problemas, mas é claro que é melhor usar o sistema de arquivos em termos de desempenho e gerenciamento de segurança é melhor usar o banco de dados (backups e consistência).
Felizmente, o Sql Server 2008 permite que você tenha seu bolo e coma também, com:
O atributo FILESTREAM
No SQL Server 2008, você pode aplicar o atributo FILESTREAM a uma coluna varbinary e o SQL Server armazena os dados dessa coluna no sistema de arquivos NTFS local. Armazenar os dados no sistema de arquivos traz dois benefícios principais:
- O desempenho corresponde ao desempenho de streaming do sistema de arquivos.
- O tamanho do BLOB é limitado apenas pelo tamanho do volume do sistema de arquivos.
No entanto, a coluna pode ser gerenciada como qualquer outra coluna BLOB no SQL Server, para que os administradores possam usar os recursos de gerenciamento e segurança do SQL Server para integrar o gerenciamento de dados BLOB com o restante dos dados no banco de dados relacional, sem precisar gerenciar o dados do sistema de arquivos separadamente.
Definir os dados como uma coluna FILESTREAM no SQL Server também garante a consistência de nível de dados entre os dados relacionais no banco de dados e os dados não estruturados fisicamente armazenados no sistema de arquivos. Uma coluna FILESTREAM se comporta exatamente da mesma forma que uma coluna BLOB, o que significa integração total de operações de manutenção, como backup e restauração, integração completa com o modelo de segurança do SQL Server e suporte total a transações.
Os desenvolvedores de aplicativos podem trabalhar com dados FILESTREAM por meio de um dos dois modelos de programação; eles podem usar o Transact-SQL para acessar e manipular os dados como colunas BLOB padrão ou podem usar as APIs de streaming do Win32 com semântica transacional Transact-SQL para garantir a consistência, o que significa que eles podem usar chamadas de leitura/gravação padrão do Win32 para FILESTREAM BLOBs como fariam se estivessem interagindo com arquivos no sistema de arquivos.
No SQL Server 2008, as colunas FILESTREAM só podem armazenar dados em volumes de disco local e alguns recursos, como criptografia transparente e parâmetros com valor de tabela, não têm suporte para colunas FILESTREAM. Além disso, você não pode usar tabelas que contenham colunas FILESTREAM em instantâneos de banco de dados ou sessões de espelhamento de banco de dados, embora o envio de logs seja suportado.