@Anchor00

Хранить ли названия изображений в БД?

В скрипте каталога изображения товаров именуются по маске {id}{alias}{№}.{ext}. Возникает вопрос, стоит ли вообще делать поле в таблице products для изображений? (они ведь именуются по строгому шаблону) Какие могут быть подводные камни/нюансы.

UPD. Парни, есть важный нюанс - это коробочный скрипт
  • Вопрос задан
  • 416 просмотров
Решения вопроса 1
edli007
@edli007
full stack, team lead
Нет, это все-таки очень желательно. то что я опишу не единственно верная реализация, но достаточно удобная.

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

Также в папке не может быть много файлов, есть некоторые особенности файловой системы, много картинок в одной папке - замедлит ее работу.

Допустим картинка называется 123.png и ее хеш e621fccb4c38d568669432b004a50f59.
Вы можете сделать путь к картинке
/img/621/fcc/b4c/38d568669432b004a50f59/original.png

Что даст?
1. Название картинки берется с бд, если зальют две одинаковые картинки, их хеш совпадет, вы избежите дублирования файлов.
2. Вы можете сохранять разные варианты картинки, например:
/img/621/fcc/b4c/38d568669432b004a50f59/original.png - это оригинал, а
/img/621/fcc/b4c/38d568669432b004a50f59/size_l.png - уменьшенная копия
/img/621/fcc/b4c/38d568669432b004a50f59/size_l_stamp.png - уменьшенная копия + водяной знак
3. В папке никогда не будет больше 4096 файлов, так как название папки это часть хеша
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
t-alexashka
@t-alexashka
Сразу пишу legacy код
Нет не обязательно, если всегда следовать этому шаблону, нет необходимости хранить адрес в бд. Даже если Вы захотите переделать шаблон, или алгоритм хранения вообще, зная первоначальную маску Вы и с этим справитесь. У меня тоже на сайте храняться изображения к объявлениям, по названию папки с id самого объявления. И база об этом не знает. И не надо ей лишних 20-30 символов хранить (особенно ощутимо если индексы, и если данных более 1.6млн записей).
Ответ написан
Комментировать
A1ejandro
@A1ejandro
youtube блогер, ИТ-специалист
Вообще насколько бы всё было проще, если хранить изображажения во внешних файлах, с именами {id}.{ext}, если бы одному объекту базы мог соответствовать только одно изображение. Базу вообще можно было бы не увеличивать ни на байт. А оно может соответствовать одно, если {ext} принять равным pdf, и разные изображения помещались бы просто на разные страницы pdf. И удобная операторская работа с изображениями реализовывалась бы простой перегенерацией pdf из постраничных графических файлов. Я пошел по этому пути, но у меня специфика просто Электронного Архива. Наверное вовсе ничего общего с решаемой вами задачей....
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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