数据库SQL引擎层(PingCAP-TiDB、阿里-OceanBase)

1.什么是SQL?

        SQL 是一种操作数据库的语言,包括创建数据库、删除数据库、查询记录、修改记录、添加字段等。SQL 虽然是一种被 ANSI 标准化的语言,但是它有很多不同的实现版本。(ANSI 是 American National Standards Institute 的缩写,中文译为“美国国家标准协会”。)SQL 是 Structured Query Language 的缩写,中文译为“结构化查询语言”。

  1. SQL 是一种计算机语言,用来存储、检索和修改关系型数据库中存储的数据。
  2. SQL 是关系型数据库的标准语言,所有的关系型数据库管理系统(RDBMS),比如MySQL、Oracle、SQL Server、MS Access、Sybase、Informix、Postgres 等,都将 SQL  作为其标准处理语言。此外,SQL 也有一些变种,就像中文有很多方言,比如:
    1. 微软的 SQL Server 使用 T-SQL
    2. Oracle 使用 PL/SQL;
    3. 微软 Access 版本的 SQL 被称为 JET SQL本地格式)。

1.1SQL的用途

  1. 允许用户访问关系型数据库系统中的数据
  2. 允许用户描述数据
  3. 允许用户定义数据库中的数据,并处理该数据
  4. 允许将 SQL 模块、库或者预处理器嵌入到其它编程语言中
  5. 允许用户创建和删除数据库、表、数据项(记录)
  6. 允许用户在数据库中创建视图、存储过程、函数
  7. 允许用户设置对表、存储过程和视图的权限

2.SQL执行过程与基础命令

        当你在任何一款 RDBMS 中执行 SQL 命令时,系统首先确定执行请求的最佳方式,然后 SQL 引擎将会翻译 SQL 语句,并处理请求任务。整个执行过程包含了多种组件,比如:1、查询调度程序  2、优化引擎  3、传统的查询引擎  4、SQL 查询引擎。

传统查询引擎能够处理所有的非 SQL 命令,但是 SQL 引擎并不能处理逻辑文件。 

3.SQL解析器的组成

        在SQL标准中,确定了SQL的关键字以及语法规则信息,SQL 解析器在做词法分析的过程中会将一个SQL语句根据关键字信息以及间隔信息划分为独立的原子单位,每个单位以一个词的方式展现。例如:SELECT w_name FROM warehouse WHERE w_no = 1;

        SQL语句在数据库管理系统中的编译过程符合编译器实现的常规过程,需要进行词法分析、语法分析和语义分析。

  1. 词法分析:从查询语句中识别出系统支持的关键字、标识符、运算符、终结符等,确定每个词固有的词性。
  2. 语法分析:根据SQL的标准定义语法规则,使用词法分析中产生的词去匹配语法规则,如果一个 SQL 语句能够匹配一个语法规则,则生成对应的抽象语法树(Abstract Syntax Tree,AST)。
  3. 语义分析:对语法树进行有效性检查,检查语法树中对应的表、列、函数、表达式是否有对应的元数据,将抽象语法树转换为逻辑执行计划(关系代数表达式)。
该SQL 语句可以划分的 关键字、标识符、运算符、常量 等原子单位如表所示:

3.1SQL解析器—语法分析(AST)

        抽象语法树(Abstract Syntax TreeAST)简称语法树(Syntax tree)是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。语法分析会根据词法分析获得的词来匹配语法规则,最终生成一个抽象语法树,每个词作为语法树的叶子节点出现。

4.TIDB—SQL层架构图

 

5.OceanBase—SQL层架构图

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值