RustでB+Treeかいたよ
2021年2月24日4月18日追記:
新しいほうがあります。
(見返すと大分筋が悪く思えてはずかしかったので再実装しました)
totechite.hatenablog.com
素の二分木とかAVL木かいたりと細々と継続していた、アルゴリズムとデータ構造の学習の延長です。こいつ木しか書いてねえな
totechite.hatenablog.com 今見返すとその記事の頃からBtreeやるやるとかいており、氏ぬまでに実装できてよかったと思う
はじめに
B+木については自分が解説するよりこちらの記事を読んでもらうほうがわかりやすいと思います
christina04.hatenablog.com
B木の変形にB*木やB+木と呼ばれるものがありますが、B+木の実装はあまり公開されていない様にみえた為今回B+木をを書いてみました。
実装した操作はinsert(挿入), find(探索), update(更新), delete(削除), print(出力)
deleteははりきって物理削除を採用した えらいね
グチャグチャに書いてしまったので気が向いたらコメントでも書いて整理したい
gistf4ea94b6095b31d4f62e71baa48135a1
結び
以前よりRDBMSの実装には興味があり、インデックスのデータ構造の一つであるB木にはかねてより関心があったので今回実装出来て楽しかった。今後自作RDBMSとか作るときに使うと思う。
とりあえず一通り動くところまではできたが、きっと余分な処理をしていたりコードが冗長になってしまっている為その解消と、諸々の最適化には手を付けられていないことを次の課題にしたい。
参考リンク
RDBMS等でB木を採用する意義がわかる おもしろい記事 naoya-2.hatenadiary.org
実装の雰囲気を知る際とても参考になった tutuz.hateblo.jp
手元の実装の挙動の確からしさを知る際このサイトが重宝した。すき www.cs.usfca.edu