java 实现一个lsm数据库 实现 put delete update get scan 操作 并且使用treemap作为 稀疏索引结构 且实现 level_size的compare策略 实现层级

组件实现:

mentable: treeMap实现

稀疏索引:treeMap 每个sstable都对应一个稀疏索引 例如

SStable:  磁盘写入自定义的协议字节

compare: 压缩策略实现了level_size 当某一层级超过限定个数 就使用归并合并这些sstable File 填充到下一个层级

wal:  暂未实现

依赖:

jdk17

maven


测试 查询2g的文件,查找时间极短(第一次为4ms(因为要打开随机文件句柄)  后面为0ms)

图为测试结果:

可以使用 batch命令  批量实现插入 然后 测试 作者使用 batch 1 30000000 一下存了30000000个记录,然后crud,速度非常快。写入速度非常快!

测试方法:直接运行main函数 然后输入命令:

put key val
get key

update key val

delete key

flush(强制把mentable的内容刷到磁盘)

github地址:

pupansheng/lsm-pps (github.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值