Назад | Перейти на главную страницу

Как называется сортировка каталога с большим количеством файлов по подкаталогам?

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

Например.:

- a8debcdcf0d2302ccde5a43bb1fb385e81098342.jpg
- 91ff48de8cfc6468bdc2115cf87cfb6547eee713.jpg
- 99d002e2065cdf02bd6d04bf29a8230564719b76.jpg
...

Вышеупомянутые файлы сортируются по подкаталогам аналогично этому:

- a/
  - 8/
    - a8debcdcf0d2302ccde5a43bb1fb385e81098342.jpg
- 9/
  - 1/
    - 91ff48de8cfc6468bdc2115cf87cfb6547eee713.jpg
  - 9/
    - 99d002e2065cdf02bd6d04bf29a8230564719b76.jpg

Есть несколько вариантов этого метода, например, использование разного количества символов для именования подкаталогов или использование хэша или другого алгоритма для определения пути к каждому файлу.

Есть ли официальное название у этого метода организации файлов?

Я всегда называл это хеш-фрагментом.

При работе с подобными структурами следует помнить о нескольких вещах:

  • Каждый каталог создает индексный дескриптор. Если вы разбиваете каждый символ, один файл может вызвать, скажем, 33 inode. У вас закончатся inodes до того, как закончится место.
  • Если вы разбиваете группы (скажем, первые n символов, а затем вторые n символов), сохраняйте свои наборы достаточно маленькими, вы не заставляете inode расширяться, что замедлит поиск.
  • Если ваш хэш значительно случайен, у блоков 3-го и последующих порядков практически никогда не будет братьев и сестер, поэтому вы можете разделить такие блоки, как ... 1234/5678/901234567890 и т. Д., И сохранить небольшие иноды.

Кажется, это просто называется «хешированная структура каталогов», например, в http://michaelandrews.typepad.com/the_technical_times/2009/10/creating-a-hashed-directory-structure.html :

Как можно хранить большое количество файлов, сохраняя при этом высокую производительность при доступе? Одно из решений - хеширование имени файла.

Это называется B-дерево (не относится к бинарному дереву).