Обработка изображений и файловых вложений в системе управления контентом - PullRequest
4 голосов
/ 08 октября 2010

Допущения: стек Microsoft (ASP.NET; SQL Server).

Некоторые системы управления контентом обрабатывают пользовательский контент (изображения, вложения файлов), сохраняя его в файловой системе.Другие хранят эти элементы в серверной базе данных.

Некоторые примеры обоих:

  • В файловой системе: Сервер совместной работы, Graffiti CMS
  • В базе данных: MicrosoftSharepoint

Я вижу плюсы и минусы каждого подхода.

В файловой системе

  • Легкий
  • Предотвращает вздутие базы данных
  • Резервное копирование и восстановление потенциально проще

В базе данных

  • Весь контент в одном хранилище (базе данных)
  • Полное разделениепроблемы (контент против формата)
  • Упрощенное развертывание веб-сайта (например, непосредственно из хранилища Subversion)

Какой наилучший подход и почему?Каковы плюсы и минусы хранения пользовательских файлов в базе данных?Есть ли другой подход?

Я задаю этот вопрос Wiki сообщества, потому что он несколько субъективен.

Ответы [ 4 ]

1 голос
/ 22 октября 2010

Если вы используете SQL Server 2008 или более позднюю версию, вы можете использовать функциональность FileStream, чтобы получить лучшее из обоих миров. То есть вы можете получить доступ к документам из базы данных (для запросов и т. Д.), Но при этом иметь доступ к файлу через файловую систему (используя SMB). Подробнее здесь.

Erick

0 голосов
/ 13 декабря 2011

На самом деле это дверь # 3 Чака.

Я думаю, что хранение изображений в базе данных - плохая новость, если только вам не нужно хранить их в секрете, в противном случае просто поместите их в CDN и сохраните URL-адреса изображений,Я создал несколько огромных сайтов для электронной коммерции, и размещение нагрузки на CDN, например, Akumai или Amazon Cloudfront, - это действительно хороший способ значительно ускорить ваш сайт.Я не большой поклонник сжигания вашей пропускной способности, процессора и памяти для обслуживания изображений.Кажется глупой тратой ресурсов в наши дни, так как CDN такие дешевые.Кроме того, это позволяет развертыванию не заботиться, потому что ваши материалы уже находятся в глобально доступном регионе.Вы можете взглянуть на мой профиль, чтобы увидеть сайты, которые я сделал, и посмотреть, как они используют CDN для разгрузки статических запросов.Просто имеет смысл и становится еще лучше, если вы можете сжать его.

0 голосов
/ 08 октября 2010

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

  1. Файловая система не имеет ограничений по размеру файлов и по содержанию.легко могут быть файлы размером более 2 ГБ.
  2. Это делает размер базы данных намного меньше, что означает меньшую нагрузку на память.
  3. Вы можете спроектировать свою систему для использования UNC и NAS или даже облачного хранилища, где вы не можете сделать это с FILESTREAM.осиротевшие файлы и хранение информации базы данных о файлах в синхронизации с реальными файлами на диске.Следует признать, что это огромная проблема, но пока такие решения, как FILESTREAM, не станут более гибкими, это цена, которую вы должны заплатить.
0 голосов
/ 08 октября 2010

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

...