openGauss数据库核心技术
openGauss:The Core Technologies
华为公司从开始自研数据库至今曾经有近20年历史,在去年6月30日,华为正式发表开源数据库能力,凋谢openGauss数据库源代码,并成立openGauss开源社区,社区官网同步上线。从开源至今的短短不到一年半的工夫,openGauss的版本在一直的进行迭代降级,现在已更新至2.1.0版本。
据上半年统计报告显示,openGauss社区官方网站访问量78万+;官方网站访客人数7万+;官方网站安装包下载量16万+,下载遍布寰球49个国家328个城市;社区开发者人数1200+;社区累计需要代码PR提交数达到2600+,累计Commit数达到4500+。
越来越多的企业签订社区CLA,参加社区代码奉献。并且,其中有6家合作伙伴公布基于openGauss的商业发行版,例如云和恩墨基于openGauss商业发行版“MogDB”就曾经落地邮储银行、民生银行。
此外,openGauss的热度也在一直地攀升,在短短一年半的工夫内,一跃国产数据库排行榜前三的席位,倍受大家的关注。
在关注度一直回升的状况下,为了让大家能更好的把握openGauss相干常识,即日起,咱们将连载《openGauss数据库核心技术》系列文章,与大家一起学习openGauss数据库的核心技术,咱们将从以下几大方面进行更新:
openGauss数据库SQL引擎
openGauss数据库执行器技术
openGauss存储技术
openGauss事务机制
openGauss数据库安全
openGauss数据库SQL引擎
数据库的SQL引擎是数据库重要的子系统之一,它对上负责承接应用程序发送过去的SQL语句,对下则负责指挥执行器运行执行打算。其中优化器作为SQL引擎中最重要、最简单的模块,被称为数据库的“大脑”,优化器产生的执行打算的优劣间接决定数据库的性能。
SQL引擎概览
SQL引擎是数据库系统重要组成部分,它的主要职责是负责将应用程序输出的SQL在以后负载场景下生成高效的执行打算,在SQL的高效执行上表演重要角色。SQL在SQL引擎里执行过程,如图7-1所示。
图1 SQL执行流程
从图7-1中能够看出,应用程序的SQL须要通过SQL解析生成逻辑执行打算、通过查问优化生成物理执行打算,而后将物理执行打算转交给查问执行引擎做物理算子的执行操作。
SQL解析通常蕴含词法剖析、语法分析、语义剖析几个子模块。SQL语言是介于关系演算和关系代数之间一种描述性语言,它汲取了关系代数中一部分逻辑算子的形容,而放弃了关系代数中“过程化”的局部,SQL解析次要的作用就是将一个SQL语句编译成为一个由关系算子组成的逻辑执行打算。
描述语言的特点是规定了须要获取的“WHAT”,而不关怀“HOW”,也就是只关注后果而不关注过程,因而SQL语言描述性的特点导致查问优化在数据库管理系统中具备十分重要的作用。
查问重写则是在逻辑执行打算的根底上进行等价的关系代数变换,这种优化也能够称为代数优化,尽管两个关系代数式取得的后果完全相同,然而它们的执行代价却可能有很大的差别,这就形成了查问重写优化的根底。
在晚期的数据库管理系统中,通常采纳基于启发式规定的办法来生成最优的物理执行打算,然而这种基于规定的优化的灵便度不够,经常导致产生一些次优的执行打算,而代价估算的引入,则从根本上解决了基于规定优化的有余。
基于代价的优化器一方面生成“候选”的物理执行门路,另一方面对这些执行门路计算它们的执行代价,这样就建设了执行门路的筛选规范,从而可能通过比拟代价而取得最优的物理执行打算。
SQL解析
SQL语句在数据库管理系统中的编译过程合乎编译器实现的惯例过程,须要进行词法剖析、语法分析和语义剖析。
§ 词法剖析:从查问语句中辨认出零碎反对的关键字、标识符、操作符、终结符等,每个词确定本人固有的词性。
§ 语法分析:依据SQL语言的规范定义语法规定,应用词法剖析中产生的词去匹配语法规定,如果一个SQL语句可能匹配一个语法规定,则生成对应的形象语法树(Abstract Syntax Tree,AST)。
§ 语义剖析:对语法树(AST)进行有效性查看,查看语法树中对应的表、列、函数、表达式是否有对应的元数据,将形象语法树转换为逻辑执行打算(关系代数表达式)。
在SQL语言规范中,确定了SQL语言的关键字以及语法规定信息,SQL解析器在做词法剖析的过程中会将一个SQL语句依据关键字信息以及距离信息划分为独立的原子单位,每个单位以一个词的形式展示,例如有SQL语句:
SELECT w_name FROM warehouse WHERE w_no = 1;
能够划分的关键字、标识符、操作符、常量等原子单位,如表7-1所示。
词性 内容
关键字 SELECT、FROM、WHERE
标识符 w_name、warehouse、w_no
操作符 =
常量 1
表1 词法剖析的特色
语法分析会依据词法剖析取得的词来匹配语法规定,最终生成一个形象语法树(AST),每个词作为语法树的叶子结点呈现,如图7-2所示。
图2 形象语法树
形象语法树表白的语义还仅仅限度在可能保障利用的SQL语句合乎SQL规范的标准,然而对于SQL语句的外在含意还须要做有效性的查看。
§ 查看关系的应用:FROM子句中呈现的关系必须是该查问对应模式中的关系或视图。
§ 查看与解析属性的应用:在SELECT句中或者WHERE子句中呈现的各个属性必须是FROM子句中某个关系或视图的属性。
§ 查看数据类型:所有属性的数据类型必须是匹配的。
在有效性查看的同时,语义剖析的过程还是有效性语义绑定(Bind)的过程,通过语义剖析的查看,形象语法树就转换成一个逻辑执行打算,逻辑执行打算能够通过关系代数表达式的模式来体现,如图7-3所示。
图3 关系代数表达式
未完待续......