<返回更多

使用Apache Calcite解析数据库查询

2021-02-24    
加入收藏

Knoldus Inc.

3分钟阅读

嘿那里,作为一个技术人员有时我们必须编写数据库的查询,看起来不错,但我们不知道我们写的查询是句法正确的。所以在这个博客中,我们在Apache Calcite的帮助下使用测试用例来解决数据库查询并测试它。所以任何时候都不会浪费,让我们讨论Apache Calcite以及如何使用它来解析数据库查询。

介绍

Apache Calcite是一个动态数据管理框架。它甚至包含许多组成典型数据库管理系统的部分。但是它省略了一些关键功能:数据存储,处理数据的算法以及用于存储元数据的存储库。

什么是Apache Calcite?

您应该了解有关Apache Calcite的一些导入事项

使用Calcite的优势:

以下功能已完成。

查询执行阶段

使用Apache Calcite解析数据库查询

 

Calcite的成分

目录-定义可在SQL查询中访问的元数据和命名空间SQL解析器-将有效的SQL查询解析为抽象语法树(AST)。SQL验证程序-根据catalog提供的元数据验证抽象语法树查询优化器-将AST转换为逻辑计划,进行优化逻辑计划,并将逻辑表达式转换为物理计划SQL生成器—将物理计划转换为SQL

Calcite目录的用法

定义可在Calcite查询中访问的名称空间。

使用Apache Calcite解析数据库查询

 

查询优化

使用Apache Calcite的项目

现在介绍如何使用Apache Calcite解析SQL查询。

1:将此插件添加到数据库查询的依赖项或模块中。

"org.apache.calcite" % "calcite-babel" % "1.21.0"

2:创建将查询作为输入的方法,返回SqlNode。在这种方法中,您必须提供如下配置:您可以选择自己的分析器工厂)

val sqlParserConfig = CalciteParser
.configBuilder()
.setParserFactory(SqlBabelParserImpl.FACTORY)
.setConformance(SqlConformanceEnum.BABEL)
.build()

3:通过上面的配置(我以BABEL为例,您可以选择自己的解析器工厂)

CalciteParser.create(sql, sqlParserConfig).parseQuery()

4: 现在,在测试案例中,只需声明您的数据库查询或方法即可返回

assert(parseSql(resultedSql).isInstanceOf[SqlNode])

在其中parseSql是实际解析查询的方法。

概述

建立SQL数据库的框架。它已经发展了十多年。用JAVA编写,以前称为Optimiser。也称为Farrago。在2013年成为Apache项目。由Hortonworks的Julian Hyde领导。

 

(本文由闻数起舞翻译自Knoldus Inc.的文章《Parsing database Query with Apache Calcite》,转载请注明出处,原文链接:https://medium.com/@knoldus/parsing-database-query-with-apache-calcite-8d1567de3ffa)

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>