@Mr-Governor
Губернирую

Как хранить альбомы фотографий?

Надо на сайте хранить множество альбомов с фотографиями, в 1 альбоме сотни фоток, количество альбомов не ограничено.
В таблице БД храниься ключ альбома и URL к фото.
Проблема в том, что все фотки лежат в одной папке,а их количество со временем будет расти.

Что будет когда их станет больше миллиона?
Справится ли файловая система с таким количеством в приличное время или нужно разделять на подпапки альбомов?
  • Вопрос задан
  • 106 просмотров
Решения вопроса 3
saboteur_kiev
@saboteur_kiev
build engineer
Смотря какая файловая система. Но для современных файловых систем проблем нет.
Листинг может занять врея (find на папку с 3 млн файлов на обычном сервере - 16 гб, 4 ядра, ssd- выполнялся 3-5 мин.) но доступ к одному конкретному файлу по полному пути будет почти мгновенный.

Но в принципе, лучше разбивать по подпапкам.
Ответ написан
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
С выборкой единичных фото проблем нет, а вот листинг директории станет проблемой. В идеале папки разбивают по дате загрузки, используя например таймстамп текущей даты или месяца. В базе соответственно хранят путь с директорией.
Ответ написан
2ord
@2ord
продвинутый чайник
Листинг должен содержаться в СУБД. Тогда за его получением не нужно сканировать ФС.
Получение содержания единичного файла едва зависит от количества файлов в директории.
Популярными способами разбиения директории являются:
  • по годам, месяцам или дням
  • по хэш сумме файла, первые 2 символами которой называются директории. Хэши файлов хранить в СУБД. Заодно и дубликаты уйдут.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы