Задать вопрос

Большое количество файлов и папок. Дробить или нет?

К примеру есть миллион папок в каждой из которых миллион файлов.

1. Просто записываем этот миллион папок в какую то одну главную папку.
2. Разделяем главкую папку еще на 100 папок, а миллион наших папок разделяем между этими 100 папками

По какому принципу работает файловая система linux, то есть как она находит файл (перебором каждой папки пока не удовлетворит запросу, всмысле если я указваю путь /main/56/1.jpg проверяет ли он названия предыдущих 55 папок на соответсвие цифре 56, то есть начиная с первой папки это 56?-нет, это 56?-нет) и есть ли принципиальная разница в быстродействии при обращении к конкретному файлу.

То есть /main/1/2/1.jpg или /main/1/1.jpg
  • Вопрос задан
  • 4187 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
@ComodoHacker
> есть миллион папок в каждой из которых миллион файлов.

Кажется вы созрели для СУБД.
Ответ написан
Комментировать
@zuborg
Дробить надо, причин тому много, фактически все сводится к тому, что чем больше обьектов в папке — тем больше ресурсов надо на их поиск (и другие операции). В некоторых случаях — пропорционально размеру…
Найти файл (или пустое место для создания нового) среди миллиона таких же в папке сложнее, чем сначала найти его подпапку среди тысячи подпапок, и потом найти нужный файл среди тысячи в выбранной подпапке. Даже с техниками индексирования содержимого папок…

Итого, желательно чтобы максимальное кол-во обьектов в папке было порядка 1к-5к. Добавлять односимвольные подпапки, к примеру, не эффективно — их получится много и кол-во операций поиска елемента в папке сильно увеличится (хотя операции эти будут сравнительно простыми). Идеально — 3 (максимум 4) цифры на подпапку, либо 2 символа включая буквы (для равномерной плотности распределения символов в имени).
Ответ написан
Комментировать
megahertz
@megahertz
full stack разработчик
Решаю такую задачу путем генерации катлога по uinqueid в php (подойдет любой другой аналог) и дальнешим дроблением полученного значения на подкаталоги. Степень дробления определяется частотой добавления новых файлов. В итоге полученное решение приемлемо для любой актуальной файловой системы.
Ответ написан
Комментировать
@kamaikin
Плохо в инете искали..... статьи старые....
habrahabr.ru/post/70147
vkamaikin.ru/page/obrabotka-fajlov-na-servere
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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