Хранение изображений в БД и в структуре папок - PullRequest
6 голосов
/ 03 марта 2010

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

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

Когда пойти на какой подход?

Ответы [ 2 ]

11 голосов
/ 03 марта 2010

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

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

ПРОФИ

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

CONS

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

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

ПРОФИ

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

CONS

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

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

0 голосов
/ 03 марта 2010

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

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