Я экспериментировал в разных проектах, выполняя это обоими способами, и мы наконец решили, что проще использовать файловую систему. В конце концов, файловая система уже оптимизирована для хранения, извлечения и индексации файлов.
Один совет, который я хотел бы получить, это сохранить только «относительный корневой» путь к файлу в базе данных, а затем попросить вашу программу или ваши запросы / хранимые процедуры / промежуточное программное обеспечение использовать корневой параметр, специфичный для установки, для получить файл.
Например, если вы храните XYZ.Wav в C: \ MyProgram \ Data \ Sounds \ X \, полный путь будет
C:\MyProgram\Data\Sounds\X\XYZ.Wav
Но вы бы сохранили путь и / или имя файла в базе данных как:
X\XYZ.Wav
В другом месте, в базе данных или в файлах конфигурации вашей программы, сохраните корневой путь, такой как SoundFilePath, равный
C: \ MyProgram \ Data \ Sounds \
Конечно, где вы отделите корень от пути к базе данных, решать только вам. Таким образом, если вы перемещаете установку программы, вам не нужно обновлять базу данных.
Кроме того, если будет много файлов, найдите какой-нибудь способ хэширования путей, чтобы вы не попали в один каталог, содержащий сотни или тысячи файлов (в моем маленьком примере, есть подкаталоги, основанные на первом символе имени файла, но вы можете пойти глубже или использовать случайные хэши). Это также радует поисковые индексы.