Поиск / индексирование огромного количества файлов - PullRequest
0 голосов
/ 08 июля 2011

Я изо всех сил пытаюсь найти эффективный способ (<0,5 сек) для поиска определенных файлов в огромной файловой системе, имеющей только небольшую часть желаемого имени файла. </p>

Вот сценарий:

Предположим, что у вас есть около 15.000.000 файлов, все из которых классифицированы по типу информации, и находятся в пакетных каталогах, содержащих по 20.000 файлов:

DATA
--TYPE_1_001
----ID_1234567_TYPE1.XML
----ID_2345678_TYPE1.XML
----[...]
--TYPE1_002
--[...]
--TYPE_1_097
--TYPE_2_001
----ID_1234567_TYPE2.JPG
----ID_2345678_TYPE2.JPG
----ID_2345679_TYPE2.JPG
----[...]
--[...]
--TYPE2_304
--[...]

и т. Д.

Итак, учитывая идентификатор (то есть 1234567), я пытаюсь найти все соответствующие имена файлов, содержащие указанный идентификатор. Этот «процесс поиска» будет выполняться для каждого из 7.000.000 идентификаторов, указанных в другом XML-файле.

Текущий процесс потребует 405 дней для обработки всех 7.000.000 идентификаторов, что, кто считает, недопустимо;)

Есть предложения?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 08 июля 2011

Есть ли какой-нибудь способ, которым вы можете извлечь данные в базу данных или индекс (например, Lucene) некоторого описания?

Это займет некоторое время, но поиск станет намного быстрее, когда он станет доступен..

1 голос
/ 08 июля 2011

Использование SSD-накопителя вместо жесткого диска.Обычное оборудование может выполнять только около 120 операций ввода-вывода в секунду.Это связано с тем, что руководитель должен переместиться в место, где хранится информация.Быстрый SSD-накопитель может выполнять 10000 операций ввода-вывода в секунду, поскольку нет движущихся частей.Однако даже с SSD-диском в лучшем случае вам потребуется около 2 секунд для сканирования имен каждого каталога.

Если вы хотите, чтобы это было быстрее, вам нужно кэшировать / индексировать имена и просматривать ихпо сравнению с памятью.

Кстати: если бы у вас был установлен SSD Raid 6, он мог бы выполнять IO достаточно быстро, чтобы сканировать файлы 20 КБ менее чем за 0,5 секунды.

...