如何建立自己的数据库用哪些工具

对于很多优秀的程序员来说,在数据库反应奇慢无比的时候,都会萌生一种自己写一个数据库的想法吧。对于现代的数据库系统来说,是离不开SQL解析工具的。今天我们就来为大家介绍一下开源SQL解析工具Apache Calcite。

一、Calcite源流简介

Apaceh Calcite是一款优秀的开源SQL解析工具,其前身为Java写的Optiq,在2013年的时候成为Apache开源基金会旗下的顶级项目,初始版本为0.1.11,经过近十年的发展,目前的最新版本为2022年8月2日发布的1.31.0版本。

如何建立自己的数据库用哪些工具

 

二、Calcite主要功能与应用场景

Calcite可以将各种SQL语句解析成为抽象语法树(AST,Abstract Syntax Tree),之后,通过操作AST就可以把SQL语句所要表达的算法与关系体现在具体代码之中。

目前,很多主流的大数据组件的SQL处理引擎都使用Calcite,包括Hive、Drill、Flink、Phoenix、Storm等。

Calcite提供SQL相关的全部必要功能,包括SQL解析、SQL语法校验、查询优化、SQL生成器、数据连接等。

三、Calcite的相关组件

Calcite主要包括以下几个组件:

1.Catalog: 定义SQL语义相关的元数据与命名空间。其中主要定义被SQL访问的命名空间,主要包括Schema(定义表的命名空间,比如说两张同名表,就需要通过两个Schema A和B来区别,类似于A.Table, B.Table)、表(对应关系型数据库的表)、RelDataType(表的数据定义,如列名及类型等)。

2.SQL parser: 把SQL转化成AST。

3.SQL validator: 通过Catalog来校证AST.

4.Query optimizer: 将AST转化成物理执行计划、优化物理执行计划.

5.SQL generator: 反向将物理执行计划转化成SQL语句.

(此处已添加书籍卡片,请到今日头条客户端查看)

四、Calcite解析SQL的步骤

通常来讲,Calcite解析SQL包括以下几步:

1.Parse:将SQL解析成未经校验的AST

2.Validate:校验Parser步骤中的AST是否合法,如验证SQL scheme、字段、函数等是否存在; SQL语句是否合法等. 此步完成之后就生成了RelNode树(关于RelNode树, 请参考下文)

3.Optimize:优化RelNode树, 并将其转化成物理执行计划。主要涉及SQL规则优化如:基于规则优化(RBO)及基于代价(CBO)优化; Optimze 这一步原则上来说是可选的, 通过Validate后的RelNode树已经可以直接转化物理执行计划,但现代的SQL解析器基本上都包括有这一步,目的是优化SQL执行计划。此步得到的结果为物理执行计划。

4.Execute:将物理执行计划转化成可在特定的平台执行的程序。如Hive与Flink都在在此阶段将物理执行计划生成相应的可执行代码。

本文来自作者:星火网络,不代表小新网立场!

转载请注明:https://www.xiaoxinys.cn/213860.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。