【云驻共创】云筑2021·年终盛典 华为云GaussDB(for openGauss)应用构建
前言
随着云计算规模越来越大,企业业务数据量呈指数级增长,传统数据库在海量数据存储与管理方面显得力不从心,面临“存不下,算得慢、算不准”的问题。面对挑战,华为云数据库深度融合华为在数据库领域多年的经验,充分结合了企业级场景需求,基于openGauss自研生态推出了企业级分布式关系型数据库GaussDB(for openGauss)。GaussDB(for openGauss)目前支持单分片和分布式两种部署形态,在支撑传统业务的基础上,持续构建竞争力特性,为企业面向数字化转型提供了无限可能。
谈GaussDB,它的研发最早可追溯到2007年,起因是电信领域对数据的要求极高,找不到能与之较好契合的数据库,华为最终下定决心走上了研发数据库的道路,并把这款数据库命名为GaussDB。GaussDB的内核从一开始就追求“电信级高可用高安全高可靠“,随着云时代的到来,GaussDB和云的理念结合就有了GaussDB(for openGauss)。服务好内部客户是云的基础理念,因此华为将GaussDB通过云原生分布式服务的方式,服务好华为的消费者云和流程IT等内部客户。
GaussDB(for openGauss)是华为基于openGauss自研生态推出的企业级分布式关系型数据库。该产品具备企业级复杂事务混合负载能力,同时支持分布式事务强一致,同城跨AZ部署,数据0丢失,支持1000+的计算节点扩展能力,4PB海量存储。同时拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。
一、openGauss的发展历史
云数据库是企业上云的必然选项,华为囊括全球1000+数据库专业人才,战略投入超10年,打造世界级数据库GaussDB。作为三大基础软件技术之一的数据库,是企业IT系统必不可少的核心技术。随着云数据库的崛起,也造成了商业数据库市场份额逐年下降,根据第三方机构预测,到2021年,商业数据库市场还会下降20%以上。Gartner则预测,到2023年全球3/4的数据库都会跑在云上。
在组织层面,华为已战略性投入GaussDB数据库超过10年,并在高性能、高可用、高可靠、融合分析方面率先实现突破,构筑起行业领先的竞争力,GaussDB数据库产品也得到了电信、金融等金字塔尖客户核心系统的验证。
现在,华为数据库研发组织又进一步完成了融合,统归华为云BU和2012高斯实验室,未来将统筹数据库战略与布局全球七大区域11个研究所的1000多数据库专业人才,实现“力出一孔”,持续打造世界级数据库。
在生态层面,去年6月30日,华为正式宣布开源数据库能力,开放openGauss数据库源代码,成立openGauss开源社区,未来将会在开源openGauss社区版本并持续运营的基础上,与合作伙伴、高校、开发者共同繁荣数据库产业生态。
不仅如此,华为还始终秉持“硬件开放、软件开源、使能伙伴“的整体发展战略,支持伙伴基于openGauss打造自有品牌的数据库商业发行版,支持伙伴持续构建商业竞争力。 7大全球研究所从事基础研究,10+年数据库领域技术积累,1000+数据库专项人才,40000+数据库集群(套)。从2007年的自研数据库技术原型到2011年启动GaussDB全自研内核研发,再到2014年的GaussDB分析型场景商用,2017年的GaussDB交易型场景商用,现在是2020年的GaussDB升级全场景云服务。
二、openGauss的架构
GaussDB(for openGausA)自研旗舰产品,华为开放生态金融级分布式云原生数据库
GaussDB定位为金融级分布式云原生数据库,架构上着重构筑传统数据库的企业级能力和金融级分布式数据库的高扩展和高可用能力。GaussDB(for openGauss)统一基于数据分片的分布式架构(share nothing),底层数据通过一定的规则比如hash、list或者range等让数据打散分布到不同的数据节点上,计算时底层多个节点共同参与计算。同时数据节点可以扩展,上层由协调节点进行SQL解析和转发。
从图中可以看到,主要包括三类节点:协调节点、数据节点、集群类节点(最重要的是全局事务管理器)。协调节点负责SQL解析转发,充当的是类似proxy的角色,数据节点负责计算和数据存储,全局事务管理器负责全局事务读一致性的保证。
核心优势
①极致高可用: 两地三中心架构, 跨Region数据实时灾备(POC)
②数据安全:实现跨AZ部署数据强一致性, 保证数据0丢失
③高扩展性:容器化部署,性能容量按需水平扩展到1000+节点
④性能强劲:鲲鹏2路服务器,32节点1500万tpmC (华为内部测试)
⑤全栈软硬自研可控:业界领先的鲲鹏+openGauss自研开放内核
GaussDB(for openGauss)是华为公司倾力打造的自研企业级分布式关系型数据库,该产品具备企业级复杂事务混合负载能力,同时支持优异的分布式事务,同城跨AZ部署,数据0丢失,支持1000+扩展能力,PB级海量存储等企业级数据库特性。拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。同时华为开源openGauss单机主备社区版本,鼓励更多伙伴、开发者共同繁荣中国数据库生态。
GaussDB(for openGauss)分布式架构介绍:关键角色
OM:运维管理模块(Operation Manager)。提供集群日常运维、配置管理的管理接口、工具。
CM:集群管理模块(Cluster Manager)。管理和监控分布式系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。
GTM :全局事务管理器(Global Transaction Manager), 负责生成和维护全局事务ID,确保全局事务一致性。
CN:协调节点(Coordinator Node)。负责接收来自应用的访问请求,并向客户端返回执行结果;负责分解任务,并调度任务分片在各DN上并行执行。
DN:数据节点(Data Node)。负责存储业务数据、执行数据查询任务以及向CN返回执行结果。
应用场景
- 交易型应用
大并发、大数据量、以联机事务处理为主的交易型应用,如政务、金融、电商、O2O、电信CRM/计费等,服务能力支持高扩展、弹性扩缩,应用可按需选择不同的部署规模。
- 详单查询
具备PB级数据负载能力,通过内存分析技术满足海量数据边入库边查询要求,适用于安全、电信、金融、物联网等行业的详单查询业务。
三、openGauss的关键技术及特点
分布式关键技术之高性能-分布式并行执行框架
分布式执行框架会根据业务SQL生成最优执行计划,通过算子下推、并行执行等技术,提升分布式执行效率。
- 算子下推
完美sharding的单节点执行,点查、增删改等不需要DN间数据交互的场景下,CN将SQL直接下发至DN执行。
跨节点分布式执行,关联查询等需要DN间数据交互的场景下,CN将执行计划下发给DN, DN间通过Streaming算子完成数据聚合。
- 并行执行
节点间支持DDL、DML 等SQL语句并行执行;节点内支持基于数据页的并行查询。
1、业务应用下发SQL给Coordinator , SQL可以包含对数据的增(insert)、 删 (delete/drop) 、改(update)、 查(select)。
2、Coordinator利用数据库的优化器生成执行计划,每DN会按照执行计划的要求去处理数据。
3、因为数据是通过一致性Hash技术均匀分布在每 个节点,因此DN在处理数据的过程中,可能需要从其他DN获取数据,GaussDB提供了3种stream流(广 播流、聚合流和重分布流)来降低数据在节点间的流动。
4、DN将结果集返回给Coordinate进行汇总。
5、Coordinator将汇总后的结果返回给业务应用。
华为在SQL执行优化方面有多年的沉淀,即使是复杂的SQL、事务分析混合(HTAP)的场景也能得到最佳的执行,举个列子:
基于代价的优化
-
基数估算:Feedback增强、AI基数增强
-
代价估算:行存/列存代价估算、网络通信代价估算
-
搜索算法:动态规划方法、遗传算法、AI搜索
分布式执行计划能力
-
Light Proxy
-
Fast Query Shipping
-
Remote Query Shipping
自研Cascade优化器
-
对象化处理规则应用及搜索任务
-
基于分支限界的剪枝技术
通过分布式查询引擎、分布式调度引擎、分布式存储引擎,GaussDB(for openGauss)完美做到了数据的自动分片,并利用查询优化器在自动负载均衡的同时不断提升执行计划处理效率;在数据节点上针对不同数据场景提供分场景stream流(广播流、聚合流、重分布流),不断提升多分片数据节点间的交互效率,并自动完成数据的结果汇总,保障分布式事务的全局一致性。
分布式关键技术之高可用- -跨AZ/Region容灾
主要特征:
●同城部署, 应用分担,近实时故障切换。
●高性能就近访问: 可配置不同的逻辑单元,实现应用层的就近数据访问。
痛点:
非异地容灾,无法抵御大型自然灾害。
主要特征:
AB数据中心同城双活。
C数据中心异地容灾。
痛点:
●灾备站点资源无法有效利用。
主要特征:
●支持多中心统一查询及全局一致读,整体资源利用率高。
● 灵活的高可用方案:通过配置多副本,可以实现DC, AZ, Region级高可用容灾策略。
●负载分担及故障无缝切换。
●支持平滑在线扩容。
GaussDB(for openGauss)当前已经支持同城单集群跨AZ双活,RPO=0,RTO<60s;双集群跨Region两地三中心容灾,RPO<10s,RTO< 10m,该方案在支持跨Region容灾的同时,支持容灾节点最小化,有效降低用户容灾成本,同时允许用户在故障场景升主后对容灾节点进行在线扩展,保证业务不中断的同时提升用户原容灾实例的可靠性和可用性。
四、openGauss的基本操作及应用
openGauss应用构建
题目:学生选课系统(+40积分)
学生选课系统是大学校园中常用的一个系统,该系统能帮助学生完成心仪课程自主选择。结合openGauss的学习,完成学生选课系统核心表的设计,不局限于上述要求,学员也可以根据自己的实际情况自由发挥。
tips:重点体现数据库设计的思路,例如:需求分析,概念模型,逻辑模型,物理模型着手分布式改造,对系统在数据库设计层面提出一些优化思路。
数据库设计
数据库设计(Database Design)指基于某一具体的数据库管理系统(Database ManagementSxstem.,DBMS)设计并实现数据库实例内具体数据对象,例如表table、视图view、索引index的过程。DBMS是位于用户和操作系统之间的一-层系统级软件,主要负责数据的定义、组织、存储、管理、操纵及数据库相关业务功能的实现。
1、数据库设计流程
数据库设计作为完整的结构化系统构建流程,依照结构化系统设计方法,分为以下六个阶段。
(1)需求分析(Requirement-Analysis);
(2)概念结构设计(Conceptual Design);
(3)逻辑结构设计(Logical Design);
(4)物理结构设计(Physical Design);
(5)数据库实施(Database Implementation);
(6)数据库运行和维护(Database Running and Maintenance)。
各个阶段执行的内容如下图所示:
2、需求分析
本次设计的目标是学生选课系统,根据学校的具体情况设计学生选课信息管理系统。主要功能有:
1.学生管理:学生信息查询、插入、删除、修改等。
2.选课管理:选课信息查询、插入、删除、修改等。
3.成绩管理:成绩的查询。
4.系统管理:操作员信息的管理。
5.系统维护:如数据安全管理(含备份与恢复)、操作员管理、权限设置等。
3、概念设计
在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,才能更好地、更准确地用某一DBMS实现这些需求。通过对需求进一步分析, 产生概念结构设计的E_R模型。
4、逻辑结构设计
概念结构设计所得的E_R模型是对用户需求的一种抽象的表达形式,它独立于任何一种具体的数据模型,因而也不能为任何一个具体的DBMS所支持。为了能够建立起最终的物理系统,还需要将概念结构进-步转化为某--DBMS所支持的数据模型,然后根据逻辑设计的准则、数据的语义约束、规范化理论等对数据模型进行适当的调整和优化,形成合理的全局逻辑结构,并设计出用户子模式这就是数据库逻辑设计所要完成的任务。
数据库逻辑结构的设计分为两个步骤,首先将概念设计所得的E-R图转换为关系模型;然后对关系模型进行优化,比如在数据库设计中比较常见的3NF理论,关系模型如下:
Student(Sno.Sname.Ssex.Ssage.Sdept.Smaior.Svear)
Course(Cno.Cname.Gtime Credit.Cteacher)
SelectGourse(Sno.Cno.Grade)
Majier(MaiorlD.Mname.Remark)
Administrater(Admin. id.Admin. .name.Permission)
5、 物理结构设计
数据库在物理上的存储结构与存储方法称为数据库的物理结构,它依赖于选定的数据库管理系统。为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是物理结构设计。
5.1 实体及属性定义:
5.2 物理模型设计
数据库物理模型设计我们可以借助业界常用的数据库建模工具lPowerDesigner来辅助建模。GaussDB(for anenGauss)是基于pg9.4的内核上开发的,所以我们在通过PD建模时,数据库类型可以选择RastgresSQl。
实体类型选择table, 进行表的基本属性设计,包括表名称、列的名称、数据类型、主键等。
学生选课系统数据库物理模型设计如下图所示:
6、数据库实施。
物理模型设计完成,可以通过PowerDesigner.工具直接生成数据库可以识别的SQL脚本。
1)在PD工具上选择Database >Generate DEtabase, 点击确定生成数据库脚本:。
2)在工具生成的数据库脚本基础上,针对GaussDB(foronenGauss)分布式数据库的特点,还需要对数据库脚本做相应的改造。
1、选择存储模型,表的存储模型选择是表定义的第一步。 GaussDR(for enenGauss)支持行存、烈存两种存储引擎。行存引擎适合新增、修改,查询操作都比较频繁的系统,列存引擎适合大数据量的统计分析类查询居多的系统,所以本次系统更适合用行存表。
2、选择分布方式,GaussDB(for openGauss)支持复制表、哈希、范围和列表四种分布方式。复制表适合数据量较小的维度表,哈希分布会把表数据均匀打散分不到各个DN上,范围和列表分布则会根据用户自定义的规则进行数据分布。根据选课系统的表数据特征,系统管理员表可以选择复制表,其他表则适合选择哈希分布。
3、选择合适的分布列,GaussDB(for onenGauss)分布列的选择原则如下:
1.列值应比较离散,以便数据能够均匀分布到各个DN。例如,考虑选择表的主键为分布列,如在人员信息表中选择身份证号码为分布列。
2.在满足上述条件的情况下,考虑选择查询中的连接条件为分布列,以便Join任务能够下推到DN中执行,且减少DN之间的通信数据量。
通过上面几个步骤,生成学生管理系统数据库脚本,具体内容如下:
总结
本文整理自数据库GaussDB系列技术直播 — GaussDB(for openGauss)应用构建,主要介绍了 GaussDB(for openGauss) 作为云数据库服务结合华为云的产品形态和功能特性。相信大家通过本文的介绍对 GaussDB(for openGauss) 也有了非常深刻的认识和了解。
GaussDB(for openGauss)是华为基于openGauss自研生态推出的企业级分布式关系型数据库。该产品具备企业级复杂事务混合负载能力,同时支持分布式事务强一致,同城跨AZ部署,数据0丢失,支持1000+的计算节点扩展能力,4PB海量存储。同时拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。
openGauss 2.0.0 安装部署(1主+1备+1级联备) https://www.modb.pro/db/49097
基于CentOS 7.6操作系统安装脚本链接地址:https://www.modb.pro/db/106407
基于openEuler操作系统安装脚本链接地址:https://www.modb.pro/db/52552
在线openGauss实训平台 https://www.modb.pro/marketlist?type=1
本文整理自华为云社区【内容共创系列】活动。
查看活动详情:https://bbs.huaweicloud.cn/blogs/314887
相关任务详情:GaussDB(for openGauss)应用构建
- 点赞
- 收藏
- 关注作者
评论(0)