-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
一些 草案想法,想听听大家的意见:
go原生的 内嵌型的“redis” (不完全和redis一样)
特点:
- 内嵌型
- 高性能读、写
- 持久化的kv(基本set、get、put、delete)、支持redis的主流数据结构
- 支持内存模式(可以当缓存用)
- 支持bucket方便业务隔离
- 支持事务
目前的想法
目前主要是打磨好单机版。后面基于这个项目衍生项目,比如分布式kv、分布式日志系统(后话了属于)。
1 、数据库引擎方向
功能点:
-
redis主流 string、list、hash、set、sorted set ,目前没有支持hash 是否考虑支持?
-
目前issue里面的 :https://github.com/nutsdb/nutsdb/issues (需要分优先级)
- SAdd方法不支持定义TTL SAdd方法不支持定义TTL? nutsdb#102
- A function that deletes the specified index (one or more) A function that deletes the specified index (one or more) nutsdb#93
- 关于获取bucket 下所有list数组型 key列表方法 (关于获取bucket 下所有list数组型 key列表方法 nutsdb#80)
- 迭代器GetAll() should return an iterator for the key-value items GetAll() should return an iterator for the key-value items nutsdb#44
- 正向反向迭代器 是否可以支持iterator? nutsdb#54
- BPTree 最大最小key get all keys / get higest key nutsdb#73
-
稀疏索引模式 没有merge功能,没有缓存加速,缺少一些迭代器功能
-
数据压缩?
-
其他。。
-
需要支持server模块,不然可视化没法做了(支持HTTP、RPC)
优化点:
- 写性能(目前sync模式的写还有很大提高空间,参见第三方评测 https://github.com/smallnest/kvbench )
- 已优化一版批量写
- 锁优化(目前锁粒度太大,需要通过bucket、数据结构维度减少锁粒度,提高并发性能)
- 内存模式:考虑类似缓存思路。考虑命中率、淘汰策略以及减少gc的开销?
- 优化merge(目前的gc实现比较简单,有极大改进空间)
- 协议(目前设计不够紧凑)
- error 错误需要梳理下(https://github.com/nutsdb/nutsdb/issues/87) 目前还有很多不合适的地方。已经更新了一些(@xpzouying)
2 、易用性生态建设:
- cli 支持命令行操作
- 可视化工具:
- web可视化可以操作、可以查询 https://github.com/nutsdb/nutsdbweb
- 桌面gui可视化工具
3、可观测性
- 监控指标
- 监控指标统计、暴露接口
- 可以无缝接入第三方,比如prometheus等
4 、文档建设
- 目前的文档在一个readme,后面需要拆开维护,方便对单个精细化编写,如编写set,能描述清楚功能、实例、时间复杂度、注意事项、最佳实践等。
5、社区建设
- 包括写文章(入门教程、源码剖析、性能评测)推广
- 对外宣传(布道)
- 国内建设为主、国外为辅?
- 如何让开发者愿意参与进来?低门槛的那种
6、需求收集
- issues里面搜集
- 用户反馈
- 其他地方收集
- 其他方式
7、前沿探索
- 对某些场景优化
- 引入新的设计理念
- 实验性项目
欢迎补充!欢迎开发者共建!
lxbworld, roseduan and csh0101
Metadata
Metadata
Assignees
Labels
No labels