本文将介绍分布式数据库--KaiwuDB 的存储架构,以及 KaiwuDB 技术团队在其 KV 存储引擎基础上所做的优化实践。
KaiwuDB 整体存储架构
KaiwuDB 采用分层架构,分为计算层与存储层,其总体架构如下图所示:

在 OLTP 场景下,当开发人员向集群发送 SQL 语句时,数据最终会以键值对 KV 的形式对存储层进行读写。每个 KaiwuDB 节点启动时,至少会包含一个存储节点。存储层默认采用 KV 存储引擎 RocksDB 负责存储数据。每个存储实例都可能包含多个 Range,Range 是最底层的 KV 数据单元。Range 使用 Raft 一致性协议在集群间进行复制。
为了支持 HTAP 场景, KaiwuDB 的行存数据会通过 Raft Learner 同步到列存引擎,存储层还扩展了矢量接口,通过列式存储、计算下推、多节点并行计算满足业务应用的 AP 需求。另外存储层还扩展了时序接口,可以进行时序数据管理。
接下来将着重介绍 KaiwuDB 存储层架构中的 KV 存储集群。
RocksDB 引擎
KaiwuDB 的存储层默认采用 RocksDB 来存储数据。RocksDB 是由 Facebook 开源的高性能 KV 存储引擎,读写数据可以是任意字节流,其官方架构如图所示,是一种 LSM-Tree 的实现:

RocksDB 写入流程如下:
1、以 batch

本文详细介绍了KaiwuDB的存储架构,包括其采用的分层设计,OLTP与HTAP场景下的KV存储与列存扩展,以及针对RocksDB的优化,如SPDK+ZNSSSD的硬件加速和准内存引擎。重点讲解了如何通过软硬件结合和内存优化提升存储性能。
最低0.47元/天 解锁文章
888

被折叠的 条评论
为什么被折叠?



