java - 推荐快速且可扩展的持久性Map - Java

标签 java map berkeley-db persistent berkeley-db-je

我需要在Java应用程序中使用磁盘支持的映射结构。它必须具有以下标准:
能够存储数百万条记录(甚至数十亿条)
快速查找-地图上的大多数操作只需查看键是否已经存在。这一点和上面的1是最重要的标准。对于经常使用的密钥,应该有一个有效的内存缓存机制。
持久性,但不需要是事务性的,可以承受一些失败。也就是说,乐于定期与磁盘同步,不需要事务性。
能够存储简单的基本类型-但我不需要存储序列化对象。
它不需要分发,即将在一台机器上运行。
设置简单,使用自由。
不需要关系查询
记录键将是字符串或长字符串。如上所述,读取将比写入更频繁,并且大多数读取将只是检查密钥是否存在(即不需要读取密钥相关数据)。每个记录只更新一次,不删除记录。
我目前使用bdb je,但正在寻求其他选择。
更新
通过减少对辅助键的依赖,提高了对现有BDB设置的查询性能。有些查询需要对两个辅助键进行联接,通过将它们组合成一个复合键,我在查找中删除了一个间接级别,这可以很好地加快速度。

最佳答案

我可能会使用本地数据库。比如说Bdb JEHSQLDB。我可以问一下这种方法有什么问题吗?你一定有理由寻找替代品。
回应评论:
作为问题性能,我想您已经在使用JDBC来处理这一问题了,因此尝试hsqlb并阅读关于Memory and Disk Use的章节可能是值得的。

本文翻译自 https://stackoverflow.com/questions/1536953/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。


相关文章:

c++ - 地图中c ++地图的简写语法

c - Berkeley DB在不关闭数据库的情况下无法放置然后访问数据

ruby-on-rails - 您如何从Ruby或Ruby on Rails与BerkeleyDB数据库对话?

java - 为什么java.util.Currency.getDisplayName()返回null

java - 在共享包中使用GWT的NumberFormat类

html - 将CSS应用于AREA MAP

c++ - 错误-当前位置没有可用的源代码

java - 递归作业

java - Java:SelectionKey.attach()是否损坏?

java - 用Java创建地图