B+树实现磁盘存储

2017-04-20 17:54:59 +08:00
 begeekmyfriend

三年前我就想写一个关系数据库了,无奈却苦于 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)级别,电脑搞坏我全陪!

9306 次点击
所在节点    程序员
22 条回复
sunny123
2017-09-20 08:56:43 +08:00
@begeekmyfriend 好久没来了,感谢回复,问题已解决,用的 string 形式的 key
begeekmyfriend
2017-09-20 14:30:43 +08:00
@sunny123 用 C++写的么,发展的怎样了,前端用了 SQL 没:-)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/356232

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX