前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >rosedb 重构—意见征求

rosedb 重构—意见征求

作者头像
roseduan
发布2023-09-01 08:56:31
1900
发布2023-09-01 08:56:31
举报
文章被收录于专栏:roseduan写字的地方

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 roseduan写字的地方 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档