rosedb 重构—意见征求

2023-09-01 08:56:31 浏览数 (1)

Hello 大家好,rosedb 目前正处于重构阶段,想要征求一些大家的意见和建议,欢迎大家来畅所欲言。

对于前面的版本,设计上较为简单,但是也存在很多的问题,这次 rosedb V2 版本的重构主要分为三个部分。

一是磁盘文件的布局将会发生一些改变,之前是按照一个偏移去追加写数据到文件中,这样存在的一个问题是,如果 value 较小,那么在重启加载数据文件时,需要的磁盘 IO 次数较多,严重影响效率。

这次的重构将会改变数据文件的布局,参考了 LSM Tree 中的 Write Ahead Log 的设计,将一个文件切分成了多个 block,每个 block 固定 32 KB 的大小,读取的时候将会直接一次性读取一个 block,减少了磁盘 IO。

并且加上了 block 缓存,在读取的时候,如果命中缓存,将直接避免了磁盘 IO,从内存中就能直接获取到数据,极大提升了数据读取的性能。

wal 这部分其实可以单独拿出来,因为这是一个通用的组件,于是我新建了一个公开的项目,大家感兴趣的可以学习研究,也可以直接拿去使用。

项目地址:https://github.com/rosedblabs/wal

二是,对于内存索引,目前还在调研阶段,之前采用了 Adaptive Radix Tree,读写效率非常高,但是迭代器的功能较简单,目前主要调研的数据结构有这几种:

1、https://github.com/hashicorp/go-immutable-radix

这是 HashiCorp 的一个开源库,也是基数树的实现,迭代器也很丰富,并且有 Hashicorp 的背书。

2、https://github.com/google/btree

Google 开源的 Golang BTree 库。

3、https://github.com/plar/go-adaptive-radix-tree

自适应基数树索引。

三是,对于 Redis 数据结构和协议的支持,将会从 rosedb 中拆分出来,单独形成一个项目,这样方便去接入不同的存储引擎,比如 rosedb、boltdb、badger 等等。

所以,这一次希望能够征求大家对项目的各种意见,无论你是 rosedb 的使用者、爱好者,还是仅仅对数据库/存储感兴趣,都可以提出自己的建议。

比如磁盘文件布局的优化,内存索引结构的选择,基础功能的补充,文档的完善,使用体验的优化等等,各方面都可以提出自己的想法和建议。

大家可以直接留言,或者私信我都可以。

最后附上 rosedb 项目的地址:

https://github.com/rosedblabs/rosedb

0 人点赞