Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
xujiajun opened this issue Mar 15, 2022 · 8 comments
Open

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

xujiajun opened this issue Mar 15, 2022 · 8 comments

Comments

@xujiajun
Copy link
Member

xujiajun commented Mar 15, 2022

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

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、前沿探索

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

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

@csh0101
Copy link

csh0101 commented Mar 15, 2022

comment:文档建设可以考虑使用[https://docsify.js.org 很多开源项目的文档都是使用这个搭建的

@LinkSyk
Copy link

LinkSyk commented Mar 16, 2022

感觉项目定位很重要,目前感觉还不是太清晰。

@tuyula
Copy link

tuyula commented Mar 16, 2022

nutsdb是解决什么问题么, 还是重复造轮子

@xujiajun
Copy link
Member Author

xujiajun commented Mar 16, 2022

nutsdb是解决什么问题么, 还是重复造轮子

nutsdb从开始开源到现在已经3年有余,最近有用户一直在向我反馈,我感觉自己也是精力、能力都有所不足,好久更新一版,导致很多人认为项目已经黄了。所以招募重启这个项目,想要好好发展下。欢迎多提提建议。

这个是被人使用的开的issue。nutsdb/nutsdb#27

至于是不是造轮子已经不重要了。只要有人用,我想这个项目有维护的意义,你说呢

@xujiajun
Copy link
Member Author

感觉项目定位很重要,目前感觉还不是太清晰。

你说没错,定位真的很重要

@allanpk716
Copy link

对于我来说,找到这个项目,其实就是想要一个单机能够嵌入到小玩具项目中的模块:

  • K/V
  • TTL
  • ACID
  • List
  • Set
  • 纯 go

目前测试来看,希望能够补全如何清理数据的文档。比如现在写入 15W K/V 数据,然后执行删除 bucket 操作,再次插入 10W 数据,发现硬盘会继续变大,而没有很好的文档支持告诉我数据的完整生命周期应该做什么···

@xujiajun
Copy link
Member Author

xujiajun commented Apr 9, 2022

@allanpk716 了解 我大概知道是什么问题,这个问题是merge没有支持 bucket删除的情况导致的,你可以通过设置TTL过渡下,后面解决,你可以先加下群 。

@allanpk716
Copy link

@allanpk716 了解 我大概知道是什么问题,这个问题是merge没有支持 bucket删除的情况导致的,你可以通过设置TTL过渡下,后面解决,你可以先加下群 。

好的,谢谢。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants