V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
xujiajun001
V2EX  ›  Go 编程语言

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

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

    昨天我写了一篇微信公众号文章,来自我的公众号『太白技术』,标题《那些年我做的开源项目之 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   ·   实用小工具   ·   3130 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 13:19 · PVG 21:19 · LAX 05:19 · JFK 08:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.