我正在寻找一个类似dbm的库,我可以使用它代替Berkeley DB,我目前正在使用它。我转换的主要原因是BDB的许可费用相当高(开源应用程序免费,但我的雇主不希望出于各种原因开源这个特定的应用程序)。
我简要介绍了qdbm,但看起来它不会满足我的需求 - 许多密钥(数百万)和大数据项(> 1-5兆字节)。在我继续搜索之前,我想我会问,因为似乎有大量类似dbm的库。
答案 0 :(得分:24)
答案 1 :(得分:18)
您可以查看Tokyo Cabinet。它是qdbm / gdbm的继承者,如果你决定扩展它有一个很好的网络前端可用。
修改强>
另一个变体是Kyoto Cabinet;由同一个人开发,但据说更容易使用。
答案 2 :(得分:10)
SQLite是公共领域,这意味着您可以将其用于任何目的,并得到广泛使用和支持。
答案 3 :(得分:8)
您可以通过任何dbm(甚至是qdbm)获得更好的性能,并通过简单的间接级别改进并行性:只需获取密钥并对其进行哈希处理,并使用data_dir/H(key)/
作为数据库来存储这些密钥。将哈希输出限制为较小的值(比如)255以获得最佳结果。
这种方法有很多好处,很容易总结:
哈希可能甚至不需要加密安全;大多数都是统一的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)
答案 7 :(得分:0)
db4o非常便宜且快速,但它只能用于java或.net
答案 8 :(得分:0)
Firebird是你最好的朋友。