服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

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

日期: 来源:OSC开源社区收集编辑:

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 称之为 TagPrometheus 称之为 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 在不同工作负载下的表现

分布式

  • 自动负载均衡
  • 提高可用性、可靠性

相关链接:https://mp.weixin.qq.com/s/aD9pZiov2EnCX0Gr6WxkmQ


往期推荐



有奖问答 | 迁移上云或跨云迁移如何做到安全、高效、低成本?

海量新功能,Godot 4.0正式发布!

Ambient:Rust编写的高性能多人游戏引擎



这里有最新开源资讯、软件更新、技术干货等内容

点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦

相关阅读

  • ​【2023年3月】3月装机走向与推荐(1000~7000元)

  • 【提示】1、很多配件可以根据自己的喜好进行调换,在确保合适的前提下可以把性价比更高的产品组合在一起;2、不少配件为了追求实惠,选择的是素颜公版、丐版,喜欢华丽外表的话,可以
  • 开箱笔记本的汇总

  • 警示,某些平台,大量在数码区的评论区,伪装成用户请教配置的。极大概率是某垃圾品牌内存的广告、陷阱,我已经批量拉黑、删除了。内存、硬盘的品质极为重要,同志们小心。留言区,不要
  • 电极黏结剂材料可是门学问,搞懂可不件简单的事

  • 导读:电极黏结剂是锂离子电池中重要的辅助功能材料之一,虽然本身没有容量,在电池中所占的比重也很小,但却是整个电极的力学性能的主要来源,对电极的生产工艺和电池的电化学性能有
  • 三元镍钴锰锂电池粘结剂性能研究

  • 高镍材料在生产应用中存在一些问题:随着镍含量的增加,因其充放电过程中发生多次相变而导致容量衰减;其表面LiOH、Li2CO3总量增高,会出现匀浆过程中浆料易凝胶、电池高温存储易产

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • OpenAI正式推出ChatGPT和Whisper的开发者API

  • 出品 | OSC开源社区(ID:oschina2013)OpenAI 为自家两个 AI 模型:自然语言对话模型 ChatGPT 和语音转文本模型 Whisper 推出了开发者 API,这些 API 允许开发人员将 AI 模型集成到
  • 接口优化的常见方案实战总结

  • 来源 | OSCHINA 社区作者 | 京东云开发者原文链接:https://my.oschina.net/u/4090830/blog/8388733一、背景针对老项目,去年做了许多降本增效的事情,其中发现最多的就是接口耗
  • 中国开源社区健康案例——openEuler社区

  • 开源社区健康指的是围绕一个开源项目形成的社区中关于项目的技术迭代、社区的组织架构、成员构成、开源治理、上下游协作、社区生态、商业化等多方面的多样性与管理、运作能