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

    文章

    1014

    浏览量

    52588
  • 数据库
    +关注

    关注

    7

    文章

    3993

    浏览量

    67737
  • Rust
    +关注

    关注

    1

    文章

    240

    浏览量

    7481

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    华纳云为游戏数据库选择高性能NVMe SSD存储

    游戏数据库对速度、可靠性和可扩展性有极高要求。随着在线游戏的发展,开发者越来越依赖NVMe SSD存储来提供服务器租用和服务器托管解决方案。本文将指导您了解为游戏数据库选择高性能NVMe SSD存储
    的头像 发表于 09-30 16:03 827次阅读

    数据库性能优化指南

    作为一名在大厂摸爬滚打多年的运维老兵,我见过太多因为数据库性能问题导致的生产事故。今天分享一套完整的数据库优化方法论,从SQL层面到硬件配置,帮你彻底解决性能瓶颈!
    的头像 发表于 08-18 11:21 516次阅读

    云原生环境里Nginx的故障排查思路

    本文聚焦于云原生环境下Nginx的故障排查思路。随着云原生技术的广泛应用,Nginx作为常用的高性能Web服务器和反向代理服务器,在容器化和编排的环境中面临着新的故障场景和挑战。
    的头像 发表于 06-17 13:53 639次阅读
    <b class='flag-5'>云原生</b>环境里Nginx的故障排查思路

    TDengine 发布时序数据分析 AI 智能体 TDgpt,核心代码开源

    组成部分,标志着时序数据库原生集成 AI 能力方面迈出了关键一步。 TDgpt 是内嵌于 TDengine 中的时序数据分析 AI 智能体,具备时序数据预测、异常检测、
    的头像 发表于 03-27 10:30 563次阅读
    TDengine <b class='flag-5'>发布</b><b class='flag-5'>时序数据</b>分析 AI 智能体 TDgpt,核心代码开源

    适用于SQLite的dbExpress数据库驱动程序

    驱动程序作为独立。由于数据访问层薄而简单,dbExpress 提供高性能数据库连接性,并且更加易于部署。 适用于 SQLite 的 dbExpress 驱动程序提供对 SQLite
    的头像 发表于 02-09 09:45 764次阅读

    云原生AI服务怎么样

    云原生AI服务,是指采用云原生的原则和技术来构建、部署和管理人工智能应用及工作负载的方法和模式。那么,云原生AI服务怎么样呢?下面,AI部落小编带您了解。
    的头像 发表于 01-23 10:47 763次阅读

    从Delphi、C++ Builder和Lazarus连接到Oracle数据库

    帮助程序员开发更快、更原生的 Oracle 数据库应用程序。 ODAC 是一种高性能且功能丰富的 Oracle 连接解决方案,是 Borland 数据库引擎 (BDE) 和标准 dbE
    的头像 发表于 01-15 10:01 1348次阅读

    数据库是哪种数据库类型?

    数据库是一种部署在虚拟计算环境中的数据库,它融合了云计算的弹性和可扩展性,为用户提供高效、灵活的数据库服务。云数据库主要分为两大类:关系型数据库
    的头像 发表于 01-07 10:22 804次阅读

    云原生LLMOps平台作用

    云原生LLMOps平台是一种基于云计算基础设施和开发工具,专门用于构建、部署和管理大型语言模型(LLM)全生命周期的平台。以下,是对云原生LLMOps平台作用的梳理,由AI部落小编整理。
    的头像 发表于 01-06 10:21 708次阅读

    鸿蒙原生页面高性能解决方案上线OpenHarmony社区 助力打造高性能原生应用

    NEXT的原生页面高性能解决方案,从页面滑动、跳转及应用冷启动等关键环节,为开发者提供全面的支持。目前,这些解决方案均已上线OpenHarmony开源社区,可在OpenHarmony三方中心仓进行搜索,欢迎开发者多多使用和共
    发表于 01-02 18:00

    时序数据库TDengine 2024年保持高增长,实现收入翻倍

    近日,时序数据库 (Time Series Database) TDengine 正式公布了 2024 年重大成就和发展成绩盘点。在这一年中,TDengine 以持续创新的技术能力、迅猛增长的市场
    的头像 发表于 01-02 13:50 798次阅读
    <b class='flag-5'>时序数据库</b>TDengine 2024年保持高增长,实现收入翻倍

    如何选择云原生机器学习平台

    当今,云原生机器学习平台因其弹性扩展、高效部署、低成本运营等优势,逐渐成为企业构建和部署机器学习应用的首选。然而,市场上的云原生机器学习平台种类繁多,功能各异,如何选择云原生机器学习平台呢?下面,AI部落小编带您探讨。
    的头像 发表于 12-25 11:54 699次阅读

    艾体宝与Kubernetes原生数据平台AppsCode达成合作

    虹科姐妹公司艾体宝宣布与Kubernetes 原生数据平台 AppsCode达成正式合作,致力于将其核心产品KubeDB引入中国市场,为企业提供专业、高效的云原生数据库管理解决方案。
    的头像 发表于 12-16 15:07 894次阅读

    什么是云原生MLOps平台

    云原生MLOps平台,是指利用云计算的基础设施和开发工具,来构建、部署和管理机器学习模型的全生命周期的平台。以下,是对云原生MLOps平台的介绍,由AI部落小编整理。
    的头像 发表于 12-12 13:13 843次阅读

    AI时代的数据库技术发展论坛亮点前瞻

    可以看到,数据库技术作为数字经济的基石,在全球范围内正经历着由传统架构向云原生、智能化的转型。而AI技术的融入,使得数据库系统在性能优化、自动化管理、智能决策等方面展现出前所未有的潜力
    的头像 发表于 12-12 11:31 837次阅读