暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Apache Kvrocks 2.9.0 发布

Apache Kvrocks 2024-07-16
491

Apache Kvrocks 2.9.0 版本已经发布, 感谢 Release Manager @twice[1] 主导本次的发版流程。该版本包含来自 25 位贡献者的 142 次提交,感谢每一位社区贡献者在背后默默的努力。

该版本也带来了许多令人兴奋的新特性:

  • 引入 compaction-checker-cron
    允许通过 CRON 表达式配置增量 Compaciton 检查规则。在未来版本也将废弃 compaction-checker-range
    配置
  • 默认开启 RocksDB Async IO
    , 在 OS 支持 io_uring 环境下可以提高 Scan 相关命令的性能,比如 HGETALL LRANGE / SCAN 等
  • 默认开启 ENABLE_NEW_ENCODING
    ,Metadata 的时间精度以及 Size 变更为 64 bits
  • 新命令支持: DUMP, SORT, LCS, COPY, ASKING, READONLY, READWRITE 等

另外,当前版本 RocksDB 仍然使用 8.11 版本,在下个版本计划升级为 9.x 版本。

数据编码变更

Kvrocks 在设计之初使用 32 bits 来存储过期时间以及数据长度,导致过期时间精度只能到秒级别,同时也限制数据最大长度。为了解决该问题,在 2.4.0 版本之后允许通过编译阶段开启 ENABLE_NEW_ENCODING
来使用 64 bits 的编码格式。当前该特性已经发布一年多,社区决定在当前版本(2.9.0)默认开启使用 64 bits 编码格式。

新版本可以平滑兼容之前编码格式,但需要注意的是 2.3.0 以及之前的版本无法识别新的编码格式,需要先升级到 2.4.0 以及之后的版本。所以,建议 2.3.0 版本的用户建议先升级到 2.4.0 之后的版本再升级到 2.9.0

具体设计以及实现见:

  • Proposal: New encoding with compatibility to old data[2]
  • Implement the new encoding with 64bit size and expire time in milliseconds[3]

当前数据结构设计参考: Data structures design[4]

RocksDB 默认开启 Async IO

Kvrocks 在 2.3.0 版本支持通过在配置 rocksdb.read_options.async_io
开启 RocksDB 的 Async IO 功能。在 OS 支持 io_uring 场景下可以用来提高使用到 SCAN 相关命令的性能,其中包含 HGETALL / LRANGE / ZRANGE / SCAN 等。

目前,该特性在 RocksDB 社区也已经纳入稳定特性的范围,所以在 2.9.0 也开始默认开启该特性。

以下是来自社区 Committer @xiaobiaozhao[5] 的测试数据:

更多测试数据可参考: Allow to enable the async_io option to improve the performance[6]

最后

社区贡献者 @Beihao-Zhou[7] 支持的 HNSW 编码部分也已经合并,期待未来版本可以完整支持 HNSW 相关命令和特性,具体设计和实现见:

  • Proposal: Vector Search HNSW Indexing Encoding[8]
  • Add HNSW encoding index & insertion/deletion algorithm[9]

除了以上更新之外,该版本也修复了一些 bug 以及做了许多特性增强,欢迎点击原文阅读更多变更内容。

参考资料
[1]

@twice: https://github.com/PragmaTwice

[2]

Proposal: New encoding with compatibility to old data: https://github.com/apache/kvrocks/issues/1033

[3]

Implement the new encoding with 64bit size and expire time in milliseconds: https://github.com/apache/kvrocks/pull/1342

[4]

Data structures design: https://kvrocks.apache.org/community/data-structure-on-rocksdb/

[5]

@xiaobiaozhao: https://github.com/xiaobiaozhao

[6]

Allow to enable the async_io option to improve the performance: https://github.com/apache/kvrocks/pull/1215

[7]

@Beihao-Zhou: https://github.com/Beihao-Zhou

[8]

Proposal: Vector Search HNSW Indexing Encoding: https://github.com/apache/kvrocks/pull/2316

[9]

Add HNSW encoding index & insertion/deletion algorithm: https://github.com/apache/kvrocks/pull/2368


最后修改时间:2024-07-17 10:24:49
文章转载自Apache Kvrocks,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论