用于Java的单文件,持久性,排序键值存储(Berkeley DB的替代)

Jé *_*eue 6 java berkeley-db key-value-store

Berkeley DB(JE)许可可能是交易杀手.我有一个Java应用程序转到一小部分客户,但由于它是一个桌面应用程序,我的价格不能支持单个实例许可.

是否有推荐的Java替代Berkeley DB? 商业或其他方面(良好的键值存储实现可以变得非常重要,我更愿意推迟其他地方的维护).我需要的不仅仅是一个哈希存储,因为我需要迭代后续的关键子集,基本的哈希存储将是O(m*n)搜索,我希望在桌面计算机上存储大约为50-60GiB.您可以推荐的任何人都可以将其后备存储保存在单个文件中吗?

And*_*ejs 9

你一定要尝试JDBM2,它可以做你想要的:

  • 磁盘支持的HashMaps/TreeMaps因此您可以遍历密钥.
  • Apache 2许可证

此外:

  • 快速,非常小的占地面积
  • 交易
  • 独立jar只有145 KB.
  • 用法简单
  • 可扩展至1e9记录
  • 使用Java序列化,没有ORM映射

UPDATE

该项目现已发展为MapDB http://www.mapdb.org


JPe*_*ier 5

我认为SQLite正是你想要的:免费(公共域),单文件数据库,零配置,小占用空间,快速,跨平台等.这里是一个包装器列表,有一节用于Java.看一下sqlite4java,在这里阅读更多有关Java + SQLite的内容.


Edw*_*uck 2

--- 看到文件大小后编辑 ---

50 到 60 GiB 文件!看来您必须知道您的数据库引擎不会立即将所有内容加载到内存中,并且在处理/清理卸载的数据支持块方面非常有效。

我不知道 Cloudscape 是否能够胜任这项任务,如果不能,我也不会感到惊讶。

---原帖如下---

Cloudscape 通常符合要求。它比 Berkeley DB 稍大一点,但它获得了足够的吸引力,甚至可以与某些 JDK 产品一起分发。