BerkeleyDB的替代品?

时间:2008-11-04 03:44:47

标签: berkeley-db dbm

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

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

9 个答案:

答案 0 :(得分:24)

C / C ++

的Java

答案 1 :(得分:18)

您可以查看Tokyo Cabinet。它是qdbm / gdbm的继承者,如果你决定扩展它有一个很好的网络前端可用。

修改

另一个变体是Kyoto Cabinet;由同一个人开发,但据说更容易使用。

答案 2 :(得分:10)

SQLite是公共领域,这意味着您可以将其用于任何目的,并得到广泛使用和支持。

答案 3 :(得分:8)

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

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

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

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

答案 4 :(得分:3)

如果您使用的是Windows,则可以使用内置的数据库引擎。 http://blogs.msdn.com/windowssdk/archive/2008/10/23/esent-extensible-storage-engine-api-in-the-windows-sdk.aspx

答案 5 :(得分:3)

您可以尝试JDBM。它是一个带磁盘持久性的免费(Apache 2)键值存储。简单的API和高性能

答案 6 :(得分:2)

PostgresHSQLDB甚至可能H2 database

答案 7 :(得分:0)

db4o非常便宜且快速,但它只能用于java或.net

答案 8 :(得分:0)

Firebird是你最好的朋友。