Таблица поиска на основе файлов - PullRequest
0 голосов
/ 17 ноября 2010

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

Одно из решений, которое может сработать, состоит в том, чтобы иметь файл, в котором первое сохраненное целое число является наименьшим используемым идентификатором, затем вы записываете массив нулевых целых чисел, по одному для каждого идентификатора, к наибольшему (добавляя при необходимости) и записываете идентификатор в правильная позиция. Например, если наименьший идентификатор равен 1000 и вы хотите получить смещение в 20000, вы просто извлекаете целое число в позиции 10000 + 20000-1.

При отображении памяти эта техника должна работать довольно хорошо. У кого-нибудь была подобная проблема, это хорошее решение или есть какой-то лучший способ?

Ответы [ 2 ]

0 голосов
/ 17 ноября 2010

Вы всегда можете перейти на базу данных. SQLite можно использовать, если вам не нужно, чтобы несколько приложений / процессов обращались к данным. Это автоматически создает для вас индексы и позволяет использовать запросы SQL для получения информации.

0 голосов
/ 17 ноября 2010

Вы можете использовать B-Tree , который специально оптимизирован для использования на жестких дисках.

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

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