BerkeleyDB的替代品?

38 berkeley-db dbm

我正在寻找一个类似dbm的库,我可以使用它代替Berkeley DB,我目前正在使用它.我转换的主要原因是BDB的许可费用相当高(开源应用程序免费,但我的雇主不希望出于各种原因开源这个特定的应用程序).

我简要地看了一下qdbm,但看起来它不会满足我的需求 - 很多键(几百万)和大数据项(> 1-5兆字节).在我继续搜索之前,我想我会问,因为似乎有大量类似dbm的库.

小智 25

C/C++

Java的


Phi*_*ham 18

你可以看东京内阁.它是qdbm/gdbm的继承者,如果你决定扩展它有一个很好的网络前端可用.

编辑:

另一个变种是京都内阁 ; 由同一个人开发,但据说更容易使用.


Gre*_*ill 11

SQLite是公共域,意味着您可以将其用于任何目的,并且被广泛使用和支持.

  • Berkeley DB现在支持SQL以及键/值API.事实上,它在Berkeley DB B-Tree之上使用SQLite代码,因此您现在可以运行TB大小的SQLite数据库,而不仅仅是在"几十GB"的情况下.(免责声明:我是Oracle的Berkeley DB的产品经理.) (4认同)

geo*_*car 8

您可以通过任何dbm(甚至是qdbm)获得更高的性能,并通过简单的间接级别改进并行性:只需获取密钥并对其进行哈希处理,并将其data_dir/H(key)/用作存储这些密钥的数据库.将哈希输出限制为较小的值(比方说)255以获得最佳结果.

这种方法有很多好处,很容易总结:

  • 概念简单
  • 易于实施和测试
  • 不锁定整个数据库以进行更新
  • 可以支持更大的数据库
  • 易于更换DBM组件

哈希可能甚至不需要加密安全; 大多数都是统一的 DJB的cdb哈希在大多数情况下运行良好.