0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

OSC开源社区 来源:OSC开源社区 2023-03-06 10:22 次阅读

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:JavaPython、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。

66b64880-bb79-11ed-bfe3-dac502259ad0.png66d16606-bb79-11ed-bfe3-dac502259ad0.png

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

分布式

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

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据存储
    +关注

    关注

    5

    文章

    957

    浏览量

    50827
  • 数据库
    +关注

    关注

    7

    文章

    3750

    浏览量

    64219
  • Rust
    +关注

    关注

    1

    文章

    228

    浏览量

    6542

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

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    云原生和非云原生哪个好?六大区别详细对比

    云原生和非云原生各有优劣,具体选择取决于应用场景。云原生利用云计算的优势,通过微服务、容器化和自动化运维等技术,提高了应用的可扩展性、更新速度和成本效益。非云原生则可能更适合对延迟敏感
    的头像 发表于 09-13 09:53 289次阅读

    利用NVIDIA RAPIDS加速DolphinDB Shark平台提升计算性能

    DolphinDB 是一家高性能数据库研发企业,也是 NVIDIA 初创加速计划成员,其开发的产品基于高性能分布式时序数据库,是支持复杂计算和流数据
    的头像 发表于 09-09 09:57 386次阅读
    利用NVIDIA RAPIDS加速DolphinDB Shark平台提升计算<b class='flag-5'>性能</b>

    京东云原生安全产品重磅发布

    “安全产品那么多,我怎么知道防住了?”“大家都说自己是云原生的,我看都是换汤不换药”在与客户沟通云原生安全方案的时候,经常会遇到这样的吐槽。越来越的客户已经开始了云原生化的技术架构改造,也意识到
    的头像 发表于 07-26 10:36 400次阅读
    京东<b class='flag-5'>云原生</b>安全产品重磅<b class='flag-5'>发布</b>

    基于DPU与SmartNic的云原生SDN解决方案

    随着云计算,大数据和人工智能等技术的蓬勃发展,数据中心面临着前所未有的数据洪流和计算压力,这对SDN提出了更高的性能和效率要求。自云原生概念
    的头像 发表于 07-22 11:44 607次阅读
    基于DPU与SmartNic的<b class='flag-5'>云原生</b>SDN解决方案

    时序数据库是什么?时序数据库的特点

    时序数据库是一种在处理时间序列数据方面具有高效和专门化能力的数据库。它主要用于存储和处理时间序列数据,比如传感器数据、监控
    的头像 发表于 04-26 16:02 582次阅读

    华为云多模数据库 GeminiDB 架构与应用实践直播问答实录

    多模数据库作为一种新兴的数据管理解决方案,正在受到越来越多的关注。而华为云多模数据库 GeminiDB 基于云原生数据库优势,让企业应用更智
    的头像 发表于 04-08 18:25 1117次阅读

    华为云原生多模数据库 GeminiDB 架构与应用实践

    近日,2023 全球分布式云大会·深圳站顺利召开,华为云 NoSQL 数据库研发总监余汶龙在会上发表了题为《华为云原生多模数据库 GeminiDB 架构与应用实践》的精彩演讲。 余汶龙提出在智能
    的头像 发表于 04-08 18:23 1129次阅读
    华为<b class='flag-5'>云原生</b>多模<b class='flag-5'>数据库</b> GeminiDB 架构与应用实践

    米哈游大数据云原生实践

    近年来,容器、微服务、Kubernetes 等各项云原生技术的日渐成熟,越来越多的公司开始选择拥抱云原生,并开始将 AI、大数据等类型的企业应用部署运行在云原生之上。以 Spark 为
    的头像 发表于 01-09 10:41 547次阅读
    米哈游大<b class='flag-5'>数据云原生</b>实践

    基于Rust的嵌入式符合ACID的键值数据库

    surrealkv -- 基于 Rust 的 low level、版本化、嵌入式、符合 ACID 的键值数据库
    的头像 发表于 12-28 11:29 836次阅读

    从WasmEdge运行环境读写Rust Wasm应用的时序数据

    WebAssembly (Wasm) 正在成为一个广受欢迎的编译目标,帮助开发者构建可迁移平台的应用。最近 Greptime 和 WasmEdge 协作,支持了在 WasmEdge 平台上的 Wasm 应用通过 MySQL 协议读写 GreptimeDB 中的时序数据
    的头像 发表于 12-22 11:03 927次阅读

    AI 时代数据存储管理新挑战分论坛圆满举办

    ,共同分享了 AI 时代下数据库技术最新发展与实践。 蚂蚁集团开发工程师、HoraeDB 核心开发者 曹瑞秋 曹瑞秋 在《时序数据库 HoraeDB 技术揭秘》的主题分享中表示,近期已将 CeresDB
    的头像 发表于 12-22 10:51 333次阅读
    AI 时代<b class='flag-5'>数据</b>存储管理新挑战分论坛圆满举办

    AI时代数据存储管理新挑战分论坛圆满举办

    AI时代下数据库技术最新发展与实践。 蚂蚁集团开发工程师、HoraeDB 核心开发者 曹瑞秋 曹瑞秋 在《时序数据库HoraeDB 技术揭秘》的主题分享中表示,近期已将CeresDB内核捐献到
    的头像 发表于 12-20 09:40 307次阅读
    AI时代<b class='flag-5'>数据</b>存储管理新挑战分论坛圆满举办

    云原生数据库GaiaDB架构设计解析

    目前,云原生数据库已经被各行各业大规模投入到实际生产中,最终的目标都是「单机 + 分布式一体化」。但在演进路线上,当前主要有两个略有不同的路径。
    的头像 发表于 12-14 14:48 528次阅读
    <b class='flag-5'>云原生</b><b class='flag-5'>数据库</b>GaiaDB架构设计解析

    oracle数据库的使用方法

    Oracle数据库是一种关系型数据库管理系统,它由Oracle公司开发和维护。它提供了安全、可靠和高性能数据库管理解决方案,被广泛应用于企业级应用和大型
    的头像 发表于 12-06 10:10 1145次阅读

    NoSQL 数据库如何选型

    什么是NoSQL数据库?为什么要使用NoSQL数据库?键值数据库内存键值数据库文档数据库列式数据库
    的头像 发表于 11-26 08:05 422次阅读
    NoSQL <b class='flag-5'>数据库</b>如何选型