41

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

我已经简要地查看了 qdbm,但它看起来并不能满足我的需求——很多键(数百万)和大数据项(> 1-5 兆字节)。在我继续搜索之前,我想我会问,因为那里似乎有很多类似 dbm 的库。

4

9 回答 9

30

C/C++

爪哇

于 2014-08-08T09:59:21.567 回答
18

你可以看看东京内阁。它是 qdbm/gdbm 的继任者,如果你决定扩展,它有一个不错的网络前端可用。

编辑:

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

于 2008-11-14T15:16:12.220 回答
11

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

于 2008-11-04T03:46:34.790 回答
9

您可以从任何 dbm(甚至 qdbm)中获得显着改进的性能,并通过简单的间接级别改进并行性:只需获取您的密钥并将它们散列,然后data_dir/H(key)/用作存储这些密钥的数据库。将散列输出限制为一个较小的值(例如)255 以获得最佳结果。

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

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

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

于 2008-11-14T16:00:07.717 回答
3

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

于 2008-12-15T17:26:08.983 回答
3

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

于 2012-02-26T15:28:32.407 回答
2

PostgresHSQLDB甚至可能是H2 数据库

于 2008-11-14T15:22:47.777 回答
0

db4o 非常便宜和快速,但它只能与 java 或 .net 一起使用

于 2008-11-04T03:47:06.957 回答
0

火鸟是你最好的朋友。

于 2008-11-04T04:05:22.850 回答