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 以及做了许多特性增强,欢迎点击原文阅读更多变更内容。
@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




