当前位置:  开发笔记 > 编程语言 > 正文

BerkeleyDB的替代品?

如何解决《BerkeleyDB的替代品?》经验,为你挑选了4个好方法。

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

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



1> 小智..:
C/C++

http://sphia.org/一个Key/Value Store,用C和BSD许可编写.

https://code.google.com/p/leveldb/用C++编写,也是BSD许可的

http://luxio.sourceforge.net/用C++,LGPL编写,比Berkeley DB更快

http://symas.com/mdb/用C编写,许可证是OpenLDAP公共许可证(BSD-Like)

https://github.com/davidar/sdbm 写在C,Public Domain,重新实现"ndbm"

http://repetae.net/computer/vsdb/用C编写,许可证未知,实验

https://github.com/stevedekorte/skipdb使用Skip-List索引在C,BSD许可,键值存储中编写

http://unqlite.org/ 用C/C++编写,嵌入式NoSQL数据库引擎,BSD许可,类似于SQLite.

http://hamsterdb.com/ 用C/C++编写,嵌入式NoSQL数据库引擎,Apache License 2.0.

Java的

https://github.com/dain/leveldb LevelDB的Java端口,Apache License 2.0

https://github.com/jingwei/krati以前的LinkedIn项目,Apache License 2.0

http://www.mapdb.org/嵌入式Java数据库,Apache License 2.0,支持键值存储,非常高效的对象序列化

https://github.com/OpenHFT/Chronicle-Map,LGPL v3,嵌入式纯Java键值存储,比Berkeley DB更快

https://github.com/jetbrains/xodus,Apache License 2.0,一个Java事务无模式嵌入式数据库,比Berkeley DB更快

https://github.com/lmdbjava/lmdbjava,LMDB的 JNI绑定,Apache License 2.0



2> Phillip B Ol..:

你可以看东京内阁.它是qdbm/gdbm的继承者,如果你决定扩展它有一个很好的网络前端可用.

编辑:

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



3> Greg Hewgill..:

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


Berkeley DB现在支持SQL以及键/值API.事实上,它在Berkeley DB B-Tree之上使用SQLite代码,因此您现在可以运行TB大小的SQLite数据库,而不仅仅是在"几十GB"的情况下.(免责声明:我是Oracle的Berkeley DB的产品经理.)

4> geocar..:

您可以通过任何dbm(甚至是qdbm)获得更高的性能,并通过简单的间接级别改进并行性:只需获取密钥并对其进行哈希处理,并将其data_dir/H(key)/用作存储这些密钥的数据库.将哈希输出限制为较小的值(比方说)255以获得最佳结果.

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

概念简单

易于实施和测试

不锁定整个数据库以进行更新

可以支持更大的数据库

易于更换DBM组件

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

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有