a.给选择出的最优sql配置一个sqlid和sql模板;
b.sql模板会预留sql参数;
c.用户通过sqlid和参数调用查询接口;
d.查询接口使用模板生成dremio的sql;
e.通过dremio的jdbc驱动,查询sql;
f.将查询结果返回给用户。
所述元数据更新模块包括实时更新元数据、手动更新元数据、触发更新元数据和Source定期自动更新元数据4种模式:
a.实时更新元数据,对于mysql、oracle等rdbms通过binlog方式获取元数据更新,并及时调用dremio相应表的schema同步api;
b.定时更新元数据,对于无法通过binlog方式获取元数据更新的nosql数据库,可以通过定时器,定时调用dremio相应source的schema同步api;
c.手动更新元数据,对于当前有延迟的元数据,可以执行手动更新的方式同步dremio相应表或者source的schema;
d.触发更新元数据,对于需要元数据更新dremio立即同步schema的情况,可以在代码中调用dremio同步schema的api即可;
e.Source定期自动更新元数据,dremio对每个source可以定期自动更新元数据,在配置source时进行设置,一般都是小时级别同步策略,也可以更加业务进行合适的调整。
一种基于dremio实现跨数据源分布式查询方法,包括如下步骤:
(1)、搭建dremio集群,同一个配置多个不同的source;
(2)、预执行sql并查看执行计划,对sql进行优化并配合可视化执行计划调整sql;
(3)、选择出最优化sql,编写sql模板并绑定sqlid;
(4)、执行sqlid和sql参数,查询sql并获取结果。
所述一种基于dremio实现跨数据源分布式查询系统在构建过程中,还包括准备步骤和辅助步骤:
准备步骤:
1)需要事先配置不同的source(csv/json文件、关系数据库、nosql集群等);
2)需要事先对sql进行预编译,确保sql是正确可执行的。
辅助步骤:
需要同步元数据,针对不同的source实时获取元数据的变更信息并进行更新。
只需要通过dremio接入所需要的数据源,可以是相同的或者不同的数据库集群,也支持nosql和rdbms,最重要的是不同类型的数据源对于dremio来说,都是同样的身份source,dremio以plugin的方式接入不同类型的数据库集群。Dremio还可以对一些常用sql视图进行本地持久化,对于基于该视图的分布式查询分析的提速有不错的效果。
本发明使用dremio以支持不同跨数据源分布式查询,对于数据分散在不同类型数据库、海量数据分布的场景,剪掉数据的etl过程,同时提升了数据的实时性和吞吐量,可以定制化开发sql以满足更多的业务需求。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。