张小白OpenGauss训练营日记1——openGauss训练营学习心得
在这个周末能做什么呢?不如参加下 openGauss社区、Gauss松鼠会、云和恩墨 举办的“openGauss布道师朱金伟出品:8小时玩转openGauss训练营(第二期)”活动吧。
打开 https://www.modb.pro/event/370 可以看到活动详情:
连续两天,每天下午4小时的培训活动,应该会让人感到干货满满的吧。。。
当然,在参加培训之前,张小白总得先了解openGuass到底是什么。华为在各个领域都进行了深度布局,其中昇腾、鲲鹏、IoT等张小白都略有了解,但是数据库这块,确实没怎么深入关注过。因此,张小白对此做了简单的搜索和分析(如有错漏,还请专家指出)
虽然张小白也参加过几次《云享读书会》数据库方面的活动,比如 《数据仓库工具箱:维度建模权威指南》( https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=29753&page=1 )和《SQL优化核心思想》( https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=49168&page=1 )。
前者在品书的过程中,让学员了解了华为的数据仓库服务 GaussDB for DWS:
后者学员了解了华为的云数据库服务 PostgreSQL:
但其实,华为在数据库上的布局并不简单,不仅有开源增强型的关系型数据库RDS系列:RDS for MySQL、RDS for PostgreSQL:
也有云数据库GaussDB系列:GaussDB for MySQL、GaussDB for openGauss:
还有云数据库GaussDB for NOSQL系列:Cassandra、MongoDB、Influx、Redis:
这真的让人眼花缭乱。
那我们单看 关系型数据库吧,华为的数据库分两大类:自研和开源增强。个人理解,自研就是自主研发,开源增强就是拿着开源的软件做了功能完善。。。
华为自研的云数据库GaussDB有两个产品:
(1)GaussDB for openGauss:定位为XC场景,应用于金融、电信、政府等行业关键核心系统、高性能场景
(2)GaussDB for MySQL:定位为OLTP和OLAP一般性能要求场景,例如金融、互联网等
华为开源增强的云数据库RDS有两个产品:
(1)RDS for PostgreSQL:定位在去Oracle场景(PG增强版)、开源PG业务迁移上云场景
(2)RDS for MySQL:定位在开源MySQL业务迁移上云场景
那么openGauss到底是啥?2019年9月19日在华为全联接大会上,华为宣布将开源其数据库产品,开源后命名为openGauss。
openGauss跟前面 GaussDB for openGauss 的关系也容易理解了:GaussDB for openGauss是华为使用自己的免费的开源数据库openGauss提供的收费云服务。
也就是说,openGauss的源代码是公开的,你可以下载源码安装到本地运行,而GaussDB和RDS这些只能在云上运行。当然,云上运行也分公有云运行和私有化运行两种,后者也可能收费不菲。
那么,第一天4个小时的培训到底说了啥呢?
第一讲 openGauss体系架构,由openGauss布道师朱金伟主讲。
朱老师介绍了openGauss的发展历程:
说的好像跟张小白前面调查的结果相似:
openGauss的定位是:高性能、高可用、高安全、易运维、全开放:
朱老师从一般DBMS的体系架构,讲到了openGauss的体系架构:
openGauss主要通过线程池多线程任务调度,实现了各种DB的功能,比如监控/事件Auditor、WalSender/WalReceiver同步复制等。
openGauss的逻辑模块如下所示:
以openGauss的双机复制版本为例,SQL命令的处理流程如下:
具体以执行一句查询的SQL为例:分别包含了SQL解析、查询优化、查询执行、存储读写等各个环节:
openGauss将该语句字符串通过 词法分析解析成token、Keyword,再通过语法分析生成ParseTree,再通过语义分析,解析成QueryTree,接着通过优化器生成PlanTree:
openGauss对以上内容进行查询优化:
再通过执行引擎执行相关查询:
openGauss的存储引擎接收查询执行,通过控制事务、锁、缓冲区、文件等实现对数据的访问,并且记录Redo Log。
朱老师接着讲了openGauss的一些核心技术:
比如:
SMP并行架构:
64位事务ID:
如何解决大并发场景的问题:
线程池实现原理:
事务处理机制:
增量checkpoint技术:
接着,朱老师介绍了openGauss的典型场景OLTP和OLAP:
行列混合引擎——针对不同性质的查询和分析等操作,提供行存和列存不同方式的存储策略:
接着,朱老师介绍了openGauss的双机部署场景——主机读写,备机只读:
双机原理是通过日志收发线程将主库的Redo日志发送到备机,在备机做日志恢复:
openGauss通过优化,可以实现极致RTO:
朱老师接着介绍了openGauss如何处理安全问题:
这里采用了全密态等值查询技术:
数据流程如下:
openGauss还针对DBA日常的运维场景,将其大部分工作自动化:
还提供了AI for DB和DB for AI两大类AI全景:
DB4AI包含以下功能:
此外,openGauss还提供了离线和在线的参数调优的能力:
慢查询发现的能力:
核心技术总结如下:
openGauss的AI能力体现在DBMind上,它代表了openGauss的未来方向:更智能、更安全、更高效:
第二讲 场景演练:主备HA集群部署 ,由贾军锋 主讲
贾老师通过理论和实操,让大家知道了HA是什么架构:
HA主从同步复制、异步复制的时序图:
HA有哪些重要参数需要准备:
贾老师接着通过实操搭建了HA主备和备库级联模式的集群:
包含下载安装包:
修改安装脚本:
执行安装脚本:
在安装完毕后,贾老师还介绍了HA环境的日常运维:
其中主备切换有两种模式:switchover主动切换和failover故障切换:
切换的流程分别如下:
使用gs-ctl进行具体的切换:
另外,贾老师还介绍了集群服务器增删节点的过程:
dropnode删除节点的流程:
dropnode删除节点的具体操作:
expansion增加节点的流程:
expansion增加节点的具体操作:
第三讲 WDR报告和性能调优 由刁现峰 主讲
刁老师先介绍了openGauss集群的性能指标体系,然后介绍了WDR集群报表,最后介绍了一些性能调优的案例:
性能指标体系含系统级、对象级、应用级等多类:
核心指标矩阵包含以下内容:
(缺2)
第二部分,WDR包含以下内容:
WDR快照
WDR Report:
WDR集群级报表:
下图是实际范例:
WDR节点级报表:
接着介绍了如何从整体上分析性能的方法:
其中,对于单语句的性能问题,可以用以下的分析方法:
刁老师接着介绍了几个调优的案例:
第四讲 openGauss的AI特性 由王天庆老师主讲
王老师介绍了 数据库现在的发展趋势跟人工智能的结合是什么情况:
AI4DB和DB4AI的场景(这点第一点的朱老师也有提及)
AI在参数优化和调优上的能力:
慢查询发现能力:
数据库异常检测能力:
查询性能预测能力:
DB4AI能力:
第五讲 内存优化表 由王鹏主讲
王老师介绍了openGauss在MOT内存表上的实现:
openGauss已经完全支持MOT:
MOT是基于乐观并发控制技术,所以不一定适合所有的场景:
如果要在openGauss上实现MOT,仅需建立foreign table就可以了:
MOT拥有极致的性能:
MOT支持持久化和高可用:
内存规划如下:
具体MOT的操作如下:
MOT支持JIT编译提高运行速度:
但是,由于使用了OCC乐观并发控制技术,使用MOT时,客户端代码必须具备重试的功能:
MOT也提供了监控功能:
通过连续4个小时的5个讲座,张小白已经被openGauss完全征服了。openGauss尽管是开源的数据库,但是它仍然解决了张小白在使用别的数据库如IBM DB2、Oracle、MySQL等上的很多痛点,比如性能优化问题,监控问题。openGauss内核源自PostgreSQL,跟Oracle的语法接近,在目前信创的大环境下,还有便于从Oracle迁移的优势。此外,无论是AI,还是MOT,都使得这个数据库不是一个简单的数据库。它几乎代表了关系数据库的未来和趋势。张小白不得不动心去试一试openGauss了。
最后附上一些资源:
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
希望第二天下午的4个小时能够给张小白带来新的收获!
(全文完,谢谢阅读)
- 点赞
- 收藏
- 关注作者
评论(0)