1、第三届中国第三届中国Rust开发者大会开发者大会CnosDBCnosDB时序数据库的时序数据库的RustRust实践实践Yongtao Liu CnosDB 研发工程师Rust China Conf 2023 CnosDB 是一款基于 Rust 开发的开源的分布式时序数据库1.1.CnosDBCnosDB 架构与选型架构与选型2.2.为何从为何从 GoGo 切换到切换到 RustRust3.3.使用使用 RustRust 经验分享经验分享4.4.反哺社区反哺社区 1.CnosDB 1.CnosDB 架构与选型架构与选型特性特性 横/纵 向扩展 计算存储分离 平衡存储性能与成本 查询引擎支持矢量
2、化查询 兼容多种时序协议 可观测性 支持云原生 原生支持多租户 租户Quota可动态配置 云边端协同 云上生态融合整体架构整体架构1.2 1.2 存储引擎存储引擎version_setVnodeIndexEngineDataEnginecacheimcache VnodeVnodesummary process taskForward IndexInverted Indextsfile delta tombWALmetrics.Write Request1.3 1.3 基于基于 DataDataFuFusionsion 的高性能查询引擎的高性能查询引擎 9SQLResultDataFusion
3、 ParserDataFusion SqlToRelDataFusion Logical OptimizerDataFusion Physical PlannerDataFusion Logical OptimizerDataFusion SchedulerDataFusion ExecutionInjectable parser rulesInjectable transform rules&Customizable logical nodeInjectable logical opt rulesInjectable transform rules&Customizable physical
4、 rulesInjectable physical opt rulesParseRBOCBOScheduleExecuteQuery State Machine Pluggable Query DispatcherPluggable Query ExecutionPluggable Cascade OptimizerPluggable SchedulerLogical transformPhysical transform1.41.4基于基于DataDataFuFusionsion的高性能查询引擎的高性能查询引擎 扩展数据源 扩展 SQL 语句 扩展流处理引擎 扩展优化规则 扩展时序函数 1.
5、5 1.5 分布式分布式1.Shared nothing2.Leaderless NRW Peer to peer model3.Leader repica group(Coming soon)1.5 1.5 分布式分布式MetaMetaDN1MetaMeta ClusterDN2DN3DN4vnodevnodevnodevnodevnodevnodevnodevnodevnode.Time LineTime LineMeta集群:schema,tenant信息,分片信息数据节点:存储 vnode数据Raftwritepointreplica set.bucketbucketreplica s
6、et 2.2.为何从为何从 Go Go 切换到切换到 Rust Rust高性能:无高性能:无 GCGC 实时控制实时控制安全:内存安全安全:内存安全 线程安全线程安全表达能力强:支持范型,表达能力强:支持范型,matchmatch 表达式表达式 3.3.Rust Rust 使用经验分享使用经验分享3.1 3.1 内存内存布局布局offsetIntegerFloatComplex0Discriminator(0)Discriminator(1)Discriminator(2)8i64f64f6416f64Rust 中