Существуют разные мнения, стоит ли хранить двоичные файлы в таблицах базы данных или нет. Некоторые говорят, что все в порядке, некоторые предпочитают сохранять файлы в файловой системе и хранить только местоположение файла в БД.
Я один из тех, кто говорит, что все в порядке - у нас есть база данных SQL Server 2005> 440 ГБ, в которой мы храним файлы PDF и изображения. Он работает отлично, и у нас нет проблем с ним (например, со скоростью ... это, как правило, один из главных аргументов "файловой системы").
Если вы не знаете, как сохранить файлы в базе данных, Google «GetChunk» и «AppendChunk», и вы найдете примеры, такие как этот .
Относительно дизайна базы данных:
Лучше всего создать две таблицы: одну только с идентификатором и полем большого двоичного объекта (в котором хранятся файлы PDF), а другую - с идентификатором и дополнительными полями для фильтрации.
Если вы сделаете это таким образом, весь поиск и фильтрация будут происходить на маленькой таблице, и только когда вы знаете идентификатор файла, который вы хотите загрузить, вы попадаете на большую таблицу ровно один раз и загружаете файл.
Мы делаем это так и, как я уже говорил, база данных содержит почти 450 ГБ файлов, и у нас вообще нет проблем со скоростью.