Мне нужно найти проектное решение для следующей задачи:
У меня есть база данных SQL Server, и она содержит таблицу заказов. Документы в формате PDF будут загружаться пользователями посредством простой загрузки файла с веб-страницы и назначения заказа. В заказе не более одного документа (возможно, ни одного документа, никогда не более одного). Для этого пользователь открывает веб-страницу, вводит номер заказа, получает отображаемый заказ и нажимает кнопку загрузки. Итак, я знаю, к какому заказу относится загруженный документ.
Сейчас я рассматриваю два варианта хранения документов на веб-сервере:
1) Расширить таблицу заказов на столбец varbinary (MAX) и сохранить документ PDF непосредственно в этом двоичном поле.
2) Сохраните файл PDF в определенной папке на диске и присвойте ему уникальное имя, связанное с заказом (например, мой номер заказа, который является первичным ключом в базе данных, или GUID, который я мог бы сохранить в дополнительном каталоге). столбец таблицы заказов). Возможно, мне придется хранить файлы в подпапках, по одной в месяц, и сохранять имя подпапки в строке заказа в базе данных, чтобы избежать получения слишком большого количества тысяч файлов в одной папке.
После сохранения файлов PDF их можно загрузить и просмотреть через браузер после ввода соответствующего номера заказа.
Я склоняюсь к варианту (1), потому что мне кажется, что управление данными проще, если все соответствующие данные находятся в одной базе данных. Но я немного боюсь, что со временем у меня могут возникнуть проблемы с производительностью, поскольку размер моей базы данных будет расти гораздо быстрее, чем при решении (2). Около 90% или даже 95% общего размера базы данных будет составлено только из этих сохраненных файлов PDF.
Вот дополнительная информация:
- Файлы PDF будут иметь размер около 100 килобайт каждый
- Около 1500 заказов / PDF-файлов в месяц
- Windows Server 2008 R2 / IIS 7.5
- SQL Server 2008 с пакетом обновления 1 (SP1) Express
- Не совсем уверен насчет аппаратного обеспечения, я полагаю, один QuadCore Proc. и 4 ГБ ОЗУ
- Приложение написано в ASP.NET Webforms 3.5 SP1
(Мне известно, что через 2 года я достигну предела в 4 ГБ для выпуска SQL Server Express с указанными выше числами. Но мы можем игнорировать это здесь, либо удаляя старые данные из базы данных, либо обновляя до полной лицензии). будет возможный вариант.)
Мой вопрос: каковы "за" и "против" опций и что бы вы порекомендовали? Возможно, у кого-то была похожая задача, и он может сообщить о своем опыте.
Заранее спасибо за ответ!
Связанный:
Хранение изображений в БД - да или нет?