Надо на сайте хранить множество альбомов с фотографиями, в 1 альбоме сотни фоток, количество альбомов не ограничено.
В таблице БД храниься ключ альбома и URL к фото.
Проблема в том, что все фотки лежат в одной папке,а их количество со временем будет расти.
Что будет когда их станет больше миллиона?
Справится ли файловая система с таким количеством в приличное время или нужно разделять на подпапки альбомов?
Смотря какая файловая система. Но для современных файловых систем проблем нет.
Листинг может занять врея (find на папку с 3 млн файлов на обычном сервере - 16 гб, 4 ядра, ssd- выполнялся 3-5 мин.) но доступ к одному конкретному файлу по полному пути будет почти мгновенный.
С выборкой единичных фото проблем нет, а вот листинг директории станет проблемой. В идеале папки разбивают по дате загрузки, используя например таймстамп текущей даты или месяца. В базе соответственно хранят путь с директорией.
Листинг должен содержаться в СУБД. Тогда за его получением не нужно сканировать ФС.
Получение содержания единичного файла едва зависит от количества файлов в директории.
Популярными способами разбиения директории являются:
по годам, месяцам или дням
по хэш сумме файла, первые 2 символами которой называются директории. Хэши файлов хранить в СУБД. Заодно и дубликаты уйдут.