Хранение файлов в программировании

StalkerClasses

Новичок
- Начну с обратного - все наши скрипты идут через git.
- Все содержимое контентное хранится в БД,
- Файлы хранятся например в папке Public (или на удаленном диске).

Тему бэкапов обсуждал уже - но для себя понял что еще придется кое-что подтянуть в этом вопросе...

Мой вопрос про файлы - как вы обычно храните файлы, которые нужно как-то присоединить к записи?
Я знаю минимум 2 варианта и еще 1 мне очень понравился

1 вариант это записать в поле в БД image (field) -> img.jpg, images (field) -> image1.jpg;image2.jpg;image3.png
Минусы: вы не можете выполнять поиск по картинкам по названиям - т.к. храните только basename картинки

2 вариант это создать какую то абстракцию в виде сущностей - например в одной из CMS есть такая штука как FAL (file abstraction layer).
Здесь если заглянуть под капот там будет 3 основных таблицы
File (модель с описание файла)
FileMetaData (более развернутое описание файла - сделано в виде доп. модели - видимо для организации переводов описаний файлов)
FileReference (связь с записью к которой крепится файл в виде полиморфной связи)

3 вариант - открыл для себя не давно
В БД не пишутся данные о наличии файла в какое-то поле.
По факту например загружена ли картинка аватарки для пользователя можно узнать только посмотрев содержимое соответствующей папки:
/public/images/users/avatars/user-id-1/image.png

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

Как вы обычно организуете работу с изображениями (файлами) в своих проектах. И как их бэкапите?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Каким местом это к теории программирования?

Перенесено
 

StalkerClasses

Новичок
Каким местом это к теории программирования?

Перенесено
Да к теории наверное это не очень относится. Но все же вопрос актуальный.
В той же laravel имя файла пишется в поле... Хотелось бы услышать какие еще есть подходы...
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
сегодня Бунин объявил call for papers на highload с темами вроде "3. Обратно из облаков ... 4. могут ли отключить интернет, разрывы связности, разрушение DNS, разрушение экосистемы opensource"
мало того, что это сделало мой день, так еще и отвечает на вопрос по теме! 😁
 

AmdY

Пью пиво
Команда форума
сегодня Бунин объявил call for papers на highload с темами вроде "3. Обратно из облаков ... 4. могут ли отключить интернет, разрывы связности, разрушение DNS, разрушение экосистемы opensource"
мало того, что это сделало мой день, так еще и отвечает на вопрос по теме! 😁
А эта программа разве не шутка была?
 

WMix

герр M:)ller
Партнер клуба
Как вы обычно организуете работу с изображениями (файлами) в своих проектах. И как их бэкапите?
данные к программе как и картинки (если только это не часть GUI) прямого отношения не имеют, по сути картинки это тоже база данных.
Из плюсов что вижу - база живет отдельно, файлы живут отдельно.
если только в этом задача стоит, но даже в /public/images/users/avatars/user-id-1/image.png есть связь с базой по средствам id
нет возможности организации поиска по картинкам
до тех пор пока нет задачи искать, не вижу смысла собирать метаданные.
 

fixxxer

К.О.
Партнер клуба
Я прекрасно помню, как г-н Бунин ещё в 2008-м году, когда он трудился на депутата Джейсона Фориса, без каких-либо согласований объявил от лица всех участников конференции (тогда это, вроде, называлось РИТ) о единогласной поддержке Едра и Медведева. С тех пор обходил его и все его инициативы за километр.

Что ж, пусть теперь делает конференцию "российские чебурнет-технологии". Се ля ви.
 
Сверху