10 ГБ - это не очень большой объем данных, так что вы, вероятно, можете использовать базу данных для ее хранения и не иметь больших проблем, но, конечно, лучше использовать производительность файловой системы, а для управления безопасностью лучше использовать БД (резервное копирование и согласованность).
К счастью, Sql Server 2008 позволяет вам иметь свой торт и есть его, используя:
Атрибут FILESTREAM
В SQL Server 2008 вы можете применить атрибут FILESTREAM к столбцу varbinary, а затем SQL Server сохранит данные для этого столбца в локальной файловой системе NTFS. Хранение данных в файловой системе дает два ключевых преимущества:
- Производительность соответствует производительности потоковой передачи файловой системы.
- Размер BLOB ограничен только размером тома файловой системы.
Однако этим столбцом можно управлять так же, как и любым другим столбцом больших двоичных объектов в SQL Server, поэтому администраторы могут использовать возможности управления и безопасности SQL Server для интеграции управления данными больших двоичных объектов с остальными данными в реляционной базе данных - без необходимости управлять данными файловой системы отдельно.
Определение данных как столбца FILESTREAM в SQL Server также обеспечивает согласованность на уровне данных между реляционными данными в базе данных и неструктурированными данными, которые физически хранятся в файловой системе. Столбец FILESTREAM ведет себя точно так же, как столбец BLOB, что означает полную интеграцию операций обслуживания, таких как резервное копирование и восстановление, полная интеграция с моделью безопасности SQL Server и полная поддержка транзакций.
Разработчики приложений могут работать с данными FILESTREAM с помощью одной из двух моделей программирования; они могут использовать Transact-SQL для доступа к данным и манипулировать ими так же, как стандартные BLOB-столбцы, или они могут использовать потоковые API Win32 с транзакционной семантикой Transact-SQL для обеспечения согласованности, что означает, что они могут использовать стандартные вызовы чтения / записи Win32 для FILESTREAM. BLOB, как если бы они взаимодействовали с файлами в файловой системе.
В SQL Server 2008 столбцы FILESTREAM могут хранить данные только на томах локального диска, а некоторые функции, такие как прозрачное шифрование и табличные параметры, не поддерживаются для столбцов FILESTREAM. Кроме того, нельзя использовать таблицы, содержащие столбцы FILESTREAM, в снимках базы данных или сеансах зеркального отображения базы данных, хотя поддерживается доставка журналов.