openGemini 内核源码正式对外开源
本文分享自华为云社区《华为云面向全球正式开放openGemini内核源码》,作者: 云数据库创新 Lab。
一、背景介绍
物联网时代已经来临,物联网设备走进我们的日常生活,例如智能冰箱、电动汽车、智能手表等等。公开报告显示,预计到 2025 年,中国的物联网连接数会占到全球的 30%。这些联网的设备每时每刻都在产生大量的数据,每天的数据增长量可以达到 GB 级甚至 TB 级,给数据库带来非常大的挑战,例如:高并发写入大量数据导致数据入库太慢,海量数据引起过高的存储成本和查询时延等等。时序场景作为物联网领域的典型场景,与传统关系型数据库场景有很大区别,时序数据库专为时序场景设计和优化,近年来开始受到越来越多的关注。
华为云整合产业和技术优势,打造了业界领先的企业级时序数据库 GaussDB for Influx,并经过外部公有云业务服务化的锤炼以及内部 DevOps 等业务的长时间打磨,在大规模集群、高性能查询、分级压缩存储等方面都有明显优势。今年 6 月,华为云宣布将 GaussDB for Influx 内核正式对外开源,开源品牌命名为 openGemini。
openGemini 是一个开源的分布式时序数据库系统,可广泛应用于物联网、车联网、运维监控、工业互联网等业务场景,具备卓越的读写性能和高效的数据分析能力。
二、openGemini 软件架构
2.1 架构设计
openGemini 采用 MPP 大规模并行处理分层架构,由 ts-sql(计算引擎)、ts-store(存储引擎)、ts-meta(元数据引擎)三大部分组成。openGemini 既支持集群部署,也可以单机部署。
ts-sql:统一处理客户端请求
提供 RESTful 接口
兼容 InfluxDB Line Protocol 和 v1 API,同时也支持 Prometheus 的远程数据读写
查询语句执行期间,从 ts-store 获取数据并汇总,并返回客户端
支持横向扩展
ts-store:数据管理
将原始数据按优化设计的数据格式进行统一组织和存储
按时间范围和时间线 ID 查询数据
支持横向扩展
ts-meta:元数据管理
数据库集群元数据管理,如节点信息等
数据库元数据管理,如数据保留时间、数据分区信息、表信息等
2.2 关键特性
高性能读写
每秒千万级指标数据并发写入,毫秒级查询响应支持时序数据分析
内置 AI 数据分析算法,支持实时异常检测和预测
兼容时序生态
完全兼容 InfluxDB Line Protocol 和 InfluxQL
无缝集成现有 InfluxDB 工具链
支持 Prometheus 远程数据存储
分布式
提供了水平扩展能力,支持数百节点集群规模
海量时序数据高效管理
支持亿级时间线管理
内置高效数据压缩算法,存储成本只有传统关系数据库的 1/20
部署灵活
部署只需运行编译生成的可执行文件,无需外部依赖
所有数据库配置参数均有合理的默认值,无需手动设置
支持单机和集群部署
三、openGemini 有什么优势
3.1 性能优势
针对物联网、运维监控等领域海量数据管理和分析的需求,openGemini 对计算引擎和存储引擎做了大量的优化设计。
查询引擎,实现了向量化、分布式计算、算子下推、预聚合等多种查询优化和执行技术,提升了数据查询效率。在工业物联网、运维监控等场景中实现交互级的查询时延,并且在超大数据基数(万亿级)的情况下,也能够达到很低的查询时延。
存储引擎,设计列式数据存储格式,将多元时间序列数据按时间对齐,减少时间戳的重复存储,并开发了一套高效的存储引擎,实现了数据有序存储、数据分区分级、数据预取、稀疏索引等丰富功能。
数据吞吐量和查询时延是评价一个时序数据库性能的关键指标,openGemini 经过大量优化后,整体性能表现出色。下方的测试结果显示了 openGemini 从 4U 扩展到 32U 的性能表现,可以看出:
从 4U 到 32U,openGemini 写入性能可以线性扩展(扩展比为 0.8)
从 4U 的 155 万 Metrics/s 平稳增长到 32U 的 560 万 Metrics/s
在业界流行的时序数据库 Benchmark 测试工具TSBS的 15 个标准测试场景中,openGemini 性能表现优异,15 个标准测试场景可分为简单查询、中等查询和复杂查询三大类型:
简单查询:少量或者没有使用函数或表达式,查询时间范围在 24 小时以内,查询时延数毫秒。
中等查询:使用多个函数或表达式,查询时间范围在几周内,并且使用了 GROUP BY 分组,查询时延在数十毫秒到数百毫秒。
复杂查询:使用了多个聚合函数或表达式,按月或者按年为时间范围查询,查询时延通常可能会达分钟级。
openGemini 相比开源 InfluxDB,简单查询场景提升 2 倍多,中等查询场景提升 4 倍多;复杂查询场景下,openGemini 依然可以快速响应,然而 InfluxDB 则出现 OOM 无法工作。
3.2 丰富的数据分析能力
时序数据采集的最终目的是让数据被理解和使用,数据分析是其中关键的一环。时序数据库具有广泛的应用场景,使得时序应用日益多样化,数据分析需求在不断变化和增加,这要求时序数据库能快速应对不同数据分析需求,不断丰富内部的分析算子。
与此同时,传统的大数据分析工具(比如 Spark、Flink 等)过于厚重,部署成本高;搭配时序数据库进行分析时,离数据较远,数据分析实时性无法满足要求。随着物联网、传感器技术、5G 的快速发展,迫切需要一种更有效的方法来处理海量、高速的时序数据,而用户真正需要的是一个能够以最低时延和最高吞吐量处理、检测和预测信息的系统,这样的系统在业界开源的数据库中少之又少。
相对应的,openGemini 具有丰富的聚合分析算子(COUNT、SUM、MAX、MIN 等共计 60 余种)、统计分析算子(PERCENTILE 分位数、HISTOGRAM 直方图等)、异常检测和预测算子(内置 13 种异常检测器,可覆盖常见的离群点、数值变化、阈值、持续上升下降等时序异常场景)。其中基于 AI 的异常检测的实现过程中,充分考虑了数据分布,提供近数据计算能力,能提升端到端数据分析和计算效率。
3.3 降低成本,增加效益
openGemini 源于华为云 GaussDB for Influx,GaussDB for Influx 已经在华为云许多内部重要业务上使用,通过技术的升级,替代了 Cassandra、InfluxDB、HBase、OpenTSDB 等多套系统部署,实现了降本增效。
openGemini 在承载相同业务场景下,较原系统端到端时延减低 50%,CPU 资源上可以节省 68%,内存资源可以节省 50%,硬盘资源可以节省 90%以上。
四、为什么开源
开源是开放创新的有效手段,是数字时代的事实标准和专利。DB-Engines 的统计数据表明,从 2021 年开始,开源数据库的流行指数已经超过商用数据库,开源时序数据库占比更是高达 80%,openGemini 时序数据库作为基础软件,也需要拥抱开源。
源于开源,回馈开源
openGemini 时序数据库经历了几个发展阶段。从最初基于开源 InfluxDB 的架构改造,到应对内部数十亿海量时间线挑战,再到自研数据库引擎,一路打磨,经受住了华为云内、外部 100 余家用户的生产检验。openGemini 现在以及将来取得的成绩,都离不开开源社区肥沃的土壤。openGemini 的开源,希望可以倡导开源文化,以实际行动回馈开源。
开放合作,共建共享
我们深知独木难成林,百川聚江海的道理,但开源生态建设并非朝夕之功,也并非一个企业自身就能完成,而是一个聚沙成塔、集腋成裘的过程,唯有携手伙伴共建、共享,方能打造出健康繁荣的开源生态。我们希望把 openGemini 社区作为一个支点、一个开放创新平台,通过释放华为云内部多年积累的时序数据库技术研发和应用的实践经验,吸引更多的伙伴与开发者参与贡献,不断改善 openGemini 生态和竞争力,持续打造开放的技术产品和应用生态,使能物联网、工业互联网等行业数字化转型,促进产业协同,以应对生存环境愈发复杂,行业竞争愈发激烈,业务发展愈发多样的数字化时代。
版本说明
本次发布的 v0.1.0 是具有完整时序数据库功能的版本,详细信息请点击查看用户指南。
v0.1.0 版本主要特性:
支持单机和分布式集群部署,高性能和可扩展
支持证书验证和用户鉴权
完全兼容 InfluxDB Line Protocol v1、InfluxQL
支持 Prometheus 远程数据读写
支持 Linux 操作系统
丰富的内核运行指标(60 余项),提供指标监测的工具 ts-monitor
详细版本路标已发布,请前往社区查阅。
加入社区
为方便了解和参与社区贡献,我们为您准备了贡献指南。
其他
社区合作、寻求社区帮助、相关问题咨询渠道:
推荐在 GitHub 上给社区提交 Issue 和 Discussion
发送邮件到 openGemini 社区邮箱(community.ts@opengemini.org),1-2 个工作日内给与回复
加入 openGemini 社区微信交流群(微信添加 xiangyu5632,备注 openGemini)
加入 Slack。
openGemini 官网主页: http://www.openGemini.org/
openGemini 开源地址: https://github.com/openGemini
华为云数据库创新 Lab 首页:https://www.huaweicloud.com/lab/clouddb/home.html,欢迎对社区运营、时序数据库内核技术、开源爱好者加入社区,加入我们 Lab!
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/981db45f4562b43a00d78ec2c】。文章转载请联系作者。
评论