Как стать автором
Обновить

Где хранить изображения

Время на прочтение2 мин
Количество просмотров41K
Намедни задумался над вопросом хранения изображений. Альтернативы две: в файловой системе и в базе данных. Это я, кстати, про изображения для веб-проектов.

Почитал литературу. Как оказалось, но не было особо удивительным, у хранения файлов как файлов есть ряд преимуществ:
  • Скорость. Пожалуй, одно из самых важных преимуществ. Дело в том, что при хранении в БД нам надо произвести следующие действия для вывода изображения: считать стрим из базы, создать временный файл, записать в него стрим. Из файловой же системы его достаточно только считать.
  • Универсальность. Обычные изображения можно использовать для множества приложений: переслать через фтп, добавить в письмо, показать в браузере. Бинарные данные из базы необходимо сначала конвертировать.
  • Простота реализации. Закачать файл на сервер и сохранить ссылку на него в таблицу легче, чем реализовывать логику сохранения бинарных данных в ту же таблицу. А простота — это скорость разработки и внесения изменений. Время — деньги.
  • И если база вдруг накроется (представим, что бэкапов не было), то хотя бы изображения не потеряются.

У хранения файлов в базе данных есть один несомненный плюс — шифрование. Но часто ли необходимы такие меры предосторожности для изображений? И довольно сложно синхронизировать файловую систему с базой: удалил запись, надо удалить и файл. В базе это же решается в один ход каскадным удалением соответствующей записи с BLOB'ом.

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

Вердикт такой. Нельзя сказать, что какой-то из подходов более правильный, т.к. правильность определяется задачей. Более простым является стандартный способ хранения изображений как файлов. Но для некоторых задач более подходят базы данных.
Теги:
Хабы:
Всего голосов 20: ↑6 и ↓14-8
Комментарии25

Публикации

Истории

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань