Хранение изображений в DB по сравнению с в Структуре папок

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

Каковы преимущество и недостаток в обоих методах?

Когда пойти для который подход?

6
задан bdhar 3 March 2010 в 12:49
поделиться

2 ответа

Как обычно, все зависит от ситуации. Необходимо учитывать характер использования изображений и то, какие возможности предоставляет ваша СУБД.

Хранение изображений в базе данных:

ПРОТИВ

  • Если изображения должны быть связаны с сущностями в вашей базе данных (например, с пользователем), база данных может позаботиться о поддержании этих отношений. С другой стороны, если изображения не связаны ни с чем в базе данных, вы, вероятно, не захотите хранить их в базе данных.
  • Если ваша база данных поддерживает это, вы сможете обрабатывать файлы внутри транзакции (я полагаю, что MS SQL 2008 поддерживает это, не знаю, поддерживают ли другие).
  • Если вам нужно хранить несколько версий каждого изображения (скажем, потому что они меняются со временем), это, вероятно, будет проще сделать в базе данных, чем на файловой системе.

ПРОТИВ

  • Вы будете сильно нагружать базу данных.
  • Резервное копирование базы данных может занять много времени.

Хранение изображений на диске:

ПРОТИВ

  • Создание резервных копий тривиально
  • Для просмотра изображений и т.д. требуется только браузер файлов, клиент базы данных не нужен

ПРОТИВ

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

Конечно, все эти проблемы особенно актуальны, если вы храните большое количество изображений.

11
ответ дан 9 December 2019 в 22:32
поделиться

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

0
ответ дан 9 December 2019 в 22:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: