【发布时间】:2018-06-13 19:21:13
【问题描述】:
我正在使用 Apache Calcite 来实现一个分布式 OLAP 系统,它的数据源是 RDBMS。所以我想将RelNode树中的项目/过滤器/聚合下推到MyTableScan extends TableScan。在MyTableScan 中,一个RelBuilder 得到推送的RelNode。最后,RelBuilder 生成对源数据库的查询。同时,应移动或修改原RelNode树中的项目/过滤器/聚合。
据我所知,Calcite 不支持此功能。
当前限制:JDBC适配器目前只下推表扫描操作;所有其他处理(过滤、连接、聚合等)都在 Calcite 中进行。我们的目标是将尽可能多的处理下推到源系统,同时翻译语法、数据类型和内置函数。如果 Calcite 查询基于来自单个 JDBC 数据库的表,则原则上整个查询都应该转到该数据库。如果表来自多个 JDBC 源,或者是 JDBC 和非 JDBC 的混合,Calcite 将使用它可以使用的最有效的分布式查询方法。
在我看来,RelOptRule 可能是一个不错的选择。不幸的是,当我创建新的RelOptRule 时,我无法轻松找到父节点来删除节点。
RelOptRule是个不错的选择吗?任何人都有实现此功能的好主意?
谢谢。
【问题讨论】:
标签: java database apache-calcite