0

我必须实现 4 个哈希表。哈希表的大小将非常大,每个 1 GB。哈希值将是访问数据的地址。现在,由于哈希值将随机分布,我必须随机插入和读取哈希表中的数据。实现这种设计的最佳方法是什么?我不能使用 RAM 中的数组,因为它会导致溢出。我会从使用 mmap 中受益吗?或任何其他设计方案。

非常感谢任何帮助。

4

2 回答 2

1

Berkeley DB支持磁盘哈希表。

于 2013-06-20T09:57:54.843 回答
0

既然您说哈希表不适合RAM,我想将它们hash tableshard disk文件的形式存储在文件中,其中每个值都可以存储在不同的行中或以delimiter单独的方式存储。

每当您想更新文件中的值时,我建议您不要读取整个文件并更新相当慢的值,而是可以在文件开头存储有关每个值的确切位置的一些信息,并且只是seek到那个位置并更新它。关于mmap,您仍然可以更喜欢它,因为它demand paging在将文件带入内存时执行。但我想这不能比一次更快,seek and write而不是每次page-fault发生时都带一部分文件。

于 2013-06-20T10:02:03.720 回答