2012-03-09 2 views
2

Это вопрос интервью. Если у вас есть миллионы пользователей и файлы/каталоги, как вы планируете хороший способ найти файлы или каталоги данного пользователя и путь? Если у файлов/каталогов есть метки времени, как вы рассчитываете количество файлов/каталогов, добавленных в день для каждого пользователя? вы можете использовать свой путь для вставки файлов/каталогов.Быстрый поиск файлов или каталогов данного пользователя и пути, когда есть много пользователей и файлов/каталогов

ответ

1

Вы можете сохранить их в таблице базы данных (поля user, file, date) и сделать простой запрос на них. СУБД делают индексацию, чтобы сделать ее быстрой. Если вы не хотите использовать СУБД, например mysql или MS Access, SQL server или Oracle, вы можете использовать некоторые приложения для поиска с открытым исходным кодом, такие как Lemur.

0

Если вы не хотите использовать базу данных, вы можете использовать комбинацию Dictionary и Binary Search Tree.

keyDictionary будет user.
value его с 2 свойства:

  1. Dictionary с day ы как keys и number of entries that day, как values.
  2. A Binary Search Tree с path s разных файлов и папок как nodes.

Дает n общее количество разных файлов и папок.
Он построен в O(nlgn), а необходимые операции выполняются в O(lgn).

+0

Можете ли вы рассказать немного о наборе с разными датами? – user1258656

+0

Можете ли вы немного рассказать о наборе с разными датами? вы хотите создать связанный список (узел списка имеет дату, количество файлов/каталогов). – user1258656

+0

Набор подобен словарю без значений - только отдельные ключи. О датах. Если на день 3/11/2012 записано n записей, оно будет введено n раз в набор, но будет представлено как один элемент, который будет 3/11/2012. Файл или папка будут иметь полную дату, например, 3/11/2012 15:12:14, но набор будет содержать только разные дни. –

Смежные вопросы