华为云数据库GaussDB(for openGauss):初次见面,认识一下
摘要:本文从总体架构、主打场景、关键技术特性等方面进行介绍GaussDB(for openGauss)。
1.背景介绍
3月16日,在华为云主办的GaussDB(for openGauss)系列技术第一期直播课《认识华为云数据库 GaussDB(for openGauss) 》上,有这样一个提问:开源数据库这么香,为什么华为还要下功夫自研GaussDB(for openGauss)?
其实,不少开源数据库在易用性、配套能力等方面较弱,需要不断维护,而且一旦遇到数据丢失问题,很难快速恢复,造成的损失不可估量。也因此,开源数据库上云只能解决中小企业的简化部署、运维、调优、极致性价比等诉求。
与此同时,开源数据库还得面临服务器、数据库维护升级、人力运维等各种大大小小的成本支出,很难满足业务的快速扩张以及可持续发展。面对金融、政企等对数据安全、响应速度、可靠性、可用性有严苛要求的大型企业,就需要超高可用、功能完备、性能卓越、开放生态、极致弹性的企业级数据库服务。
GaussDB(for openGauss)是华为深度融合多年数据库领域经验,充分结合企业级场景需求,基于openGauss自研生态推出的企业级分布式关系型数据库。目前支持单分片和分布式两种部署形态,在支撑传统业务的基础上,持续构建竞争力特性,为企业面向5G时代的挑战,提供了无限可能。
为了让大家快速了解GaussDB(for openGauss),华为云数据库团队准备了GaussDB(for openGauss)系列技术直播,本文将结合第一场直播内容从总体架构、主打场景、关键技术特性等方面进行介绍。
2.总体架构:统一基于数据分片的分布式架构

GaussDB(for openGauss)统一基于数据分片的分布式架构(share nothing),底层数据通过一定的规则比如hash、list或者range等让数据打散分布到不同的数据节点上,计算时底层多个节点共同参与计算。同时数据节点可以扩展,上层由协调节点进行SQL解析和转发。
从图中可以看到,主要包括三类节点:协调节点、数据节点、集群类节点(最重要的是全局事务管理器)。协调节点负责SQL解析转发,充当的是类似proxy的角色,数据节点负责计算和数据存储,全局事务管理器负责全局事务读一致性的保证。
这种架构为GaussDB(for openGauss)构建了以下核心优势:
- 极致高可用: 两地三中心架构,跨Region数据实时灾备
- 数据安全: 实现跨AZ部署数据强一致性,保证数据0丢失
- 高扩展性:容器化部署,性能容量按需水平扩展,高达1000+节点
- 性能强劲:鲲鹏2路服务器,32节点1200万tpmC(华为内部测试)
- 全栈软硬自研可控:业界领先的鲲鹏+openGauss自研开放内核
3.主打场景
场景一:传统核心交易
针对传统的应用,可以使用单分片的模式,使用方式同传统的主备模式相同。GaussDB(for openGauss)结合鲲鹏深度优化,性能非常出众,同时在可用性上做了极大的提升,非常适合传统商业数据库的替换场景。

场景二:未来海量事务型
随着5G时代的到来,单一节点是难以应对数据规模的不断增长并确保性能的需要,而跨节点、可横向扩展的数据库可以很好解决大规模海量数据的计算存储需要。GaussDB(for openGauss)分布式模式最大可以支持1000+节点,PB级存储,分布式事务强一致等特性可以很好地满足政府、交通、金融、能源等行业的互联网+的诉求。

关键角色
为了方便大家更好理解GaussDB(for openGauss)的技术运行状态,下面将对GaussDB(for openGauss)一些关键角色进行介绍:


4.关键技术特性
GaussDB(for openGauss)基于计算存储分离的分布式架构,构建了6大核心技术特性,下面将对这6大特性进行详细解读。
关键技术一:高性能—分布式执行框架

该特性的大致执行过程为:
- 业务应用下发SQL给Coordinator ,SQL可以包含对数据的CRUD操作;
- Coordinator利用数据库的优化器生成执行计划,每个DN会按照执行计划的要求去处理数据;
- 数据基于一致性Hash算法分布在每个DN,因此DN在处理数据的过程中,可能需要从其他DN获取数据,GaussDB提供三种stream流(广播流、聚合流和重分布流)实现数据在DN间的流动;
- DN将结果集返回给Coordinate进行汇总;
- Coordinator将汇总后的结果返回给业务应用。
华为在SQL执行优化方面有多年的沉淀,即使是复杂的SQL、事务分析混合(HTAP)的场景也能得到最佳的执行,举个列子:
- 基于代价的优化
- 基数估算:Feedback增强、AI基数增强
- 代价估算:行存/列存代价估算、网络通信代价估算
- 搜索算法:动态规划方法、遗传算法、AI搜索
- 分布式执行计划能力
- Light Proxy
- Fast Query Shipping
- Remote Query Shipping
- 自研Cascade优化器
- 对象化处理规则应用及搜索任务
- 基于分支限界的剪枝技术
通过分布式查询引擎、分布式调度引擎、分布式存储引擎,GaussDB(for openGauss)完美做到了数据的自动分片,并利用查询优化器在自动负载均衡的同时不断提升执行计划处理效率;在数据节点上针对不同数据场景提供分场景stream流(广播流、聚合流、重分布流),不断提升多分片数据节点间的交互效率,并自动完成数据的结果汇总,保障分布式事务的全局一致性。
关键技术二:高性能—分布式事务处理性能,GTM-Lite技术

