Skip to content

关于nutsdb的一些草案想法 #1

@xujiajun

Description

@xujiajun

一些 草案想法,想听听大家的意见:

go原生的 内嵌型的“redis” (不完全和redis一样)

特点:

  • 内嵌型
  • 高性能读、写
  • 持久化的kv(基本set、get、put、delete)、支持redis的主流数据结构
  • 支持内存模式(可以当缓存用)
  • 支持bucket方便业务隔离
  • 支持事务

目前的想法

目前主要是打磨好单机版。后面基于这个项目衍生项目,比如分布式kv、分布式日志系统(后话了属于)。

1 、数据库引擎方向

功能点:

优化点:

  • 写性能(目前sync模式的写还有很大提高空间,参见第三方评测 https://github.com/smallnest/kvbench )
    • 已优化一版批量写
  • 锁优化(目前锁粒度太大,需要通过bucket、数据结构维度减少锁粒度,提高并发性能)
  • 内存模式:考虑类似缓存思路。考虑命中率、淘汰策略以及减少gc的开销?
  • 优化merge(目前的gc实现比较简单,有极大改进空间)
  • 协议(目前设计不够紧凑)
  • error 错误需要梳理下(https://github.com/nutsdb/nutsdb/issues/87) 目前还有很多不合适的地方。已经更新了一些(@xpzouying

2 、易用性生态建设:

3、可观测性

  • 监控指标
    • 监控指标统计、暴露接口
    • 可以无缝接入第三方,比如prometheus等

4 、文档建设

  • 目前的文档在一个readme,后面需要拆开维护,方便对单个精细化编写,如编写set,能描述清楚功能、实例、时间复杂度、注意事项、最佳实践等。

5、社区建设

  • 包括写文章(入门教程、源码剖析、性能评测)推广
  • 对外宣传(布道)
  • 国内建设为主、国外为辅?
  • 如何让开发者愿意参与进来?低门槛的那种

6、需求收集

  • issues里面搜集
  • 用户反馈
  • 其他地方收集
  • 其他方式

7、前沿探索

  • 对某些场景优化
  • 引入新的设计理念
  • 实验性项目

欢迎补充!欢迎开发者共建!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions