Golang Go语言中KV引擎NutsDB的前生今世 & 招募开发者共建NutsDB
昨天我写了一篇微信公众号文章,来自我的公众号『太白技术』,标题《那些年我做的开源项目之 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
- https://github.com/av-elier/nutsdb-cli 第三方开发的 NutsDB 的 cli ,作者 [@av-elier](/user/av-elier) ,俄罗斯人
- https://github.com/cloud-barista/cb-store cb-store 是一个通用的存储库,用于管理 Cloud-Barista 的 Meta 信息。您可以选择 NUTSDB 或 ETCD 作为 cb-store 的存储库。作者是韩国的团队
- https://github.com/jrapoport/chestnut chestnut 是一个 Go 实现的加密存储
- https://github.com/ranzhendong/irishman Irishman 是一个以 go 为开发语言的中间件,在 Kerrigan 项目中使用
- https://github.com/bitepeng/b0pass 百灵快传:基于 Go 语言的高性能 "手机电脑超大文件传输神器"、"局域网共享文件服务器"。斩获了 1k+ star
- https://github.com/rule110-io/surge Surge 是一个 p2p 文件共享应用程序,旨在利用区块链技术实现 100%匿名文件传输。Surge 是端到端加密、分散和开源的。
更多,大概还有 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 ,我拉你进群
Golang Go语言中KV引擎NutsDB的前生今世 & 招募开发者共建NutsDB
更多关于Golang Go语言中KV引擎NutsDB的前生今世 & 招募开发者共建NutsDB的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
目前包括我自己,已经有 3 个开发者,欢迎新的开发者加入!
更多关于Golang Go语言中KV引擎NutsDB的前生今世 & 招募开发者共建NutsDB的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
支持个
将来会和 redis 有啥不同?
共建的话,不应该搞成组织的形式么
发展成什么样 大家讨论,我的想法做成大容量的 redis
感谢支持
无意冒犯,看起来像是一个重复造 lsm tree 轮子的项目……是否需要先找到本项目的目标?方便初学者学习和上手?对特定场景做优化(压缩,新介质)?
最后,要推广生产的话,是否至少需要一些特性总结和 benchmark ?例如和 badger 相比的优劣势,而不是在推广文章里草草一句"写性能没有那么高"一笔带过吧……
建议走极致低时延内存数据库这个方向
支持
话说这个遇到 GC 怎么办
跟 levelDB 和 RocksDB 相比,除了 go 原生,有啥优势
想加群的小伙伴注意下,上面的二维码 已经超 200 了,只能加我 wx 。
或者这个链接的有个中转群 可以扫码: https://github.com/nutsdb/nutsdb/issues/116
谢谢你的评论。我非常欢迎各种中肯的建议意见。也欢迎你加群,大家有想法一起讨论。关于目标,我会好好想一下,也听听大家的建议。你说的优劣势其实项目文档里面都写了,只是有些你会觉得我主观。benchmark 看下第三方评测吧 https://github.com/smallnest/kvbench ,fsync 方式表现还有很大提高空间。nofsync 方式吞吐表现比 badger 总体要好一些(关于写的吞吐 badger 39945 ,nutsdb 113455 )。
重来没想过干倒他们,我相信每个项目都有存在的意义,当然后面为了好宣传,会找一些他们做的不好的地方来优化或者借鉴都是有可能的。还有 go 原生 难道这点还不够吸引人吗
谢谢你的建议
这个是个好问题。go 的 gc 一直在变好,如果对场景真的非常苛刻,当然还是得上无 gc 的
用 tendis 就好了
一些 proposal 草案: https://github.com/nutsdb/proposal 大家可以看下
关于Golang中KV引擎NutsDB的前生今世及招募开发者共建的议题,以下是我的回复:
NutsDB是一款由纯Go语言开发的、简单高效的KV引擎。它起源于开发者对数据库内核的深入理解和实践需求,旨在打造一个性能卓越、功能强大的内嵌型数据库解决方案。自2019年初次开源以来,NutsDB不断迭代升级,已支持基本的Get、Put、Delete操作,TTL,以及类似Redis的List、Set、Sorted Set等数据结构,同时实现了ACID事务处理。
NutsDB的核心优势在于其高性能、事务安全和多数据结构的支持。它采用分段式存储策略,优化了内存管理和读写效率。此外,NutsDB还提供了灵活的配置选项和丰富的文档教程,帮助开发者快速上手和高效开发。
目前,NutsDB已被广泛应用于嵌入式应用、存储Meta信息、加密存储、本地队列和本地缓存等场景。为了进一步完善NutsDB的功能和性能,我们诚挚邀请广大开发者加入我们的团队,共同为NutsDB的发展贡献力量。
无论你是数据库领域的专业人士,还是对开源项目充满热情的爱好者,都欢迎你的加入。让我们一起携手,共同推动NutsDB走向更加辉煌的未来!