ОК, поехали. Вариант 2 - это действительно плохая идея - в итоге вы получаете непроверяемые ограничения целостности и резервные копии, которые не гарантируются согласованными для каждого определения, поскольку вы не можете создавать резервные копии на определенный момент времени. Не проблема в сценариях MOST, она превращается в ситуацию, когда происходит более сложное (на определенный момент времени) восстановление.
Варианты 1 и 3 довольно равны, хотя и с некоторыми последствиями.
- Файловый поток может занимать гораздо больше дискового пространства. По сути, в каждой версии есть руководство, если вы делаете обновления, старые файлы остаются до следующей резервной копии.
OTOH файлы не учитываются как размер в дБ (экспресс-издание - не против предела 10 ГБ, если вы его используете), и доступ к ним возможен с помощью общего файлового ресурса Это добавляет гибкости.
В базе данных есть самые ограниченные параметры доступа (у веб-сервера нет возможности просто открыть файл после получения пути из sql - он должен направлять весь файл через уровень протокола sql), но имеет преимущества в том, чтобы иметь меньше файлов (номеров). Поместить капли в отдельный стол, а другой - в отдельный набор шпинделей, может быть стратегически хорошей идеей.
По поводу ваших вопросов:
1: Я бы пошел в хранилище базы данных. Попробуйте оба - файловый поток и нет. В любом случае, если вы используете один и тот же API, это простое изменение в определении таблицы.
2: Да, хуже, чем прямой доступ к файлам, но он будет более защищен, чем прямой доступ к файлам. В противном случае я не думаю, что файловый поток и блоб имеют существенное значение.
3: где у вас огромная резервная копия? Извините, что спросил, но ваша 340 ГБ не совсем большая база данных. И вы должны поддержать это в любом случае. Лучше сделать это в одном согласованном состоянии, чего вы добьетесь с хранилищем БД. Плюс целостность (никто случайно не удалит неиспользуемые документы без очистки базы данных). База данных не намного больше, чем это разделение, и это простая резервная копия в одном месте.
В конце концов, вопрос заключается в целостности БД и простоте резервного копирования. Выиграйте за SQL Server, если вы не стали большими - и это означает 360 терабайт данных.