Хранение файлов в SQL и Хранение на жестком диске веб-сервера - PullRequest
1 голос
/ 02 февраля 2012

поэтому у меня есть этот сайт в asp.net, который позволяет пользователю загружать и сохранять свои важные файлы на сервер, который по требованию пользователя (когда пользователь входит в систему и просматривает свои файлы и нажимает на один из его файлов) разрешаетсябыть загруженным на клиентский компьютер.
Кроме того, размер файла, который можно сохранить, составляет менее 25 МБ (по крайней мере, на данный момент!), файлы могут быть только любого типа, включая, но не ограничиваясь .txt, .rtf,.pdf, .doc, .docx, .jpg, .png и т. д.
Итак, вопрос в том, где мне хранить файлы с наилучшей производительностью, если хранить файлы на SQL Server (используя SQL Server 2008, чтобы вы знали,, visual studio 2008 sp1) в столбце (возможно, в формате BLOB?) или я должен хранить их на жестком диске сервера.
Кроме того, учитывая максимальный размер, скажем, даже если 10 пользователей загрузили файлы, скажем, 20 МБ, этобудет занимать 200 МБ памяти!Если кто-нибудь может сказать, насколько это приведет к увеличению размера базы данных, если эти файлы будут храниться в базе данных?
Я имею в виду, сколько требований к пространству будет расти в базе данных по сравнению с хранилищем в файловой системе, что было бы лучше впроизводительность

Ответы [ 3 ]

2 голосов
/ 02 февраля 2012

См. Эту статью Microsoft: Для блобов или нет

ИМХО - у обоих методов есть множество преимуществ и недостатков - хранить файлы в БД и хранить их в FS

НО для sql server 2008 есть еще один вариант - хранить файлы в FileSYstem как часть БД, см. Обзор FILESTREAM

0 голосов
/ 02 февраля 2012

В соответствии с документом msdn, который предоставил Олег, и некоторыми другими критериями / мнениями, доступными для файлов меньшего размера (~ 0,25 МБ и менее), использование db может быть значительно быстрее, однако я бы оставил это решение только для крайне обоснованных целей.В большинстве случаев я бы сказал, что хранение файлов на жестком диске более подходящее, гибкое и ... естественное.

Однако я не должен ограничивать ваш анализ только производительностью.Примите во внимание различные аспекты, такие как:

  • безопасность
  • резервное копирование
  • масштабируемость (например, репликация)

, которые обычно требуют дополнительного вниманияпри использовании дополнительных источников данных.

0 голосов
/ 02 февраля 2012

Лично я всегда использовал бы дисковое хранилище для файловых данных, как это. База данных в конечном итоге хранит файловые данные на диске в любом случае просто с дополнительным уровнем затрат и абстракции. Абстракция неизменно добавляет барьеры масштабирования и производительности. Например, проще перейти от файла на локальном жестком диске к файлу в CDN, чем из базы данных, и гораздо проще добавить больше места на диске, когда вам это нужно, без необходимости увеличения размера базы данных.

Я создал системы, подобные тем, которые вы описали в прошлом, исходя из опыта, стоит потратить некоторое время на обдумывание абстракции в том, как файлы вашего магазина могут быть заменены или обновлены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...