7

B+ TreeErlang中是否有任何已知的开源数据结构实现?

4

3 回答 3

6

eleveldb如果您真的需要 B+ 树,我肯定会建议您研究应用程序。关键是您希望将数据存储在树的叶子中,在磁盘上离线,因为这通常是 B+-trees 的一个选项。还有一个纯 Erlang 的 LevelDB 变体,hanoidb它也很不错,由 Kresten Krab Thorup 编写。相同的使用领域。

如果您需要内存存储,您应该查看 ETS 或 Mnesia(后者用于分发)。在 Erlang 中,这些往往是最快的解决方案,因为您具有永远不会碰到磁盘的优势。如果您可以对数据进行标准键/值查找,而无需在 Mnesia 的事务上下文中运行(进行脏读),则尤其如此。典型的查找速度是 5-10 纳秒。

于 2012-11-16T16:24:31.930 回答
3

如果您不想侵入开源数据库系统,这只是一种选择:

Chris Okasaki 的纯函数式数据结构可以让您对自己实现它有所了解。根据我的经验,B+ 树本身并不复杂。

如果您既想要内存存储又想要比 ets 和 mnesia 更底层(在某种意义上)的东西,我建议您使用gb_trees 。

于 2012-11-17T04:35:40.333 回答
2

据我所知,没有可用的独立库。然而,CouchDB 源代码非常易读并且实现得很好。

于 2012-11-16T16:24:24.210 回答