Я работаю над веб-сайтом, на котором пользователи могут хранить все виды мультимедиа на сервере, и количество пользователей может быть любым.
Я думал, что буду хранить все медиа, загружаемые пользователями, вот так:
MediaRootDIR / UserRootDIR / file.xyz (UserRootDIR уникален для каждого пользователя)
Есть еще один способ сохранить это:
MediaRootDIR / file.xyz
Я не беспокоюсь об организации, потому что у меня все равно есть путь к файлам, хранящимся в БД.
Мой вопрос:
Какой способ быстрее? (Поиск, получение и запись для файловой системы - на данный момент используется файловая система EXT4).
Ускоряет ли использование подкаталогов поиск, поскольку меньше нет. файлов нужно загружать на каждом уровне дерева каталогов?
Целесообразно ли использовать подкаталоги, так как я слышал, что существует ограничение на количество подпапок, которые может иметь папка в EXT4, около 64000
Есть ли лучшая альтернатива такому хранению медиа?
заранее спасибо
РЕДАКТИРОВАТЬ: Конфликты имен не будут для меня проблемой, так как каждый загруженный файл имеет уникальное имя
EXT4 (и даже недавний EXT3 с dirindex
опция монтирования) и XFS без проблем хранят миллионы файлов в каталоге. Однако я настоятельно рекомендую вам использовать первый подход (с UserRootDir
промежуточный каталог), так как он намного более управляем. Например, подумайте о выпуске простого ls
внутри каталога с 1 миллионом файлов против 10.000: первый будет извлекать в 100 раз больше данных, чем второй.