zl程序教程

您现在的位置是:首页 >  Java

当前栏目

开源kv引擎nutsdb v0.10.0发布以及背后故事

2023-02-18 16:47:03 时间

你好,我是太白。

这篇文章主要是来说明下NutsDB v0.10.0发布的情况以及背后的故事。

  • NutsDB的项目地址
  • 本次v0.10.0发布的主要改动
    • 1、bug的修复
    • 2、新功能
    • 3、重构
    • 4、单测
    • 5、文档
  • 整个v0.10.0的迭代的始末
  • 新的proposol
    • nutsdb v0.11.0提议
    • nutsweb v0.1.0提议
  • 招募开发者
  • 加群

NutsDB的项目地址

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

目前主要使用场景:

  • 嵌入式应用,用于存储定时间段的数据(已有人用在生产)
  • 存储Meta信息(例子:https://github.com/cloud-barista/cb-store)
  • 加密存储(例子:https://github.com/jrapoport/chestnut)
  • 本地队列(已有人用在生产)
  • 本地缓存

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

2、新功能

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

3、重构

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

4、单测

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

5、文档

  • A few corrections in ReadME file (#171) @kwakubiney

整个v0.10.0的迭代的始末

  • 1、首先会发起一个proposal,即一些提议
  • 2、然后发起报名
  • 3、报名之后领取相应的任务来做

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

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

新的 proposal

这次提议2个部分:

nutsdb v0.11.0提议

v0.11.0马上也要开始了,proposal的issue已经建立(https://github.com/nutsdb/proposal/issues/4),有兴趣的可以直接在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这个项目(https://github.com/nutsdb/nutsweb)主要是对nutsdb提供可视化的能力和nutshttp(https://github.com/nutsdb/nutshttp,提供nutsdb http访问的能力)配合使用。目前有一个PR(#1)初始化项目(init project with Vite + React + TypeScript)) @jukanntenn贡献的。希望能招募到人,开发v0.1.0。