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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions