我需要存储一个大的哈希集,最多可以包含大约2亿个40位值。将其存储为2亿个64位值是可以接受的(尽管2亿* 16位丢失)。

要求是:

  • 很小的内存占用量(磁盘空间不是问题,内存是)
  • 快速contains(long l)add(long l)方法(比SQL快得多)
  • 嵌入式
  • 免费,没有令人讨厌的许可(没有Berkeley DB)。 LGPL罚款。
  • 没有错误肯定也没有错误否定,所以基于磁盘的Bloom Filters之类的东西不是
  • 之后的目标

    SQL不是我想要的。

    因为我真的认为我更喜欢这样的快速处理(请注意解决方案比SQL解决方案要快得多):

    Fast disk-based hashtables?

    Google是否有这样的Java API?

    我仅使用“键”的基于磁盘的快速键/值对实现会成功吗?

    或者是其他东西?

    我宁愿不重新发明。

    最佳答案

    如果您有能力购买128 GB的磁盘,则可以每40位存储1位。
    然后,您可以使用随机访问文件来检查是否设置了位或对其进行了更改。您无需插入任何值或维护索引。

    关于Java:基于磁盘的快速哈希集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2346722/

    10-16 05:30