该特性的优势是:
- 高性能事务管理:支持无锁、多版本、高并发事务技术。
- 分布式强一致:分布式的GTM-Lite方案提供全局事务快照和提交号管理,实现强一致性,且无中心节点性能瓶颈。
关键技术三:高性能—Scale-up能力,突破鲲鹏4P NUMA-Aware新架构,实现4P服务器性能突破

GaussDB(for openGauss)使用Numa Aware技术,根据鲲鹏处理器多核NUMA架构特点进行系列优化,通过绑核技术避免内存跨核访问,减少时延问题;通过应用重做日志批量插入、热点数据NUMA分布、Clog分区等关键技术,充分发挥多核算力优势,不断降低访问延迟,日志写冲突,索引更新冲突。当前基于泰山鲲鹏服务器,TPCC性能压测是同规格x86的1.5倍。
关键技术四:高可用—集群HA,多层级冗余实现系统无单点故障
GaussDB(for openGauss)通过硬件冗余、实例冗余、数据冗余,实现整个系统软硬件无单点故障。不同于传统数据库软件产品,GaussDB(for openGauss)主要着重于通过软件能力来提供高可用、高可靠保障。华为云基于软硬件底座,做到端到端数据库高可用能力,并支持对整个场景进行端到端监控&检测,能够更及时、更可靠地保障用户的应用在线、数据0丢失,实现全栈无单点故障。

高可用技术点
硬件高可用:
- 存储:磁盘RAID冗余。
- 网络:双交换机冗余。
- 网卡:多网卡冗余。
- 主机:UPS电源保护
软件高可用:
- 协调节点CN实例多活冗余
- 数据节点/全局事务管理/ 集群管理器实例Active-Standby冗余
故障检测
- 网络故障检测和处理(交换机路由器等)
- 网卡故障检测和处理(本地网卡故障检测)
- 磁盘故障检测和处理:磁盘心跳,处理文件系统返回的错误码
- 主机掉电检测和处理:Heartbeat机制
- 集群实例故障检测和处理(CN/DN/GTM进程非法终止)
- 集群软件故障
关键技术五:高可用—跨AZ/Region容灾技术

GaussDB(for openGauss)当前已经支持同城单集群跨AZ双活,RPO=0,RTO<60s;双集群跨Region两地三中心容灾,RPO<10s,RTO< 10m,该方案在支持跨Region容灾的同时,支持容灾节点最小化,有效降低用户容灾成本,同时允许用户在故障场景升主后对容灾节点进行在线扩展,保证业务不中断的同时提升用户原容灾实例的可靠性和可用性。
关键技术六:高扩展—Scale-out在线横向扩展

GaussDB(for openGauss)单集群计算节点最大规模支持1000+,同时拥有卓越的线性扩展能力。

