Помещение 3 миллионов страниц в одну папку по сравнению с размещением их в нескольких подпапках, какая структура быстрее для чтения и записи? - PullRequest
3 голосов
/ 05 мая 2010

Если у меня 3 миллиона страниц, какая структура каталогов лучше?

Метод 1. ~ / 123456789.htm

(Помещение всех 3 миллионов страниц в та же папка без каких-либо суб папки)

Метод 2. ~ / 789 / 123456789.htm

(Создайте 999 подпапок, каждая подпапка содержит около 3000 страниц)

Какая структура папок быстрее для Windows Server 2008? (Для создания, чтения и удаления файлов)

Ответы [ 4 ]

1 голос
/ 05 мая 2010

Определенно быстрее получить с подпапкой вариант. Наша DMS хранит файлы, основываясь на дате их создания, в структуре, например ./YYYY/MM/DD/HH/MM/, что было бы хорошо, если бы вы искали файл, если знаете его возраст.

Только представьте, что NTFS в Windows 2008 имеет каталоги, реализованные в виде списка. Если у вас есть 3.000.000 файлов, весь список нужно искать. Если у вас есть дерево, возможно, с 10 записями на уровень (вам нужна глубина 6, потому что у вас есть 3 * 10 ^ 6 файлов), доступ к отдельным файлам будет намного быстрее.

Если вы всегда хотите получить доступ ко всем файлам одновременно, например, для пакетной обработки все файлы в одной папке могут быть самыми быстрыми, но при этом не нужно случайно щелкать эту папку в Проводнике, кроме случаев, когда вам нужна причина, чтобы принести вам кофе:)

1 голос
/ 05 мая 2010

IMO размещение тысяч файлов в одном каталоге не является хорошей практикой.

Один из вариантов - получить шестнадцатеричное представление целого числа,
eg 123456789 -> 075BCD15

и используйте эту структуру каталогов: ~/07/5B/CD/15.htm

0 голосов
/ 24 декабря 2010

Я провел несколько тестов с файлами 400К.NTFS работает лучше, когда все файлы размером 400 КБ помещаются в одну папку, а не в те файлы, которые распределены по 676 подпапкам.

0 голосов
/ 05 мая 2010

Я думаю, что это сильно зависит от формата вашей файловой системы (NTFS? Ext3?), Поскольку вы не указали, хотите ли вы перечислять файлы, я думаю, что 3 миллиона - это хорошо для одного каталога для создания / чтения / удаления файлов. *

По опыту могу сказать, что использовать NTFS для создания списка папок, содержащих даже 30 000 файлов, неинтересно.

...