我必须实现 4 个哈希表。哈希表的大小将非常大,每个 1 GB。哈希值将是访问数据的地址。现在,由于哈希值将随机分布,我必须随机插入和读取哈希表中的数据。实现这种设计的最佳方法是什么?我不能使用 RAM 中的数组,因为它会导致溢出。我会从使用 mmap 中受益吗?或任何其他设计方案。
非常感谢任何帮助。
我必须实现 4 个哈希表。哈希表的大小将非常大,每个 1 GB。哈希值将是访问数据的地址。现在,由于哈希值将随机分布,我必须随机插入和读取哈希表中的数据。实现这种设计的最佳方法是什么?我不能使用 RAM 中的数组,因为它会导致溢出。我会从使用 mmap 中受益吗?或任何其他设计方案。
非常感谢任何帮助。
Berkeley DB支持磁盘哈希表。
既然您说哈希表不适合RAM
,我想将它们hash tables
以hard disk
文件的形式存储在文件中,其中每个值都可以存储在不同的行中或以delimiter
单独的方式存储。
每当您想更新文件中的值时,我建议您不要读取整个文件并更新相当慢的值,而是可以在文件开头存储有关每个值的确切位置的一些信息,并且只是seek
到那个位置并更新它。关于mmap
,您仍然可以更喜欢它,因为它demand paging
在将文件带入内存时执行。但我想这不能比一次更快,seek and write
而不是每次page-fault
发生时都带一部分文件。