2013-06-20 4 views
0

Я должен реализовать 4 таблицы хэша. Размер хеш-таблиц будет очень большим ~ 1 ГБ каждый. Хэш-значения будут адресом доступа к данным. Теперь, поскольку значения хэша будут распределены случайным образом, я должен случайно вставлять и читать данные из хеш-таблиц. Каков наилучший способ реализации такого дизайна? Я не могу использовать массивы в ОЗУ, так как это вызовет переполнение. Будет ли я получаю пользу от использования mmap? Или любая другая схема проектирования.Частый случайный доступ больших массивов

Любая помощь очень ценится.

+1

Что означает «хеш-значения будут адресами доступа к данным»? Ключ - это адрес памяти того, что вы контролируете? Тогда почему вы не храните данные рядом с этим адресом, неявно? Это значительно уменьшило бы размер (без клавиш, без пустых слотов, если открытая адресация, без ссылок, если цепочка), возможно, подгоняя ее в ОЗУ. – delnan

+0

Умм, да. Я делаю это только. Я думаю, что было неправильное общение. Благодарю. – Abhishek

ответ

1

Berkeley DB поддерживает хэш-таблицы на диске.

+0

Ничего себе, знаю, что такой инструмент существует. Большое спасибо. :) Я буду больше смотреть на него. – Abhishek

0

Так вы говорите, что хэш-таблица не может поместиться в RAM, я думаю, что хранить эти hash tables на hard disk в виде файлов, где каждое значение может быть сохранено в отдельной строке или в delimiter разделенной моды ,

Всякий раз, когда вы хотите обновить значение в файле, я предлагаю вам вместо чтения всего файла и обновления значения, которое довольно медленно, вы можете хранить некоторую информацию о точном расположении каждого значения в начале файла и только seek в эту позицию и обновите его. Что касается mmap, вы по-прежнему предпочитаете его, потому что он выполняет demand paging при вводе файла в память. Но я думаю, что это не может быть быстрее, чем одноразовый seek and write, а не каждый раз приносить часть файла при возникновении page-fault.

+0

Да. mmap будет дополнительными накладными расходами. В настоящее время я смотрю на BDB, как указано @larsmans – Abhishek

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