2

有谁知道 LevelDB 的测试效果如何以及它在生产中的使用状态如何?这是一个相对较新的库,当我检查源代码时,它似乎并没有很好地处理错误。有人在生产中使用 LevelDB 并且可以评论我的问题吗?

4

4 回答 4

1

One place it is used in a production environment is the Bitcoin project. Within bitcoin, it's usage is critical for the security of the platform. See the release notes for Bitcoin QT 0.8.0

于 2013-08-19T00:45:00.890 回答
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/#!主题/leveldb/IAKJaL2zqZM等...)

在提出这个问题的那天,LevelDB 肯定还没有准备好生产,任何这样想的人都是妄想。独立开发人员证实,代码质量极差https://twitter.com/rescrv/status/406106256890286080

于 2013-12-09T14:19:49.117 回答
0

我们在我们的网站中使用 LevelDB,但包裹在 SSDB ( https://github.com/ideawu/ssdb ) 中,即 LevelDB 网络服务器,支持 hash/zset 数据类型。我们的 SSDB 实例每天处理 1 亿次查询。

于 2013-08-27T17:28:43.073 回答
-1

您如何评价 2011 年推出的“相对较新”的产品?

您能否详细说明“没有很好地处理错误”?

LevelDB 在 Riak 和 Hyperdex 中用作后端,它们都对其进行了定制以提高大负载下的吞吐量。来自 Ricon East 2013 的一段精彩视频解释 Basho对Riak 所做的更改。(在 2019-03 之前的某个时间点删除)。

请注意,RocksDB是 Facebook 的另一个主要分支,推荐用于服务器端。它从 LevelDB 分叉的历史在WikiPedia上。您可以在此页面上了解 RocksDB 如何处理错误:

目前在 RocksDB 中,写入操作期间的任何错误(写入 WAL、Memtable Flush、后台压缩等)都会导致数据库实例默认进入只读模式,并且不接受进一步的用户写入......

调用 DB::Resume() 手动恢复数据库并将其置于读写模式。此功能将清除错误,清除所有过时的文件,并重新启动后台刷新和压缩操作。目前,它只支持从压缩过程中发生的后台错误中恢复。未来,我们会增加更多案例。

于 2013-10-08T13:15:59.610 回答