我需要一个快速、可靠和高效的关键--价值的数据库,用于Linux。我的钥匙约128位,并最大价值的大小可以128K或256K。该数据库系统不应该使用超过约1兆头。总的数据库的尺寸为20克(!), 但只有一个小的随机部分的数据被访问的时间。如果有必要,我可以移动一些数据blob出的数据库(定期文件),使大会下降到2GB最大。该数据库必须生存下来的系统崩溃而任何损失在最近未经修改的数据。我会有大约100倍的读取比写。它是一个再加上如果可以使用框设备(无文件系统)作为储存。我不需要客户机-服务器的功能,只是一个图书馆。我需要Python绑定(但是我可以实现他们如果他们不是可用)。

哪些解决方案应考虑和这一做你建议?

候选人我知道的可能的工作:

  • 东京内阁 (Python绑定 pytc, 也可参看 pytc例码, 支持哈希和B+树木,交易日志的文件和更多的大小桶阵列是固定的,在创建数据库的时间;作者必须关闭该文件给别人一个机会;大量的小写与重新开放该文件对于他们每个人都非常缓慢;暴君服务器,可以帮助很多小型写; 速度之间的比较,东京的内阁、东京的暴君和Berkeley DB)
  • VSDB (安全的,即使在NFS,没有锁定;怎么样的障碍?;更新是非常缓慢,但不是作为缓慢,如同在加勒比开发银行;最后一个版本于2003年)
  • BerkeleyDB (提供的崩溃,恢复;提供了交易;的 bsddb 蟒蛇模块提供的绑定)
  • 桑巴的贸发理事会 (与交易和Python绑定,一些用户 有经验的腐败, 有时 mmap()s整文件, repack 操作有时倍,文件大小、产生神秘的失败,如果该数据库是较大的比2G(甚至64位系统),集群的执行情况(CTDB);文件太大后,大量的修改;文件变得太慢了后多哈竞争;没有内在的方式来重建该文件;非常快速的平行更新,通过锁定单独的散列桶)
  • aodbm (追加的只有这么幸存系统崩溃,与Python绑定)
  • hamsterdb (Python绑定)
  • C-树 (成熟的、多才多艺的商业解决方案具有高性能,有一个免费版的功能减弱)
  • 贸发理事会 (2001年)
  • bitcask (日志结构,写入厄兰)
  • 各种其他DBM实现(例如GDBM,NDBM,QDBM,,Perl的SDBM或红宝石;可能他们没有适当的崩溃,恢复)

我不会使用这些:

  • MemcacheDB (客户机-服务器上,使用BereleleyDB作为后端)
  • cdb (需要重新生成的整个数据库吁各写)
  • http://www.wildsparx.com/apbcdb/ (同上)
  • 穿红衣 (保留的整个数据库中存储器)
  • 源码 (它就变得非常缓慢,没有定期吸尘,请参阅自动完成的,在位置吧Firefox3.0,尽管版3.1和后来的源码允许 auto_vacuuming;要注意:小写的交易可能会非常缓慢;要注意:如果一个繁忙的过程是在做的许多交易,其他进程挨饿,他们可以永远不会锁定)
  • MongoDB (太严重、对待值为对象的内部结构)
  • 火鸟 (SQL基RDBMS,过于沉重的重量)

仅供参考, 最近的一篇文章有关的关键--价值的数据库 在Linux的杂志。

仅供参考, 旧的软件清单

仅供参考, 速度比较的MemcacheDB,穿红衣和东京内阁暴君

相关问题上的计算器:

有帮助吗?

解决方案

我有好运气的东京内阁/pytc的解决方案。这是非常快的(有点速度比使用的搁置模块,使用anydbm在我的执行),对阅读和写作(尽管我也做出更多的读取)。该问题对我来说是斯巴达文件python绑定,但有足够的例代码弄清楚如何去做你需要做的。此外,东京内阁是很容易安装(如python绑定),不需要服务器(如你所说的) 似乎是积极的支持 (稳定,但不再在积极发展)。你可以打开文件的只读模式,允许并行访问,或者读写模式,防止其他进程访问数据库。

我一直在寻找各种选择,在今年夏天,并建议我然后是这样的:尝试不同的选择和看到什么最适合你。这将会是很好,如果有一个简单的"最好"的选项,但每个人都在寻找稍微不同的特点和愿意作出不同的折衷。你知道最好的。

(这就是说,这会是有用的其他人如果你共用什么结束了工作的最适合你,和你为什么选择这种解决办法在其他人!)

其他提示

LMDB是最存储器的有效数据库周围 http://symas.com/mdb/inmem/

并且还证明是最可靠的-完全崩溃的证明。http://wisdom.cs.wisc.edu/workshops/spring-14/talks/Thanu.pdf

你已经提到,东京内阁已记录在案的腐败问题 https://www.google.com/search?q=cfengine+tokyo+cabinet+corruption

BerkeleyDB也有记录在案的腐败问题,作为不Bitcask.(及bitcask是一个内存-只DB无论如何,这么没用你的1MB RAM的要求。)

LMDB也支持在蟒蛇,与几个不同的绑定。https://github.com/dw/py-lmdb/ https://github.com/tspurway/pymdb-lightning

免责声明-我就是作者的LMDB.但这些都记录在案的事实:LMDB是最小、最有效和最可靠的key/value存储在世界并没有什么别的任何地方接近。

加勒比开发银行可以处理任何数据库4GB,使它太小于20GB。

Riak运行在Linux上,并允许你来动态增加节点

怎么样Python3.0的dbm。ndbm?

另一项建议是 贸发理事会 (a部分Samba项目)。我已经用它穿过 贸发理事会 模块,但是我不能说我已经测试其可靠性在崩溃;该项目的我用它在没有这种要求,我找不到有关文件。

怎么样的一个源码?

我用bsddb.hashlib()与蟒蛇,它的工作相当良好。

你可能会喜欢的 djb's cdb, ,其中有的属性。

我查询一个交叉平台ISAM式的数据库 (类似)中,我也收到建议的嵌入式版本 火鸟巧舌如簧.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top