WebDev2030
@WebDev2030
Битриксоид до мозга и костей

Насколько оправдано хранить информацию о файлах в базе данных?

Всем привет. Вопрос архитектурный. Допустим в проекте есть хранилище файлов. Насколько вообще оправдано заводить таблицу для хранения информации о файлах (сами файле на диске)? Я считаю что в целом оправдано, но не уверен. Как пример: фото для новости в списке новостей (preview_iamge). Если мы имеем таблицу files, в которой перечислены все файлы (пока будем считать, что там только картинки), тогда мы в preview_iamge храним id файла, а если таблицы нет, тогда полный путь от корня проекта. При удалении файла если мы имеем просто ставим везде Null для preview_iamge для новости и тогда сразу понятно, что файл был удален. Для изображений мы можем хранить разрешение изображений и даже версии в разных разрешения, проще искать их будет. Как в других проектах хранят информацию о файлах? Кто что думает по этому поводу?
  • Вопрос задан
  • 219 просмотров
Пригласить эксперта
Ответы на вопрос 6
FanatPHP
@FanatPHP
Чебуратор тега РНР
Я пока в описании проблемы не увидел ни одной причины хранить инфу о файлах в БД.
Любое действие должно вызываться насущной необходимостью, а не абстрактными рассуждениями.
Какая проблема найти версию в нужном разрешении, приписав к имени файла постфикс с разрешением - загадка

Другие проекты поступают так, как требуется в их конкретном случае.
Если никакой дополнительной информации о файле хранить не требуется, то и в бд их пихать не нужно.
Если файл встраивается в БД - например, может относиться к сразу нескльким категориям, то без БД просто не обойтись, и таких вопросов в принципе не возникает.
Ответ написан
@RuComMarket
Битрикс FullStack разработчик
есть еще такой вариант:
при загрузке файла, он компилируется в small medium full и сохраняется original
в базе имея один id ты имеешь 4 файла, которые можно использовать например для адаптивности, или вывода preview или detail, а также 3 вида минимизируются для уменьшения объема трафика
Ответ написан
mindtester
@mindtester
http://iczin.su/hexagram_48
Битриксоид до мозга и костей
и такой вопрос?! .. кхм..
хранить информацию о файлах в базе данных
это фичи ФС по тому и ответ простой - если вам требуются возможности, которые ФС не способна предоставить* - это нормально. в противном случае - такое решение избыточно, и может быть лишним источником ошибок

upd * включая скорость отклика, если на то пошло
Ответ написан
coderisimo
@coderisimo
Конечно, оправданно. Некоторые даже и сами файлы норовят в БД запихнуть :) . А если с практической точки зрения, то вы можете использовать алиасы для файлов, прочую сопутствующую информацию сохранять, управлять правами доступа к файлам И так далее...
Ответ написан
Комментировать
@NubasLol
Насколько оправдано хранить информацию о файлах в базе данных


Если судить с колокольни разработки веб сайта c, то оправдано. У вас будет сущность, которая будет уметь работать с этими файлами, правилно их выводить, сохранять в различные файловые системы (s3, локально etc.). Прокидовать их через прокси, что бы вешать водяной знак, знатьк какой повесить. Настройки прав доступа для юзера.Быстрый подсчет количества файлов, методанных.

А вот минусов в таком подходе я лично не вижу
Ответ написан
Комментировать
@Levhav
Возьмусь за разработку проектов любой сложности.
В october cms есть таблица с инфой о файлах. И в целом это удобно. Мне нравится.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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