Tag: berkeley db

优化BerkeleyDB JE数据库

我计划在BerkeleyDB JE数据库中插入大量唯一键(~3E9)。 键将具有固定长度(~10个字节),但值将具有可变长度。 数据库不是事务性的。 您会为EnvironmentConfig和DatabaseConfig建议哪些参数来优化数据库的大小和速度? 非常感谢, 皮埃尔

寻找一个轻量级的java兼容的内存键值存储

Berkeley DB可能是最好的选择,但由于许可问题我无法使用它。 还有其他选择吗?

寻找java.util.Map的替代品

问题 关注这个问题 ,似乎基于文件或磁盘的Map实现可能是我在那里提到的问题的正确解决方案。 简洁版本: 现在,我有一个实现为ConcurrentHashMap的Map 。 条目以相当固定的速率不断添加到其中。 稍后详细说明。 最终,无论如何,这意味着JVM耗尽了堆空间。 在工作中,(强烈)建议我使用SQLite解决此问题,但在询问上一个问题之后,我认为数据库不是这项工作的正确工具。 所以 – 让我知道这听起来有多疯狂 – 我认为更好的解决方案是存储在磁盘上的Map 。 不好的主意:自己实现这个。 更好的主意:使用别人的图书馆! 哪一个? 要求 必备: 自由。 持久性。 数据需要在JVM重启之间保持不变。 某种可搜索性。 是的,我需要能够检索这些数据以及将其丢弃。 基本结果集过滤是一个加号。 与平台无关。 需要在Windows或Linux计算机上进行生产部署。 可以清除 。 磁盘空间是有限的,就像堆空间一样。 我需要摆脱n天的条目。 如果我必须手动执行此操作,这不是什么大问题。 尼斯对富人: 使用方便。 如果我能在本周末完成这项工作,那将是很棒的。 更好的是:一天结束。 如果我可以在我的类路径中添加一个JAR,更改new ConcurrentHashMap();那真的非常非常棒new ConcurrentHashMap(); 到new SomeDiskStoredMap(); 并完成。 体面的可扩展性和性能。 最坏的情况:新的条目(平均)每秒增加3次,每秒,每天,每天。 但是,插入并不总是顺利发生。 它可能是(no inserts for an hour)然后(insert 10,000 objects at […]

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

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