乐趣区

关于数据库:OceanBase-生态产品时序数据库CeresDB-正式发布-10-版本

欢送拜访 OceanBase 官网获取更多信息:https://www.oceanbase.com/

CeresDB 是一款领有计算存储拆散架构的分布式时序数据库,其存储层能够基于 OceanBase KV、OSS 等。通过近一年的开源研发工作,CeresDB 1.0 现已正式公布,达到生产可用规范。


CeresDB 团队曾经在时序数据畛域进行了 5 年的深耕。然而随着在畛域内钻研的深刻以及用户场景的逐步复杂化,咱们发现了若干传统时序数据库尚未很好解决的一些技术问题,比方:

  • 高效解决高基数 Tag 组合(工夫线膨胀问题)与剖析型工作负载
  • 古代且齐备的分布式技术计划
  • 云原生与计算存储拆散

因而,CeresDB 开源我的项目发动之初,咱们就将其定义为下一代的云原生时序数据库。心愿它能同时较好反对传统工夫序列工作负载(timeseries workload)与剖析型工作负载(analytic workload),并且能领有一个古代的云原生分布式技术架构,反对从简略的单节点到宏大分布式集群等各种部署场景。

这样的设计指标,也间接决定了咱们过来一年在研发 CeresDB 1.0 过程中次要的精力投入方向。目前,随着 CeresDB 1.0 的正式公布,咱们认为以上问题均失去了根本的解决。

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 在过来一年投入的几个重点方向的技术计划,因为篇幅限度,这里仅作简要阐明。

▋ 存储引擎摸索

经典时序模型会应用倒排索引的形式对数据进行组织。然而在某些场景如短生命周期 pod 监控、业务数据监控等,会产生高基数工夫线,进而导致倒排索引收缩问题,写入查问性能会急剧变差。

  • 写入时因为索引的复杂性高,写入耗时变高
  • 查问时因为索引的有效性低,查问耗时变高

下图为经典时序模型的示意图:

为了解决高基数的问题,CeresDB 受 InfluxDB IOx 以及各类剖析型数据库的启发,采纳以下形式对时序数据进行组织来实现存储和查问:

  • 列式存储 + 混合存储
  • 分区扫描 + 剪枝 + 高效 fitler

下图展现了 CeresDB 外部的数据组织模式:

▋ 分布式计划

CeresDB 采纳存储计算拆散架构,如下图所示。CeresDB 实例自身能够不存储任何数据,在此基础上能够较好实现要害的几项分布式个性,比方:计算存储弹性扩缩容、服务高可用和负载平衡等等。

CeresDB 分布式集群次要由以下局部组成:

CeresMeta Cluster:集群的元数据中心,负责集群的整体调度;
CeresDB:一个 CeresDB 实例, 负责时序数据组织与存储;
WAL Service(内部):WAL 服务,在集群计划中,用于存储实时写入的数据;
Object Storage(内部):对象存储服务,用于存储从 memtable 生成的 SST 文件。

具体的集群计划能够参看官网文档:https://docs.ceresdb.io/cn/design/clustering.html

性能优化与试验后果

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 在不同工作负载下的体现

▋ 分布式

主动负载平衡

进步可用性、可靠性

* 代码主仓库的 GitHub 地址为:https://github.com/CeresDB/ceresdb

*CeresDB 1.0 官网文档:https://docs.ceresdb.io

欢送拜访 OceanBase 官网获取更多信息:https://www.oceanbase.com/

退出移动版