Эффективная структура каталогов - PullRequest
0 голосов
/ 09 июня 2011

Какова будет лучшая структура каталогов для огромного количества файлов. Учитывая, что у меня более 20 миллионов файлов, использующих number_id в качестве имен файлов (например, 13842985.xml).

если бы пошел с чем-то вроде

filename : 13842985.xml
directory :  1/3/8/13842985.xml

Как я могу сделать это правильно, когда все файлы разбросаны равномерно по каждому каталогу и подкаталогу.

Ответы [ 3 ]

2 голосов
/ 09 июня 2011

Вы можете создать структуру каталогов, например trie .

0 голосов
/ 09 июня 2011

Измените свой метод немного вместо этого:

filename  : 13842985.xml
directory : 842/985/13842985.xml    # use the 6 last to create the directory name

Я предполагаю, что имена файлов несколько случайны. Эта схема создаст 1000 верхних папок, каждая из которых содержит 1000 подпапок. Начиная с последних цифр вместо первых, вы будете защищены от длинных имен файлов:

filename  : 138429851234.xml
directory : 851/234/138429851234.xml

Надеюсь, это поможет!

Редактировать: если сначала хэшировать имя файла и использовать это число, вы избежите вырожденных случаев (например, изменяющихся только в начале).

0 голосов
/ 09 июня 2011

Сделайте некоторый сравнительный анализ, чтобы выяснить, где компромисс между необходимостью сканирования через несколько каталогов становится дешевле, чем необходимость сканировать «множество» файлов в одном каталоге.

В какой-то момент издержки файловой системы, связанные с открытием / сканированием / проверкой безопасности / etc ... на каждом добавляемом уровне каталогов, будут выше, чем экономия от необходимости разбирать каталог, чтобы найти нужный файл. Это уровень, на котором вы делали бы разделение / разделение на слои.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...