Erlang中的B +树数据结构

时间:2012-11-16 12:11:00

标签: tree erlang linked-list b-tree

Erlang中是否存在 B+ Tree 数据结构的开源已知实现?

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

如果您不想破解开源数据库系统,那么这只是另一种选择:

Chris Okasaki的纯功能数据结构可以为您提供一些自己实现它的洞察力。根据我的经验,B +树本身并不复杂。

如果你想要内存存储和更低级别(在某种意义上)而不是ets和mnesia,我建议使用gb_trees

答案 2 :(得分:2)

我知道没有可用的独立库。但是CouchDB source code非常易读并且实施得很好。