Erlang中的B+树数据结构

7

是否有Erlang中B+树数据结构的已知开源实现?

3个回答

6

如果你真的需要使用B+树,我强烈建议你考虑使用eleveldb应用程序。重点是你想要将数据存储在树的叶子节点上,并离线保存到磁盘上,因为这通常是B+-树的选择。还有一种纯Erlang的LevelDB变体,名为hanoidb,由Kresten Krab Thorup编写,也非常好用。适用于相同的领域。

如果你需要内存中存储数据,你应该考虑使用ETS或Mnesia(后者用于分布式存储)。在Erlang中,它们往往是最快的解决方案,因为你永远不会触及磁盘。特别是如果你可以对数据进行标准的键/值查找,而无需在Mnesia的事务上下文中运行(进行脏读取),则典型的查找速度为5-10纳秒。


3

如果您不想侵入开源数据库系统,那么以下是一种替代方案:

Chris Okasaki的《纯函数数据结构》可以帮助您自己实现。从我的经验来看,B+树本身并不那么复杂。

如果您需要内存存储和比ets和mnesia更低级别(在某种意义上)的东西,我建议使用gb_trees


2

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接