CeresDB 1.0正式发布,Rust高性能云原生时序数据库

ceresdb 是一款高性能、分布式的云原生时序数据库,采用 rust 编写。其开发团队近日宣布:经过近一年的开源研发工作,时序数据库 ceresdb 1.0 正式发布,达到生产可用标准。 ceresdb 1.0 官方中文文档:https://docs.ceresdb.io/cn/ ceresdb 1.0 核心特性介绍 存储引擎 支持列式混合存储 高效 xor 过滤器 云原生分布式 实现了计算存储分离(支持 oss 作为数据存储,wal 实现支持 obkv、kafka) 支持 hash 分区表 部署与运维 支持单机部署 支持分布式集群部署 支持 prometheus + grafana 搭建自监控 读写协议 支持 sql 查询与写入 实现了 ceresdb 内置高性能读写协议,提供多语言 sdk 支持 prometheus,可以作为 prometheus 的 remote storage 进行使用 多语言读写 sdk 实现了四种语言的客户端 sdk:java、python、go、rust ceresdb 架构介绍 ceresdb 是一个时序数据库,与经典时序数据库相比,ceresdb 的目标是能够同时处理时序型和分析型两种模式的数据,并提供高效的读写。在经典的时序数据库中,tag 列(influxdb 称之为 tag,prometheus 称之为 label)通常会对其生成倒排索引,但在实际使用中,tag 的基数在不同的场景中是不一样的 ———— 在某些场景下,tag 的基数非常高(这种场景下的数据,我们称之为分析型数据),而基于倒排索引的读写要为此付出很高的代价。而另一方面,分析型数据库常用的扫描 + 剪枝方法,可以比较高效地处理这样的分析型数据。因此 ceresdb 的基本设计理念是采用混合存储格式和相应的查询方法,从而达到能够同时高效处理时序型数据和分析型数据。下图展示了 ceresdb 单机版本的架构┌──────────────────────────────────────────┐│ rpc layer (http/grpc/mysql) │└──────────────────────────────────────────┘┌──────────────────────────────────────────┐│ sql layer ││ ┌─────────────────┐ ┌─────────────────┐ ││ │ parser │ │ planner │ ││ └─────────────────┘ └─────────────────┘ │└──────────────────────────────────────────┘┌───────────────────┐ ┌───────────────────┐│ interpreter │ │ catalog │└───────────────────┘ └───────────────────┘┌──────────────────────────────────────────┐│ query engine ││ ┌─────────────────┐ ┌─────────────────┐ ││ │ optimizer │ │ executor │ ││ └─────────────────┘ └─────────────────┘ │└──────────────────────────────────────────┘┌──────────────────────────────────────────┐│ pluggable table engine ││ ┌────────────────────────────────────┐ ││ │ analytic │ ││ │┌────────────────┐┌────────────────┐│ ││ ││ wal ││ memtable ││ ││ │└────────────────┘└────────────────┘│ ││ │┌────────────────┐┌────────────────┐│ ││ ││ flush ││ compaction ││ ││ │└────────────────┘└────────────────┘│ ││ │┌────────────────┐┌────────────────┐│ ││ ││ manifest ││ object store ││ ││ │└────────────────┘└────────────────┘│ ││ └────────────────────────────────────┘ ││ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ││ another table engine │ ││ └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │└──────────────────────────────────────────┘ 性能优化与实验结果 ceresdb 组合使用了列式混合存储、数据分区、剪枝、高效扫描等技术,解决海量时间线(high cardinality)下写入查询性能变差的问题。
写入优化
ceresdb 采用类 lsm(log-structured merge-tree)写入模型,无需在写入时处理复杂的倒排索引,因此写入性能上较好。
查询优化
主要采用以下技术手段提高查询性能:
剪枝:
min/max 剪枝:构建代价比较低,在特定场景,性能较好 xor 过滤器:提高对 parquet 文件中的 row group 的筛选精度 高效扫描:
多个 sst 间并发:同时扫描多个 sst 文件 单个 sst 内部并发:支持 parquet 层并行拉取多个 row group 合并小 io:针对 oss 上的文件,合并小 io 请求,提高拉取效率 本地 cache:缓存 oss 拉取文件,支持内存和磁盘缓存 性能测试结果
采用 tsbs 进行性能测试。压测参数如下:
10 个 tag 10 个 field 时间线(tags 组合数)100w 量级 压测机器配置:24c90g
influxdb 版本:1.8.5
ceresdb 版本:1.0.0
写入性能对比
influxdb 写入性能随着时间下降较多。ceresdb 在写入稳定后,写入速率趋于平稳,并且总体写入性能表现为 influxdb 的 1.5 倍以上(一段时间后可达 2 倍以上差距)
下图中,单行 row 包含 10 个 field。
上图为 influxdb,下图为 ceresdb
查询性能对比
低筛选度条件(条件:os=ubuntu15.10),ceresdb 比 influxdb 快 26 倍,具体数据如下:
ceresdb 查询耗时:15s influxdb 查询耗时:6m43s 高筛选度条件(命中的数据较少,条件:hostname=[8 个],此时理论上传统倒排索引会更有效),这是 influxdb 更有优势的场景,此时在预热完成条件下,ceresdb 比 influxdb 慢 5 倍。
ceresdb:85ms influxdb:15ms 2023 年 roadmap 开发团队表示,2023 年,在 ceresdb 1.0 发布之后,他们大部分工作将聚焦在性能、分布式与周边生态方面的工作。尤其周边生态的对接支持工作,希望能让各种不同的用户更加简单的用上 ceresdb:
周边生态
生态兼容,包括 promql、influxdbql、opentsdb 等常用时序数据库协议兼容 运维工具支持,包括 k8s 支持、ceresdb 运维系统、自监控等 开发者工具,包括数据导入导出等 性能
探索新的存储格式 增强不同类型索引,强化 ceresdb 在不同工作负载下的表现 分布式
自动负载均衡 提高可用性、可靠性  


魅族Pro7来袭,你猜猜用什么处理器
5G消息 安卓将标配 苹果可用小程序
工业锅炉设备远程监控运维
七腾机器人亮相新疆石化展,助力西部石油化工产业智能化发展
无线电频率新标准对全球天气预报有什么影响
CeresDB 1.0正式发布,Rust高性能云原生时序数据库
中国芯崛起!联瑞在国产网卡赛道跑出加速度
智能电网巡检机器人优势出众,前景可期
TouchGFX界面开发:TouchGFX软件安装
浅谈虚拟现实与增强现实的含义
新的水中石油类测定方法的制定或出台必将给这一市场带来全新的机遇
aigo国民好物移动固态硬盘S7 Pro 外出拍摄好助手
开发出用于液晶背光的4通道、6通道LED驱动器
机器人换人浪潮已来,这七大职业永远不会被机器人取代
关于BMW公司新型高效动力学发动机系列性能分析
Nexperia先进电热模型可覆盖整个MOSFET工作温度范围
探究英特尔代工生产ARM芯片背后的真相
中国第一座12英寸车规级功率半导体自动化晶圆制造中心项目正式签约落户
5G+AIoT赋能下,智能家居已经进入到了4.0时代
百度发布上半年年报数据 实现营收296.47亿元