Erlang中是否存在 B+ Tree
数据结构的开源已知实现?
答案 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非常易读并且实施得很好。