我正在寻找一个类似 dbm 的库,可以用来代替我目前正在使用的 Berkeley DB。我切换的主要原因是 BDB 的许可费用非常高(开源应用程序免费,但我的雇主出于各种原因不想开源这个特定的应用程序)。
我已经简要地查看了 qdbm,但它看起来并不能满足我的需求——很多键(数百万)和大数据项(> 1-5 兆字节)。在我继续搜索之前,我想我会问,因为那里似乎有很多类似 dbm 的库。
我正在寻找一个类似 dbm 的库,可以用来代替我目前正在使用的 Berkeley DB。我切换的主要原因是 BDB 的许可费用非常高(开源应用程序免费,但我的雇主出于各种原因不想开源这个特定的应用程序)。
我已经简要地查看了 qdbm,但它看起来并不能满足我的需求——很多键(数百万)和大数据项(> 1-5 兆字节)。在我继续搜索之前,我想我会问,因为那里似乎有很多类似 dbm 的库。
SQLite是公共领域,这意味着您可以将它用于任何目的,并且被广泛使用和支持。
您可以从任何 dbm(甚至 qdbm)中获得显着改进的性能,并通过简单的间接级别改进并行性:只需获取您的密钥并将它们散列,然后data_dir/H(key)/
用作存储这些密钥的数据库。将散列输出限制为一个较小的值(例如)255 以获得最佳结果。
这种方法有很多好处,很容易总结:
哈希可能甚至不需要加密安全;只是大多是统一的。DJB 的cdb 哈希在大多数情况下运行良好。
如果您在 Windows 上,那么您可以使用内置的 esent 数据库引擎。http://blogs.msdn.com/windowssdk/archive/2008/10/23/esent-extensible-storage-engine-api-in-the-windows-sdk.aspx
你可以试试JDBM。它是具有磁盘持久性的免费 (Apache 2) 键值存储。简单的 API 和高性能
db4o 非常便宜和快速,但它只能与 java 或 .net 一起使用
火鸟是你最好的朋友。