【问题标题】:Alternative to BerkeleyDB? [closed]BerkeleyDB 的替代品? [关闭]
【发布时间】:2010-09-20 14:55:08
【问题描述】:

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

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

【问题讨论】:

    标签: berkeley-db dbm okvs


    【解决方案1】:

    C/C++

    Java

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        编辑:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

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

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

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

            【讨论】:

            • 有趣的建议,但它与问题有点正交。使用哈希表与排序的类 btree 结构的优点是不同的主题。
            【解决方案6】:

            PostgresHSQLDB 甚至可能是 H2 database

            【讨论】:

              【解决方案7】:

              Firebird 是你最好的朋友。

              【讨论】:

              • Firebird 是一个非常好的 SQL 数据库。作为存储数据库不太好,但由于非常好的 BLOB 支持,可能比大多数数据库更好。
              • 您能否详细说明“作为存储数据库不太好”?另外,我想了解更多关于 Firebird 不是很好的信息(价格?尺寸?:))
              【解决方案8】:

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

              【讨论】:

              • db4o 绝对不适合 BerkeleyDB。另外 db4o 不提供免版税许可模式。他们为每次部署收费。
              【解决方案9】:

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

              【讨论】:

              • 好主意,但显然不建议将 SQLite 用于大型数据库。我们的大约是 50GB;抱歉,原帖中可能并不清楚。
              • 另一个问题是 BDB 不是 SQL DBMS,它是一个存储引擎。因此,除非他在 BDB 之上编写了 SQL 实现,否则似乎将需要更多的工作来移植到 SQL 而不是另一个存储引擎。
              • @Ferruccio,他不必移植到 SQL,他可以简单地在 SQL 之上实现类似 BDB 的 API。很容易。
              • Berkeley DB 现在支持 SQL 以及键/值 API。事实上,它使用了 Berkeley DB B-Tree 之上的 SQLite 代码,因此您现在可以运行 TB 大小的 SQLite 数据库,而不仅仅是在“几十 GB”就可以的情况下。 (免责声明:我是 Oracle Berkeley DB 的产品经理。)
              • 似乎 SQLite 声称支持 TB 大小的数据库 - sqlite.org/features.html
              猜你喜欢
              • 2012-06-16
              • 2011-06-16
              • 2011-12-17
              • 2010-10-21
              • 2010-12-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多