CeresDB 诞生于蚂蚁集团内部,是一个分布式、高可用、高可靠的时间序列数据库 Time Series Database。经过多年双11打磨,作为蚂蚁全站监控数据存储的时间序列数据库,承载了每天数万亿数据点的写入,并提供多维度查询。
现在 CeresDB 正式开源了,通过开源,希望帮助用户解决时间序列数据存储的水平扩展与高可用的痛点,乃至针对时序数据的复杂分析计算能力的需求。此次正式开源也伴随着开源版本 0.2.0 的发布。
时序数据是基于时间的一系列数据点的集合,在有时间的坐标中将这些数据点连成线,从时间维度往前看可以做成多维度报表,揭示其趋势性、规律性、异常性;往未来看可以做大数据分析、机器学习、实现预测和预警。
我们经常会在 IoT 以及一些异常检测的分析场景中听到时序数据这个名词,如下图:
可以看出时序数据其实就是按照时间维度记录的数据列,并且前后数据具备可对比行,从而通过观察数据列随着时间的变化,提取出所需要的有用信息。
下面的文本也就是上图的原始数据点:
host=192.168.0.1,cluster=A | timestamp=2022-06-26 15:00 ==> 4
host=192.168.0.1,cluster=A | timestamp=2022-06-26 15:01 ==> 4.8
host=192.168.0.1,cluster=A | timestamp=2022-06-26 15:02 ==> 3.9
host=192.168.0.1,cluster=A | timestamp=2022-06-26 15:03 ==> 4.7
host=192.168.0.1,cluster=A | timestamp=2022-06-26 15:04 ==> 3.9
host=192.168.0.1,cluster=A | timestamp=2022-06-26 15:05 ==> 3.5
host=192.168.0.2,cluster=B | timestamp=2022-06-26 15:00 ==> 2.2
host=192.168.0.2,cluster=B | timestamp=2022-06-26 15:01 ==> 1.3
host=192.168.0.2,cluster=B | timestamp=2022-06-26 15:02 ==> 2.9
host=192.168.0.2,cluster=B | timestamp=2022-06-26 15:03 ==> 2.6
host=192.168.0.2,cluster=B | timestamp=2022-06-26 15:04 ==> 1.4
host=192.168.0.2,cluster=B | timestamp=2022-06-26 15:05 ==> 1.8
写入持续、平稳、高吞吐:一般以固定频率写入数据
写多读少:通常只关心几个特定关键指标或特定场景下的指标
实时写入最新的数据:随着时间推进,新写入的数据从时间属性看都是新的数据,很少甚至不存在旧数据的更新
数据查询/分析的特点
按照时间范围读取
最近的数据被读取的概率最高
历史数据粗粒度查询的概率高
多种精度查询
多种维度查询
数据存储的特点
数据量大:TB 甚至 PB,数据压缩是降低成本的关键
冷热分明:越是历史数据,被查询的概率越低,对数据的时间精度的要求越低
时效性:数据有生命周期,超过生命周期的数据可以被清理
多精度数据存储:基于存储成本和查询效率上的考虑,需要将数据降为多种更粗时间精度进行存储
可预聚合:固定条件查询场景多,基于查询效率上的考虑,通常会提供预聚合来避免每次查询时进行后计算
由于时序数据记录规模巨大,这就导致数据的实时写入成为瓶颈,大规模数据存储的成本,成为新的技术挑战。传统的数据库如 MySQL 由于未能充分利用这些时序数据比较鲜明的特点,很难去解决相应的写入和分析性能、存储成本等问题,如果基于传统数据库存储时序数据,通常企业的运营维护成本会急剧上升。
由上图 (来自 DB-Engines Ranking)不难看出,最近几年时序数据库正处于高速发展阶段,涌现出一批优秀的开源产品,把时序数据库技术深度推向了一个更高的台阶。
再看时序数据库的排名(上图来自 DB-Engines TimeSeries),热度前三分别是 InfluxDB、Kdb+、Prometheus。
时下最受欢迎的时序数据库非 InfluxDB 莫属,常年霸榜 DB-Engines TimeSeries 分类。InfluxDB 实际上是围绕着时序数据打造了一个生态,除了时序存储本身还有很多配合 InfluxDB 的项目,比如告警、日志收集等。不过遗憾的是 InfluxDB 仅仅开源了单机引擎存储,集群功能是作为商业服务提供。
大概在快两年以前,InfluxDB 启动了一个叫 InfluxDB IOx 项目,IOx 发音为 eye-ox,iron oxide(氧化铁)的简写,与锈(Rust)相呼应。IOx 项目准备在时序 OLAP 方向上发力。是的你没看错,IOx 项目基于 Rust 开发,此次开源的 CeresDB 的主要技术栈也是 Rust。
另一个流行的时序数据库是 Kdb+。提到 Kdb+,了解过的小伙伴们一定都知道,它是华尔街投行、各类日内交易和高频交易的量化基金近乎标准的配置。Kdb+ 既是一个数据库(Kdb)也是一个矢量语言(q),它是基于有序表的概念(时间序)的一个内存中面向列存的数据库,它的主要数据存储在 RAM 中。Kdb+ 的查询速度非常之快,我认为这主要归功于三点:
Kdb+ 充分利用了向量化,向量化允许一次同时对多个数据点进行操作,可以很大程度减少实现某项操作所需的操作次数,这消除了对每一块数据的重复操作,大大减少了开销;
Kdb+ 具有内置的查询语言,计算直接在引擎内执行,不需要额外的数据传输。借助内置的查询语言,数据可以直接库内分析计算,无需通过网络和计算分析层进行移动数据。库内分析对于扫描大量原始数据但聚合计算后结果却很小的场景,无疑会呈数量级的加速查询速度;
列存结构对分析型场景的查询更加有效,大家一定都能想明白列存对少数列查询场景的好处,以及对向量化操作的友好度,这里不多做解释了。
再到排名第三的 Prometheus,在云原生的大背景下 Prometheus 可谓既定事实的监控标准。它不仅仅是一个时间序列数据库,而是一个监控系统,它有全套的数据抓取、检索、绘图、报警等功能。Prometheus 很大程度上受 Google 内部 Borgmon 系统的启发,基于 pull 模式实现的监控系统。需要强调的是,PromQL 可谓是为监控而生的查询语言。
即将开源的是 CeresDB 最新的版本,上面介绍了 3 个业界非常厉害的时序数据库,那么可能有朋友会有疑问:“CeresDB 和它们有什么区别,CeresDB 是不是重复的轮子?”
业界专注于监控或 IoT 领域并支持多维查询的时序数据库不少,但同时能兼顾海量数据分析场景的时序数据库少之又少。相对应的,开源版本 CeresDB 脱胎于内部,它定位为高性能的、分布式的、Schema-Less 的新一代时间序列数据库。不同于传统时序数据库,CeresDB 的目标不仅仅是能够处理具备常规时序特征(Timeseries)的数据,同时也要能够应对复杂的分析型场景。
在传统的时序数据中,常用的处理手段是对 Tag 做倒排索引,但是在实际的使用过程中,会发现 Tag 的复杂度在不同场景下很不一样,有些场景复杂度会非常高,直接导致倒排索引完全无法工作,针对这样的场景,往往是通过分析型数据库采用的手段(扫描+剪枝)可以达到较好的效果。
CeresDB 在吸取了蚂蚁内部时序数据大量实践经验后,从整体设计上重点考虑了 Timeseries 和 Analytical 的两种不同场景,采用不同的存储、查询模式,来达到一个综合上比较好的效果。CeresDB 会在兼容 Prometheus、OpenTSDB 等传统时序数据库协议和生态并提供高吞吐写入的同时,还将支持 SQL 查询并提供类似 Kdb+ 以及 InfluxDB IOx 的分析能力(OLAP)。
CeresDB 还处于一个相对早期的阶段,本次正式开源以及同时发布的 0.2.0 版本仅仅是一个包含了 Analytical Engine 的分析型单机时序数据库和基本的分布式解决方案。但是想要说明的是,它仍是一个可用的版本,它也在蚂蚁集团内部一些场景中进行了落地。
在此版本之前,在蚂蚁内部也积累了大量的时序使用经验,这些年在时序领域的研发团队从社区也吸取了大量营养,现在想要把一个融合团队多年经验的新一代产品回馈到社区。此外,除了CeresDB,团队后续也会在这个领域开源更多组件。
作为一个开放的项目,团队认为以开源方式进行研发,也有利于继续吸收社区的想法,推动这个项目往前走。项目开源之后,所有的研发与相关的工作都会在社区透明运行,希望能有更多的朋友参与到项目的研发。长远目标是希望 CeresDB 成为真正被广大开发者接受的基础软件。
在本次发布的 v0.2.0 版本,CeresDB实现了时序分析引擎的研发,支持常见 SQL 进行读写操作;实现了静态分布式部署方案,完成了云原生布式集群方案的一些前置工作。另外也完善了相关文档,方便开发者使用、了解 CeresDB。
0.2.0 版本主要特性:
实现了时序分析引擎,实现了表模型,支持常见 SQL 进行读写操作
底层存储支持本地文件与阿里云 OSS
WAL 支持基于本地 RockDB 与 OBKV
部署方案支持单机与基于配置文件的分布式部署
支持 MySQL 通信协议
本文源自公众号蚂蚁技术风险TRaaS,分布式实验室已获完整授权。
推荐阅读:
《》
《》
点击下方卡片关注分布式实验室,和我们一起
关注分布式最佳实践
▲ 点击上方卡片关注分布式实验室,掌握前沿分布式技术
有想一起学习K8s、考CKA证书吗?来,这里有最好的学习方案,线下3天封闭式培训,15人小班课,考不过免费复训。Kubernetes实战班,8月5日在深圳开课,扫描下方二维码咨询详情。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...