В SQL Server 2005 у вас есть только выбор использования VARBINARY(MAX)
для хранения файлов в таблице базы данных или для их хранения вне.
Очевидный недостаток - оставить их вне базы данных - база данных не может реально контролировать то, что с ними происходит; они могут быть перемещены, переименованы, удалены .....
SQL Server 2008 вводит атрибут FILESTERAM
для типов VARBINARY(MAX)
, который позволяет вам оставлять файлы вне таблицы базы данных, но все еще под транзакционным контролем базы данных - например, Вы не можете просто удалить файлы с диска, файлы являются неотъемлемой частью базы данных и, следовательно, копируются и сохраняются вместе с ней. Отлично, если вам это нужно, но это может привести к огромным резервным копиям! : -)
При запуске SQL Server 2008 были представлены «лучшие практики» в отношении того, когда хранить вещи в базе данных напрямую, а когда использовать FILESTREAM. Это:
- если размер файлов обычно меньше 256 КБ, лучшим вариантом будет таблица базы данных
- если размер файлов обычно превышает 1 МБ или может превышать 2 ГБ, тогда FILESTREAM (или в вашем случае: простая старая файловая система) - ваш лучший выбор
- нет рекомендаций для файлов между этими двумя полями
Кроме того, чтобы не оказывать негативного влияния на производительность ваших запросов, часто рекомендуется помещать большие файлы в отдельную таблицу целиком - не нужно, чтобы огромные капли были частью ваших обычных таблиц, к которым вы обращаетесь, - но вместо этого создайте отдельную таблицу, к которой вы будете запрашивать только один раз, если вам действительно нужны мегабайты документов или изображений.
Так что это может дать вам представление о том, с чего начать!