单集群分片扩展支持数据自动在线完成重分布操作,支持PB级海量事务型存储扩展能力。
综上所述,GaussDB(for openGauss)具备企业级事务混合负载能力,支持分布式事务强一致,同城跨AZ部署,数据0丢失,支持1000+的计算节点扩展能力,PB级海量存储。同时拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面、稳定可靠、扩展性强、性能优越的企业级数据库服务,目前已全网开放商用。而且它也是一个开放生态的产品,单分片版本的源代码已经开源,社区地址为:https://opengauss.org,欢迎大家自行下载、安装和体验。
Ps:错过GaussDB(for openGauss)专场直播的小伙伴们注意了,点击链接可直接回顾,快来观看吧>> https://bbs.huaweicloud.com/live/cloud_live/202103161900.html
本文分享自华为云社区《技术直播解读第1期:认识华为云数据库GaussDB(for openGauss)》,原文作者:心机胖。
华为云数据库GaussDB(for openGauss):初次见面,认识一下的更多相关文章
- 华为云数据库GaussDB(for Cassandra)揭秘第二期:内存异常增长的排查经历
摘要:华为云数据库GaussDB(for Cassandra) 是一款基于计算存储分离架构,兼容Cassandra生态的云原生NoSQL数据库:它依靠共享存储池实现了强一致,保证数据的安全可靠. 本文 ...
- 关于华为高斯数据库 GaussDB 版本及认证体系介绍
目录 你需要知道的 技术有国界 从它的名称说起 你听到过的版本 你听到过的流言蜚语 各个版本的区别 版本未来名称 华为 GaussDB 认证体系介绍 GaussDB 其他资料相关链接 你需要知道的 任 ...
- 华为云数据库中间件DDM性能卓越,遥遥领先于业界
就说一句话吧,后来者居上,不服不行.
- 一文带你读懂!华为云在ACMUG技术沙龙上都透露了些啥?
摘要:近日,华为云数据库业务总裁苏光牛在ACMUG中国MySQL用户组主办的 "华为云专场" 技术沙龙中分享了华为云数据库重磅新品GaussDB的核心能力与竞争优势.那么, Gau ...
- 华为云企业级Redis揭秘第16期:超越开源Redis的ACID"真"事务
摘要: 开源Redis只支持伪事务,应用场景受限.高斯Redis发布企业级事务特性,支持完备ACID,为交易.库存等上层业务带来全新可能. 本文分享自华为云社区<华为云企业级Redis揭秘第16 ...
- 升级的华为云“GaussDB”还能战否?
摘要:芯片.操作系统.数据库是现代信息技术领域的三大核心基础,做数据库,不仅需要技术和投入,对华为这种做通讯起家的企业,更需要的是一种并非玩票性质的态度. GaussDB,不仅蕴含着华为对数学和科学的 ...
- 揭秘华为云GaussDB(for Influx):数据直方图
摘要:本文带您了解直方图在不同产品中的实现,以及GaussDB(for Influx)中直方图的使用方法. 本文分享自华为云社区<华为云GaussDB(for Influx)揭秘第九期:最佳实践 ...
- 揭秘华为云GaussDB(for Influx)最佳实践:hint查询
摘要:GaussDB(for Influx)通过提供hint功能,在单时间线的查询场景下,性能有大幅度的提升,能有效满足客户某些特定场景的查询需求. 本文分享自华为云社区<华为云GaussDB( ...
- 华为云MySQL金融版正式商用,高可靠的金融级数据库来了
摘要:全新三节点架构,基于深度优化的MGR组复制技术,提供金融级的数据一致性. 日前,华为云数据库MySQL 金融版正式商业化发布,MySQL金融版采用MGR技术,基于Paxos协议,采用一主两备三节 ...
- 当MySQL执行XA事务时遭遇崩溃,且看华为云如何保障数据一致性
摘要:当前MySQL所有版本不支持分布式事务的崩溃恢复安全,这严重影响了分布式事务的高可用保障. 华为云数据库内核高级技术专家,拥有十多年MySQL内核研发经验,目前在华为云数据库团队研发华为云数据库 ...
随机推荐
- 删除小程序scroll-view的滚动条
小程序scroll-view滚动条很丑,想隐藏? 在有scroll-view滚动条页面的wxss里添加: ::-webkit-scrollbar { display: none; width: 0; ...
- AGC 补题笔记
[AGC001] A.BBQ Easy 由于最大数肯定要和一个比自己小的数搭配保留该数,不如选择保留次大数,如此递归即解.因此将序列排序后输出序号为奇数的数即可. B.Mysterious Light ...
- 对于goland相对较新一些版本新建项目时没有go mod模式选项的坑
前言 对于一些小白在网上看很早的一些go视频,使用goland2020.3.x版本或者其之前版本创建新项目,里面会有GO Modules(vgo)这个选项,也就是gomod模式创建新项目,然而对于现在 ...
- CSS display属性的作用
作者:WangMin 格言:努力做好自己喜欢的每一件事 网页上的每个元素都是一个矩形框.CSS中的display属性决定了矩形框的行为.display属性是我们在前端开发中常常使用的一个属性. dis ...
- 一篇文章让你理解:什么是Spring???
背景 市场上,随便一个Java工程师的招牌要求上,都可以看到SSM.Spring.SpringMVC...类似字样.这玩意到底是个啥? 这是中邮消费招聘的岗位要求,可以看到第3点: 3.熟悉Strut ...
- Transformers 中原生支持的量化方案概述
本文旨在对 transformers 支持的各种量化方案及其优缺点作一个清晰的概述,以助于读者进行方案选择. 目前,量化模型有两个主要的用途: 在较小的设备上进行大模型推理 对量化模型进行适配器微调 ...
- vue 甘特图(附件):甘特图附件
甘特图样式: .gantt_container { border-color: transparent !important; .gantt_right { top: 0% !important; d ...
- HDL刷题:Count clock
原题链接 要写一个12小时的时钟. 由题目得知,reset信号的优先级最高,其次是enable,这里很好实现. 我的思路: 写了一个4位的bcd计数器,并实例化了4个,对ss与mm的[7:4]与[3: ...
- python数值列表之range()和list()
range() 学习了for循环后,显示数字当然也可以很轻松啦,这个时候我们就可以用到range()函数 for list_2 in range(1, 5): print(list_2) range( ...
- 通过Spring MVC 实现 Restful 风格请求⽀持
通过Spring MVC可以很方便地实现Restful风格的请求支持.Restful风格的请求是一种基于HTTP协议的轻量级的Web服务架构风格,它通过HTTP的GET.POST.PUT.DELETE ...