B+ Tree
Erlangのデータ構造のオープン ソースの既知の実装はありますか?
3 に答える
eleveldb
本当に B+ ツリーが必要な場合は、アプリケーションを検討することをお勧めします。ポイントは、データをツリーのリーフに格納し、オフラインでディスクに保存することです。これは、B + ツリーが通常オプションである場合です。hanoidb
Kresten Krab Thorup によって書かれた、これも非常に優れたLevelDB の純粋な Erlang のバリアントもあります。使用面積は同じです。
インメモリ ストレージが必要な場合は、ETS または Mnesia (後者はディストリビューション用) のいずれかを検討する必要があります。Erlang では、ディスクにヒットしないという利点があるため、これらは最速のソリューションになる傾向があります。Mnesia のトランザクション コンテキスト内で実行する必要なく (ダーティ リードを実行する)、データに対して標準のキー/値ルックアップを実行できる場合は特にそうです。その場合、典型的なルックアップ速度は 5 ~ 10 ナノ秒です。
オープン ソース データベース システムにハッキングしたくない場合の代替手段:
Chris Okasaki のPurely Functional Data Structuresは、自分で実装するための洞察を提供してくれます。私の経験からすると、B+ ツリー自体はそれほど複雑ではありません。
インメモリ ストレージと、ets や mnesia よりも (ある意味で) 低レベルなものの両方が必要な場合は、gb_treesを使用することをお勧めします。
私が知っているスタンドアロンのライブラリはありません。ただし、CouchDB のソース コードは非常に読みやすく、適切に実装されています。