Go 语言写的 KV 引擎 NutsDB 的前生今世 & 招募开发者共建 NutsDB - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
xujiajun001
V2EX    Go 编程语言

Go 语言写的 KV 引擎 utsDB 的前生今世 & 招募开发者共建 NutsDB

  •  
  •   xujiajun001
    xujiajun 2022-03-13 11:46:07 +08:00 3671 次点击
    这是一个创建于 1310 天前的主题,其中的信息可能已经有所发展或是发生改变。

    昨天我写了一篇微信公众号文章,来自我的公众号『太白技术』,标题《那些年我做的开源项目之 KV 引擎( NutsDB )》

    原文地址:

    https://mp.weixin.qq.com/s/jrx9AHt49WP913CxiY7ewQ

    NutsDB 是什么

    NutsDB 是笔者在 2019 年 1 月份开源的,截止今天已经开源三年有余。它是一款简单的、高性能的纯 Go 语言开发的内嵌型 KV 引擎,支持基本的 Get 、Put 、Delete 操作、TTL ,还支持类似 Redis 的 List 、Set 、Sorted Set ,还支持 ACID 的事务。截止本文发布,最新版本是 v0.7.1 。

    Star 增长趋势

    目前 NutsDB 已经接近 2k 的 star

    里程碑事件

    具体见: https://github.com/xujiajun/nutsdb/blob/master/CHANGELOG.md

    • v0.1.0 ( 2019-2-28 )支持 Put 、Get 、Delete 、TTL 、Range Scanning 等
    • v0.2.0 ( 2019-3-05 )支持 List 、Set 、Sorted Set 等
    • v0.3.0 ( 2019-3-11 )支持 sync 等
    • v0.4.0 ( 2019-3-15 )支持 mmap 方式等
    • v0.5.0 ( 2019-11-28 )修复一些 bug & 支持 GetAll()等
    • v0.6.0 ( 2021-03-21 )支持 put 带时间戳&支持正则的 PrefixSearchScan 等
    • v0.7.0 ( 2022-03-06) 支持内存模式运行、支持 IterateBuckets 遍历 bucket 等

    被用在生产环境

    https://github.com/xujiajun/nutsdb/issues/27

    被开源项目使用(部分)

    内容摘自: https://github.com/xujiajun/nutsdb/issues/27

    更多,大概还有 100+项目使用: 详见链接: https://github.com/xujiajun/nutsdb/network/dependents?package_id=UGFja2FnZS0yMjY0ODU0MDM5

    招募开发者共建

    我知道 v 站上卧虎藏龙,希望有兴趣的 v 友,来参与进 NutsDB 的贡献。

    我专门开了一个 issue: https://github.com/xujiajun/nutsdb/issues/116

    我发现我做 nutsdb 精力和能力都不够,我希望能吸引更多开发者,特别是这方面专业的,nutsdb 发展还很早期,等你的加入,现在加入门槛非常低,只要你会 go ,甚至不会也没事,学一下就好,最主要你有热情,有意愿,有学习力,这个项目非常有潜力,让我们一起打造一个知名项目!有想法联系我报名!

    主要方向:

    • 1 、数据库引擎方向
    • 2 、工具生态如 cli 、可视化工具等
    • 3 、文档建设等

    我们一起讨论确定做的事情,然后按照节奏推进,可以慢一点没事。

    加群

    欢迎加群,如果已经过期,加我个人微信( xujiajun1234567 ),备注:nutsdb ,我拉你进群

    19 条回复    2022-03-15 23:50:00 +08:00
    xujiajun001
        1
    xujiajun001  
    OP
       2022-03-13 14:22:48 +08:00
    目前包括我自己,已经有 3 个开发者,欢迎新的开发者加入!
    dongcidaci
        2
    dongcidaci  
       2022-03-13 15:02:37 +08:00 via Android
    支持个
    thursday
        3
    thursday  
       2022-03-13 16:38:33 +08:00
    将来会和 redis 有啥不同?
    junnplus
        4
    junnplus  
       2022-03-13 18:11:21 +08:00
    共建的话,不应该搞成组织的形式么
    xujiajun001
        5
    xujiajun001  
    OP
       2022-03-13 23:18:48 +08:00   1
    xujiajun001
        6
    xujiajun001  
    OP
       2022-03-13 23:20:03 +08:00
    @thursday 发展成什么样 大家讨论,我的想法做成大容量的 redis
    xujiajun001
        7
    xujiajun001  
    OP
       2022-03-13 23:20:17 +08:00
    @dongcidaci 感谢支持
    jo3yzhu
        8
    jo3yzhu  
       2022-03-14 00:20:44 +08:00 via iPhone   3
    无意冒犯,看起来像是一个重复造 lsm tree 轮子的项目……是否需要先找到本项目的目标?方便初学者学习和上手?对特定场景做优化(压缩,新介质)?
    最后,要推广生产的话,是否至少需要一些特性总结和 benchmark ?例如和 badger 相比的优劣势,而不是在推广文章里草草一句"写性能没有那么高"一笔带过吧……
    ddxx200
        9
    ddxx200  
       2022-03-14 00:58:45 +08:00
    建议走极致低时延内存数据库这个方向
    Vaspike
        10
    Vaspike  
       2022-03-14 08:59:38 +08:00
    支持
    binbinyouliiii
        11
    binbinyouliiii  
       2022-03-14 09:58:18 +08:00
    话说这个遇到 GC 怎么办
    littlewing
        12
    littlewing  
       2022-03-14 10:52:50 +08:00
    跟 levelDB 和 RocksDB 相比,除了 go 原生,有啥优势
    xujiajun001
        13
    xujiajun001  
    OP
       2022-03-14 16:03:58 +08:00
    想加群的小伙伴注意下,上面的二维码 已经超 200 了,只能加我 wx 。

    或者这个链接的有个中转群 可以扫码: https://github.com/nutsdb/nutsdb/issues/116
    xujiajun001
        14
    xujiajun001  
    OP
       2022-03-14 20:50:12 +08:00
    @jo3yzhu 谢谢你的评论。我非常欢迎各种中肯的建议意见。也欢迎你加群,大家有想法一起讨论。关于目标,我会好好想一下,也听听大家的建议。你说的优劣势其实项目文档里面都写了,只是有些你会觉得我主观。benchmark 看下第三方评测吧 https://github.com/smallnest/kvbench ,fsync 方式表现还有很大提高空间。nofsync 方式吞吐表现比 badger 总体要好一些(关于写的吞吐 badger 39945 ,nutsdb 113455 )。
    xujiajun001
        15
    xujiajun001  
    OP
       2022-03-14 20:53:28 +08:00
    @littlewing 重来没想过干倒他们,我相信每个项目都有存在的意义,当然后面为了好宣传,会找一些他们做的不好的地方来优化或者借鉴都是有可能的。还有 go 原生 难道这点还不够吸引人吗
    xujiajun001
        16
    xujiajun001  
    OP
       2022-03-14 20:53:43 +08:00
    @ddxx200 谢谢你的建议
    xujiajun001
        17
    xujiajun001  
    OP
       2022-03-14 20:54:38 +08:00
    @binbinyouliiii 这个是个好问题。go 的 gc 一直在变好,如果对场景真的非常苛刻,当然还是得上无 gc 的
    lbp0200
        18
    lbp0200  
       2022-03-15 14:20:41 +08:00
    用 tendis 就好了
    xujiajun001
        19
    xujiajun001  
    OP
       2022-03-15 23:50:00 +08:00
    一些 proposal 草案: https://github.com/nutsdb/proposal 大家可以看下
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5676 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 06:36 PVG 14:36 LAX 23:36 JFK 02:36
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86