BerkeleyDB的替代品?

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

我简单的看了一下qdbm,但是看起来并不能满足我的需求 – 大量的密钥(几百万)和大的数据项(大于1-5兆字节)。 在我继续我的search之前,我想我会问,因为看起来有大量类似于dbm的库。

你可以看看东京内阁 。 它是qdbm / gdbm的inheritance者,并且如果您决定进行扩展,则可以使用一个很好的networking前端。

编辑:

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

C / C ++

Java的

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

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

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

  • 概念上简单
  • 易于实施和testing
  • 不locking整个数据库的更新
  • 可以支持更大的数据库
  • 易于更换DBM组件

哈希可能甚至不需要encryption安全; 只是大体上统一。 在大多数情况下,DJB的cdb散列效果很好。

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

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

Postgres或HSQLDB ,甚至可能是H2数据库

db4o是相当便宜和快速的,但它只能用于java或.net

火鸟是你最好的朋友。