Knoldus Inc.
3分钟阅读
嘿那里,作为一个技术人员有时我们必须编写数据库的查询,看起来不错,但我们不知道我们写的查询是句法正确的。所以在这个博客中,我们在Apache Calcite的帮助下使用测试用例来解决数据库查询并测试它。所以任何时候都不会浪费,让我们讨论Apache Calcite以及如何使用它来解析数据库查询。
Apache Calcite是一个动态数据管理框架。它甚至包含许多组成典型数据库管理系统的部分。但是它省略了一些关键功能:数据存储,处理数据的算法以及用于存储元数据的存储库。
以下功能已完成。
目录-定义可在SQL查询中访问的元数据和命名空间SQL解析器-将有效的SQL查询解析为抽象语法树(AST)。SQL验证程序-根据catalog提供的元数据验证抽象语法树查询优化器-将AST转换为逻辑计划,进行优化逻辑计划,并将逻辑表达式转换为物理计划SQL生成器—将物理计划转换为SQL
定义可在Calcite查询中访问的名称空间。
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)