如何加快磁盘上大型哈希表的随机访问操作

时间:2015-02-08 16:44:43

标签: performance algorithm hash

我需要存储15Gb或记录,记录的固定大小等于270字节,我希望能够通过密钥找到记录。 key是记录中几个字段的哈希值,几个记录可以具有相同的键。 我试图使用gdbm,但它会慢,现在我想尝试自己的解决方案。 我有两个主要想法。 1直接寻址。我创建了一个空记录的大文件。根据这个概率,新记录的索引(new_key%(文件中的总记录))是空记录的索引至少等于1/2,如果使用此索引记录,则ammount或空记录比我想要存储的大两倍。已忙于文件中的下一个index = hash(key)%总记录到目前为止。 这种方法给了我很好的查找操作速度。平均而言我需要1.65读取记录操作才能找到合适的。 但由于大量的随机访问操作,最初填充此文件的速度非常慢。这可能需要4个小时。 2 - 二进制搜索。只是执行并行合并排序来创建文件。 但二进制搜索需要随机访问的随机读取操作的12倍以找到适当的记录。 我的应用程序对查找操作的速度非常敏感,但我需要加快创建此文件的过程。你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

假设你有1 GB的可用RAM,将哈希表分成15个部分,并按照它所属的哈希表对数据进行分区。然后在RAM中构建每个部分并将其写出来。 / p>