有谁知道LevelDB的测试结果如何?它在生产中的使用状态如何?这是一个相对较新的库,当我检查源代码时,它似乎没有太好地处理错误。有没有人在制作中使用LevelDB并可以评论我的问题?
答案 0 :(得分:1)
在生产环境中使用的一个地方是比特币项目。在比特币中,它的使用对平台的安全性至关重要。请参阅Bitcoin QT 0.8.0
的发行说明答案 1 :(得分:1)
LevelDB有很多高可见性问题https://github.com/bitcoin/bitcoin/issues/2770而且代码编写得很糟糕,以至于需要赏金才能找到修复https://bitcointalk.org/index.php?topic=337294.0;all而leveldb讨论组主要是关于非常基本的错误报告数据库功能无法按照宣传的方式工作。 https://groups.google.com/forum/#!forum/leveldb(例如,“快照”实际上不是快照,可能会被后续写入https://groups.google.com/forum/#!topic/leveldb/IAKJaL2zqZM等污染......)
在提出这个问题之日,LevelDB肯定不是生产准备好的,任何一个这样认为是妄想的人。正如独立开发者https://twitter.com/rescrv/status/406106256890286080
所证实的那样,代码质量非常糟糕答案 2 :(得分:0)
我们在我们的网站中使用LevelDB,但包含在LevelDB网络服务器SSDB(https://github.com/ideawu/ssdb)中,支持hash / zset数据类型。我们的SSDB实例每天提供1亿个查询。
答案 3 :(得分:-1)
你如何在2011年取得“相对较新”的资格?
您能否详细说明“不能很好地处理错误”?
LevelDB用作Riak和Hyperdex的后端,它们都定制了它以提高巨大负载下的吞吐量。 是 一个伟大的video from Ricon East 2013解释了Basho所做的Riak更改。(在2019-03之前的某个时间点取消)。
请注意,RocksDB是Facebook的另一个主要分支,建议用于服务器端。 LevelDB的分支历史记录在WikiPedia。您可以阅读RocksDB如何处理this page上的错误:
目前在RocksDB中,写操作期间出现任何错误(写入 WAL,Memtable Flush,后台压缩等)导致数据库 实例,默认情况下进入只读模式,进一步用户写入 不被接受....
调用DB :: Resume()手动恢复数据库并将其置于读写状态 模式。此函数将清除错误,清除任何过时的文件, 并重新启动后台刷新和压缩操作。目前,它 仅支持从中发生的后台错误中恢复 压实。将来,我们会增加更多案例。