Golang Go语言开源kv引擎nutsdb v0.10.0发布

大家好,这篇文章主要是来说明下 NutsDB v0.10.0 发布的情况。Nutsdb 是一个纯 Go 语言开发 KV 引擎,支持类似 redis 的数据结构如 list 、set 、zset 。

原文地址

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

项目地址

https://github.com/nutsdb/nutsdb 欢迎 star 关注我们。目前项目已经累计了 2300+star 。

目前主要使用场景:

github 上统计的依赖 nutsdb 的开源项目:

https://github.com/nutsdb/nutsdb/network/dependents?package_id=UGFja2FnZS0yMjY0ODU0MDM5

本次 v0.10.0 发布的主要改动

非常感谢参与贡献的小伙伴,我把相关 PR (#PR 编号)贡献的小伙伴的 github 名放在后面了(类似 @xxx )。

本次改动主要分以下几类(详见: https://github.com/nutsdb/nutsdb/issues/193 ):

1 、bug 的修复

list 数据结构 count 为负号的边界处理(#183 )[@andrewhzy](/user/andrewhzy)

2 、新功能

  • 支持 LRemByIndex API (#174) [@NailCui](/user/NailCui)
  • 增加 LKeys SKeys ZKeys API 。这个特性支持对 key 做正则匹配,可以非常方便的扫描出你需要的 key ,*支持全量的扫描,非常实用。(#175 ) [@NailCui](/user/NailCui)
  • 增加 Iterator API (HintKeyAndRAMIdxMode 和 HintKeyValAndRAMIdxMode 这两个模式下支持),之前的 range 支持是对扫描结果返回,这次外国小哥带来了迭代器的方式。(#191 )[@zeina1i](/user/zeina1i)

3 、重构

  • graceful options parameters 。使用选项模式(#185 )[@Nailcui](/user/Nailcui)

4 、单测

  • Add rwmanager fileio test (#170 ) [@zeina1i](/user/zeina1i)
  • Improve code coverage about list (#183) [@andrewhzy](/user/andrewhzy)
  • Test coverage improvement for inmemory (#187) [@andrewhzy](/user/andrewhzy)

5 、文档

  • A few corrections in ReadME file (#171) [@kwakubiney](/user/kwakubiney)

整个 v0.10.0 的迭代的始末

  • 1 、首先会发起一个 proposal ,即一些提议

  • 2 、然后发起报名

  • 3 、报名之后领取相应的任务来做

报名的人员,我们会在每周发起一次讨论,主要是同步下进度和遇到的问题等。

整个过程是透明和可追溯的,所以自己的贡献,别人都看得到的,不要吝啬你的贡献哈。

新的 proposal 提议来了

这次提议 2 个部分:

proposal 的 issue 已经建立: https://github.com/nutsdb/proposal/issues/4

快来报名吧!!!

nutsdb v0.11.0 提议

v0.11.0 马上也要开始了,有兴趣的可以直接在 issue 中回复报名,或者加群联系我报名参与。后面会根据实际情况做调整。

难度:单测类 < 功能类 < 性能类(可以按照自己的情况来选择)

1 、单测类

提高单测覆盖率,接着 v0.10.0 版本的

说明下关于第一点的覆盖率,可以多人同时报名参与,因为需要拆分下。

2 、功能类

目前 open 的 issue 挑选一些,方便落地的&也准备了一些有难度的可选,https://github.com/nutsdb/nutsdb/issues

内存模式相比非内存模式,有一些功能缺失比如:内存模式下没有 PrefixScan nutsdb#188 增加支持 IterateBuckets 正则匹配(可视化项目需要) Add support for IterateBuckets regularized matching nutsdb#194 HintBPTSparseIdxMode 支持正向迭代(较难,可选) HintKeyValAndRAMIdxMode 、HintKeyAndRAMIdxMode 支持反向迭代(较难,可选)

3 、性能类

关于有人提出提高 db 的启动时间(可选)

nutsweb v0.1.0 提议

nutsweb 项目争取 0.1.0 版本能实现基础的查询功能。

nutsweb这个项目主要是对 nutsdb 提供可视化的能力和nutshttp(提供 nutsdb http 访问的能力)配合使用。

目前有一个 PR (#1 )初始化项目( init project with Vite + React + TypeScript )) @jukanntenn 贡献的。希望能招募到人,开发 v0.1.0 。

招募开发者

目前 NutsDB 开发者群有 30 人了(这里面都是意向开发者或者能提供宝贵意见的人)。

贡献方向:

  • 1 、数据库引擎方向
  • 2 、工具生态如 cli 、可视化工具等
  • 3 、单测覆盖率、文档建设等 NutsDB 发展还很早期,等你的加入,希望你有热情,有意愿,有学习力,有开源精神,愿意贡献项目。

加群

这个群主要交流 Go 语言&nutsdb&其他技术相关的。如果二维码过期,请访问这个链接

nutsdb-group

Golang Go语言开源kv引擎nutsdb v0.10.0发布

更多关于Golang Go语言开源kv引擎nutsdb v0.10.0发布的实战教程也可以访问 https://www.itying.com/category-94-b0.html

5 回复

已 star ,有没 pub/sub 的计划

更多关于Golang Go语言开源kv引擎nutsdb v0.10.0发布的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


后面在项目用一下

后面在项目用一下看看

老问题:和其他的区别?感觉现在 KV 数据库也卷起来了,一大堆

NutsDB v0.10.0版本的发布是Go语言社区中的一件值得庆祝的盛事。作为IT营中专注于Go语言的专家,我对这一消息感到非常高兴,并愿意分享一些关于NutsDB的看法。

NutsDB是一个纯Go编写的开源键值存储引擎,以其高效、易用和轻量级的特点而受到开发者的喜爱。v0.10.0版本的发布带来了多项改进和新功能,包括但不限于bug的修复、新功能的增加、代码重构、单测覆盖率的提升以及文档的完善。

具体来说,新版本中加入了LRemByIndex API以及LKeys、SKeys、ZKeys API,这些API支持对key做正则匹配,方便扫描出所需key,还支持全量扫描,非常实用。此外,还增加了Iterator API,支持HintKeyAndRAMIdxMode和HintKeyValAndRAMIdxMode两种模式,为开发者提供了更加灵活的迭代方式。

NutsDB适用于广泛的场景,如嵌入式应用、存储Meta信息、加密存储、本地队列和本地缓存等。它的高度优化内部架构和分段式存储策略,使得其在内存管理和读写效率上都表现出色。同时,它还支持完整的事务处理,确保了操作的原子性和数据的一致性。

总之,NutsDB v0.10.0版本的发布是Go语言键值存储引擎领域的一个重要里程碑。我相信,在未来的发展中,NutsDB将继续为开发者提供更加高效、易用和可靠的键值存储解决方案。

回到顶部