CN108932345A - 一种基于dremio实现跨数据源分布式查询系统和方法 - Google Patents
一种基于dremio实现跨数据源分布式查询系统和方法 Download PDFInfo
- Publication number
- CN108932345A CN108932345A CN201810844469.1A CN201810844469A CN108932345A CN 108932345 A CN108932345 A CN 108932345A CN 201810844469 A CN201810844469 A CN 201810844469A CN 108932345 A CN108932345 A CN 108932345A
- Authority
- CN
- China
- Prior art keywords
- sql
- dremio
- metadata
- data
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于dremio实现跨数据源分布式查询系统,包括Sql预执行优化模块、元数据更新模块、Sql加速器模块和查询接口模块,还公开了查询方法:搭建dremio集群,同一个配置多个不同的source;预执行sql并查看执行计划,对sql进行优化并配合可视化执行计划调整sql;选择出最优化sql,编写sql模板并绑定sqlid;执行sqlid和sql参数,查询sql并获取结果。本发明使用dremio以支持不同跨数据源分布式查询,对于数据分散在不同类型数据库、海量数据分布的场景,剪掉数据的etl过程,同时提升了数据的实时性和吞吐量,可以定制化开发sql以满足更多的业务需求。
Description
技术领域
本发明涉及数据库技术领域,具体是一种基于dremio实现跨数据源分布式查询系统和方法。
背景技术
跨数据源分布式查询是近年来业界的研究热点之一。传统的关系数据库由于可扩展性和处理性能的限制无法满足其要求。新兴的NoSQL数据库具有良好的可扩展性,需要将不同数据源数据汇聚到同一个数据库里,但不支持SQL和索引等传统数据库特性。
Apache Drill是一个低延迟的大型数据集的分布式查询引擎,包括结构化和半结构化数据/嵌套。其灵感来自于谷歌的Dremel,Drill的设计规模为上千台节点并且能与BI或分析环境互动查询。在大型数据集上,Drill可以用于短,交互式的临时查询。Drill能够用于嵌套查询,像JSON格式,Parquet格式以及动态的执行查询。Drill不需要一个集中的元数据仓库。
现有技术问题是基于一个nosql或rdbms数据源或者同一种类型的nosql或rdbms数据源,这些数据源往往自己就有一些自定义的sql语法,这些跨集群的分布式查询技术只能解决单一的同类型数据库查询需求,无法对多个不同类型数据源进行查询分析。
发明内容
本发明的目的在于提供一种基于dremio实现跨数据源分布式查询系统和方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种基于dremio实现跨数据源分布式查询系统,包括Sql预执行优化模块、元数据更新模块、Sql加速器模块和查询接口模块;
Sql预执行优化模块,用于根据元数据,通过dremio管理页面编写sql语句,并能可视化的操作group by和join,拼接复制sql语句;
元数据更新模块,用于定制开发元数据的更新;
Sql加速器模块,用于对sql进行最优化处理时进行加速生效;
查询接口模块,用于保障dremio的稳定运行。
作为本发明进一步的方案:所述元数据更新模块包括实时更新元数据、手动更新元数据、触发更新元数据和Source定期自动更新元数据4种模式。
一种基于dremio实现跨数据源分布式查询方法,包括如下步骤:
(1)、搭建dremio集群,同一个配置多个不同的source;
(2)、预执行sql并查看执行计划,对sql进行优化并配合可视化执行计划调整sql;
(3)、选择出最优化sql,编写sql模板并绑定sqlid;
(4)、执行sqlid和sql参数,查询sql并获取结果。
与现有技术相比,本发明的有益效果是:
所述一种基于dremio实现跨数据源分布式查询系统和方法,基于dremio来实现跨数据源分布式查询,借助dremio支持异构数据源、跨数据源join查询、加速器等功能特性来达到跨异构数据源即时查询数据。Dremio通过sql解析,将查询分拆到不同的数据源,并通过parquet格式存储数据、通过arrow格式传输数据,并且将sql执行计划下推,同一个数据源获取最小量的数据,以最低的成本、统一的数据格式来进行join操作,无需进行额外的数据转换即可返回查询结果,本发明使用dremio以支持不同跨数据源分布式查询,对于数据分散在不同类型数据库、海量数据分布的场景,剪掉数据的etl过程,同时提升了数据的实时性和吞吐量,可以定制化开发sql以满足更多的业务需求。
附图说明
图1为一种基于dremio实现跨数据源分布式查询系统和方法中Sal分布式执行流程图。
图2为一种基于dremio实现跨数据源分布式查询系统和方法中Sal分布式执行流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1和图2,本发明实施例中,一种基于dremio实现跨数据源分布式查询系统,
包括Sql预执行优化模块、元数据更新模块、Sql加速器模块和查询接口模块;
Sql预执行优化模块,用于根据元数据,通过dremio管理页面编写sql语句,并能可视化的操作group by和join,拼接复制sql语句,具体步骤为:
a.配置source,检测是否可以连接;
b.从source出发找到一个基础表,进入sql编辑页面;
c.找到需要进行join的下一张表,选择需要进行join的字段以及join类型,支持innerjoin,left outer join,right outer join和full outer join;
d.选择需要排序的列,并进行设置,可以对多列进行组合降序和升序;
e.选择需要分组的列,并对这些列选择度量列和度量函数,比如sum,count,avg,max,min等;
f.选择需要返回的列,去掉不需要返回的列,可以对返回的列进行转换、过滤等处理;
g.预执行sql语句;
h.分析sql执行计划,通过sql执行计划,分析查询是否按照预期的计划执行,最重要检查是否产生了全表扫描;
i.如果产生了全表扫描,检查一下sql,对sql进行调整,直到能够将filter进行下推或者达到预期的效果。
元数据更新模块,用于定制开发元数据的更新;
Sql加速器模块,用于对sql进行最优化处理时进行加速生效,具体包括如下步骤:
a.配置source,检测是否可以连接
b.从source出发找到一个基础表,进入表settings页面;
c.开启raw原生加速器和aggregation聚合加速器;
d.如果sql语法不正确或者sql的表和索引列不存在,返回sql异常;
e.编写sql语句,预执行;
f.查看执行计划是否用到刚刚设置的加速器;
g.加速器也可以设置刷新策略,加速器需要加载完原始数据并定期刷新;
h.其他使用到该表的sql会尽量命中加速器获取本地获取数据且无需远程访问sourc。
查询接口模块,用于保障dremio的稳定运行,具体包括如下步骤:
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以满足更多的业务需求。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (3)
1.一种基于dremio实现跨数据源分布式查询系统,其特征在于,包括Sql预执行优化模块、元数据更新模块、Sql加速器模块和查询接口模块;
Sql预执行优化模块,用于根据元数据,通过dremio管理页面编写sql语句,并能可视化的操作group by和join,拼接复制sql语句;
元数据更新模块,用于定制开发元数据的更新;
Sql加速器模块,用于对sql进行最优化处理时进行加速生效;
查询接口模块,用于保障dremio的稳定运行。
2.根据权利要求1所述的一种基于dremio实现跨数据源分布式查询系统,其特征在于,所述元数据更新模块包括实时更新元数据、手动更新元数据、触发更新元数据和Source定期自动更新元数据4种模式。
3.一种基于dremio实现跨数据源分布式查询方法,其特征在于,包括如下步骤:
(1)、搭建dremio集群,同一个配置多个不同的source;
(2)、预执行sql并查看执行计划,对sql进行优化并配合可视化执行计划调整sql;
(3)、选择出最优化sql,编写sql模板并绑定sqlid;
(4)、执行sqlid和sql参数,查询sql并获取结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810844469.1A CN108932345A (zh) | 2018-07-27 | 2018-07-27 | 一种基于dremio实现跨数据源分布式查询系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810844469.1A CN108932345A (zh) | 2018-07-27 | 2018-07-27 | 一种基于dremio实现跨数据源分布式查询系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108932345A true CN108932345A (zh) | 2018-12-04 |
Family
ID=64445100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810844469.1A Pending CN108932345A (zh) | 2018-07-27 | 2018-07-27 | 一种基于dremio实现跨数据源分布式查询系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108932345A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858652A (zh) * | 2020-07-07 | 2020-10-30 | 合肥森亿智能科技有限公司 | 基于消息队列的跨数据源查询方法、系统及服务器节点 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120215763A1 (en) * | 2011-02-18 | 2012-08-23 | Microsoft Corporation | Dynamic distributed query execution over heterogeneous sources |
CN105279286A (zh) * | 2015-11-27 | 2016-01-27 | 陕西艾特信息化工程咨询有限责任公司 | 一种交互式大数据分析查询处理方法 |
CN107066499A (zh) * | 2016-12-30 | 2017-08-18 | 江苏瑞中数据股份有限公司 | 面向异构存储多源数据管理及可视化系统的数据查询方法 |
CN107818127A (zh) * | 2017-09-09 | 2018-03-20 | 国网浙江省电力公司 | 一种用于多源数据的查询方法及系统 |
CN108052635A (zh) * | 2017-12-20 | 2018-05-18 | 江苏瑞中数据股份有限公司 | 一种异构数据源统一联合查询方法 |
CN108090154A (zh) * | 2017-12-08 | 2018-05-29 | 广州市申迪计算机系统有限公司 | 一种异构多源数据融合查询方法及装置 |
-
2018
- 2018-07-27 CN CN201810844469.1A patent/CN108932345A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120215763A1 (en) * | 2011-02-18 | 2012-08-23 | Microsoft Corporation | Dynamic distributed query execution over heterogeneous sources |
CN105279286A (zh) * | 2015-11-27 | 2016-01-27 | 陕西艾特信息化工程咨询有限责任公司 | 一种交互式大数据分析查询处理方法 |
CN107066499A (zh) * | 2016-12-30 | 2017-08-18 | 江苏瑞中数据股份有限公司 | 面向异构存储多源数据管理及可视化系统的数据查询方法 |
CN107818127A (zh) * | 2017-09-09 | 2018-03-20 | 国网浙江省电力公司 | 一种用于多源数据的查询方法及系统 |
CN108090154A (zh) * | 2017-12-08 | 2018-05-29 | 广州市申迪计算机系统有限公司 | 一种异构多源数据融合查询方法及装置 |
CN108052635A (zh) * | 2017-12-20 | 2018-05-18 | 江苏瑞中数据股份有限公司 | 一种异构数据源统一联合查询方法 |
Non-Patent Citations (1)
Title |
---|
杨寒光等: "分布式异构数据源标准化查询设计与实现", 《土木建筑工程信息技术》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858652A (zh) * | 2020-07-07 | 2020-10-30 | 合肥森亿智能科技有限公司 | 基于消息队列的跨数据源查询方法、系统及服务器节点 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10095732B2 (en) | Scalable analysis platform for semi-structured data | |
US10275475B2 (en) | Scalable analysis platform for semi-structured data | |
US9576007B1 (en) | Index and query serving for low latency search of large graphs | |
CN106227800B (zh) | 一种高度关联大数据的存储方法及管理系统 | |
CN103631870B (zh) | 一种用于大规模分布式数据处理的系统及其方法 | |
CN104123374A (zh) | 分布式数据库中聚合查询的方法及装置 | |
CN104899295B (zh) | 一种异构数据源数据关联分析方法 | |
CN106372177B (zh) | 支持混合数据类型的关联查询及模糊分组的查询扩展方法 | |
WO2020135613A1 (zh) | 数据查询处理方法、装置及系统、计算机可读存储介质 | |
CN105975617A (zh) | 一种多分区表查询处理的方法和装置 | |
CN104123392A (zh) | 一种关系型数据库迁移到HBase数据库的工具和方法 | |
CN105138661A (zh) | 一种基于Hadoop的网络安全日志k-means聚类分析系统及方法 | |
CN107656951B (zh) | 一种同步异构数据库系统中实时数据的方法 | |
CN107870949B (zh) | 数据分析作业依赖关系生成方法和系统 | |
Samwel et al. | F1 query: Declarative querying at scale | |
WO2018196729A1 (zh) | 一种查询处理方法、数据源注册方法及查询引擎 | |
CN109241156A (zh) | 基于etl工具从关系型数据库向非关系型数据库更新的方法 | |
CN102902818A (zh) | 一种数据库升级的方法及装置 | |
CN102999600A (zh) | 一种嵌入式数据库自动生成方法和系统 | |
CN105975489A (zh) | 一种基于元数据的在线sql代码补全方法 | |
CN102654878A (zh) | 嵌入式系统中分布式数据库的数据操作方法及板卡 | |
CN108932345A (zh) | 一种基于dremio实现跨数据源分布式查询系统和方法 | |
CN105550351B (zh) | 旅客行程数据即席查询系统及方法 | |
Vakharia et al. | Shared foundations: Modernizing meta’s data lakehouse | |
CN104794567B (zh) | 一种基于HBase的传染病数据管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20181204 |
|
WD01 | Invention patent application deemed withdrawn after publication |