Мне нужно найти решение для решения следующей задачи:
У меня есть база данных 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 SP1 Express
- Не совсем уверен в аппаратном обеспечении, я считаю, что один QuadCore Proc. и 4 ГБ оперативной памяти.
- Приложение написано в ASP.NET Webforms 3.5 SP1
(Я знаю, что через два года я получу ограничение на 4 Гбайт в выпуске SQL Server Express, но не могу забыть об этом здесь, удалив старые данные из базы данных или перейдя на полную лицензию будет возможным вариантом.)
Мой вопрос: что такое Pro и Contras опций и что вы порекомендуете? Возможно, у кого-то была аналогичная задача и он мог сообщить о своем опыте.
Заранее благодарю за ответ!
Связанный: