三年前我就想写一个关系数据库了,无奈却苦于 B+树算法的实现,如今数据库仍旧没着落,但总算写出 B+树实现了磁盘落地。虽然只是个 demo ,但算法上保证完备,实践上经久耐操,对百万级样本处理达到秒级性能。附上源码以及测试用例(包括文件落地和读写),望数据库和存储大牛们切磋指教!
https://github.com/begeekmyfriend/bplustree
一种玩法:
随机生成一百万样本和四百万条 CRUD 指令,将结果存储到/tmp/data.bp
和/tmp/metadata.bp
中
./coverage_build.sh
退出后再次运行 demo ,读取默认保存的/tmp/data.bp
和/tmp/metadata.bp
./demo_build.sh
使用 dump 指令在终端上画出整个树形结构(见 help 输出)
注意:下次玩的时候记得更改文件名,否则会把文件中原有的数据读入
顺便说一句,代码质量基本属于principle(al)级别,电脑搞坏我全陪!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.