当前位置: 首页 > 面试题库 >

Java:大型持久性哈希结构?

邵捷
2023-03-14
问题内容

我正在Java中寻找一个持久的哈希结构,这是一个简单的键值存储,其中key是唯一的字符串,value是一个int。每次将现有密钥添加到存储中时,密钥的值将增加。

我需要它很大-可能有5亿-10亿个密钥。我一直在评估tokyo-cabinet
http://fallabs.com/tokyocabinet/javadoc/,但不确定其扩展性如何-
随着哈希值的增加,插入时间似乎越来越长。

关于什么合适的任何想法?

谢谢

编辑: 为了减少磁盘I / O,我将在内存中的HashMap中缓存数据,然后在缓存增长到一定大小时一次性更新持久性哈希。

Edit2: 持久性的原因之一是我的RAM有限,只有4GB,因此我无法在内存中放入较大的结构。


问题答案:

我想Megamap是您要寻找的东西:http
://megamap.sourceforge.net/ 。这是Megamap主页的简短描述:

MegaMap是地图(或哈希表)的Java实现,可以存储无限量的数据,仅受可用磁盘空间量的限制。映射中存储的对象将持久保存到磁盘。内存中的缓存可实现良好的性能。出于所有实际原因,可以将MegaMap视为具有无限存储空间的地图实现。



 类似资料:
  • 问题内容: 您如何将任意字符串转换为唯一的整数,这在Python会话和平台之间是相同的?例如,由于每个Python会话和平台均返回不同的值,因此无法使用。 问题答案: 如果哈希函数确实不适合您,则可以将字符串转换为数字。 通过将每个三元组映射到,这是可逆的。

  • redis Hash 类型 >[info] 相当于JS中的对象 {name:'xxx',age:'xxx',gender:'xxx'}

  • 我正在寻找从经典Akka持久化迁移到Akka持久化类型。在这里找到的Lagom留档:1说“注意:从Lagom持久化(经典)迁移到Akka持久化类型时的唯一限制是需要完全关闭集群。即使所有持久数据都是兼容的,Lagom持久化(经典)和Akka持久化类型也不能共存。” 有人知道这是否适用于服务器可能知道的所有持久实体吗?例如,我使用的服务有3个独立的持久实体。我需要一次迁移所有3个,还是可以一次迁移一

  • 问题内容: 我正在尝试创建这种字典,但出现错误。我的petInfo结构是这样的: 因此,我想以某种方式使其可散列,但是其组成部分都不是要求的整数。如果其所有字段都不是整数,如何使它符合协议?如果我知道该结构在所有情况下都是唯一的,我可以使用吗? 问题答案: 只需从函数返回即可。仅供参考-哈希值不需要唯一。要求两个相等的对象也必须具有相同的哈希值。

  • 快住手!域模型不是持久性模型 如果这是真的,将持久性对象与域对象分开有什么好处呢?

  • 问题内容: 有没有人知道一个库或至少一些有关在Java中创建和使用持久性数据结构的研究?我不是将持久性称为长期存储,而是将持久性称为不变性(请参阅Wikipedia条目)。 我目前正在探索为持久性结构建模api的不同方法。使用构建器似乎是一个有趣的解决方案: 但这仍然感觉有些呆板。有任何想法吗? 问题答案: 我想显而易见的选择是: o切换到临时数据结构(构建器)进行更新。这是很正常的。用于操纵例如