CN108052635A - 一种异构数据源统一联合查询方法 - Google Patents
一种异构数据源统一联合查询方法 Download PDFInfo
- Publication number
- CN108052635A CN108052635A CN201711387611.6A CN201711387611A CN108052635A CN 108052635 A CN108052635 A CN 108052635A CN 201711387611 A CN201711387611 A CN 201711387611A CN 108052635 A CN108052635 A CN 108052635A
- Authority
- CN
- China
- Prior art keywords
- data source
- heterogeneous data
- unifies
- inquiry
- sql statement
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/256—Integrating or interfacing systems involving database management systems in federated or virtual databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于电力系统数据库技术领域,公开了一种异构数据源统一联合查询方法。本发明获得数据源接口,对标准SQL进行语法解析,生成SQL执行计划,执行SQL计划,将不同数据源的数据加载到内存中,对已加载的数据进行并行计算,返回计算结果到客户端。本发明减少了查询各异构数据源时所需的连接次数,能够在特定业务场景下满足对各异构数据源中进行联合查询的需求。
Description
技术领域
本发明属于电力系统数据库技术领域,具体是涉及一种异构数据源统一联合查询方法。
背景技术
随着智能电网技术的不断发展,电网企业发挥数据资源的战略资产作用,关键在于提升海量数据的管理和支撑能力,实现信息共享,为企业管理提供运营决策分析支持。
然而,电网海量数据多源各异,表现为多种异构数据源并存的局面。所谓异构数据源,既包括Oracle、MySQL、Postgresql、Sybase IQ等传统关系型数据库,同时还包括Cassandra、HBase、Hive等NoSQL及数据仓库。面对庞大的数据量以及各异的数据源,往往需要使用各数据源提供的连接客户端进行单独访问,无法使用一个连接对多个数据源进行同时访问,也无法在一次连接中将不同的数据源中的数据进行关联。因此,传统的访问方式,无法满足多数据源大数据快速实时查询计算的性能要求。
发明内容
本发明目的是:针对现有技术的不足,提供一种异构数据源统一联合查询方法。该方法能够在一次连接中,对不同的异构数据源进行统一访问,甚至可以在一次连接中,对多异构数据源中的不同数据进行关联查询,满足电网大数据查询访问时高性能、易用性、可扩展性的需求。
具体地说,本发明是采用以下技术方案实现的,包括以下步骤:
1)在对各异构数据源进行查询操作前,如果异构数据源支持schema、table、column的时候,遍历异构数据源中所有的schema、table、column以及其他的元数据信息,如果异构数据源不支持schema、table、column的时候,将异构数据源的数据映射到查询中间件中的schema、table、column中,再通过查询中间件中的schema、table、column遍历异构数据源中所有的元数据信息;
2)查询客户端向查询中间件提交查询语句,所述查询语句为需要执行的SQL语句;当得到SQL语句时,查询中间件会将SQL语句组装成一个请求,发送给负责解析请求的解析模块;
3)解析模块对收到的请求进行解析,所述解析包括词法分析、语法分析和语义分析,最终生成整个SQL语句的执行计划;
4)将生成的整个SQL语句的执行计划转换为查询任务,分配空闲的工作节点去执行对应查询任务的计算任务,从而将各异构数据源的数据加载至内存;
5)每当查询任务产生一定的计算结果,查询中间件就向查询客户端返回相应的计算结果,直到查询客户端获得了所有的计算结果。
进一步而言,所述步骤2)中,查询语句从指定的文件或命令行参数获取。
进一步而言,所述步骤2)中,查询中间件会将SQL语句组装成一个RESTful请求。
进一步而言,所述步骤3)中,使用JAVA的Visitor模式对SQL语句进行语法分析。
进一步而言,所述步骤3)中,所述语法分析,是一个递归调用的过程,通过构造相应的节点形成一个抽象语法树。
进一步而言,所述步骤3)中,使用JAVA的Visitor模式对SQL语句进行语义分析。
进一步而言,所述步骤3)中,根据SQL语句的类型生成不同的执行计划。
进一步而言,查询客户端从提交查询语句开始就会不停地从查询中间件获取本次查询的计算结果,直到获得了所有的计算结果。
本发明的有益效果如下:本发明针对智能电网数据的数据源各异的情况,将原本需要新建多次连接才能完成查询的任务,放在了一次连接中完成,将整个查询过程分为定义数据源接口、提交查询、生成查询执行计划、执行SQL查询计划、返回查询结果等步骤。由于在一次连接中可以同时查询多个数据源中的数据,在特定业务需求中,可以将多数据源中的数据进行关联查询;在进行海量电网数据查询处理过程中,终端用户不用等到所有数据处理完毕才能看到结果,大大提高了查询的响应速度;计算过程完全基于内存,查询效率极高。
附图说明
图1是本发明方法的示意图。
具体实施方式
下面结合实施例并参照附图对本发明作进一步详细描述。
实施例1:
本发明的一个实施例,公开了一种异构数据源统一联合查询方法,其主要步骤如图1所示。
参见图1,图1中步骤1是定义数据源接口,即在对各异构数据源进行查询操作前,需要对特定的数据源进行如下操作:当异构数据源支持schema、table、column的时候,则实现数据源接口较容易,直接对应匹配即可,即直接异构数据源中遍历所有的schema、遍历所有的table、遍历所有的column、遍历其他的元数据信息;当异构数据源使用异构数据源特定的数据源映射到查询中间件中的schema、table、column,再通过查询中间件中的schema、table、column遍历异构数据源中所有的元数据信息。
图1中步骤2是提交查询,即查询客户端向查询中间件提交查询语句,所述查询语句为需要执行的SQL语句,可以从指定的文件、命令行参数获取。当得到SQL语句时,查询中间件会将SQL语句组装成一个请求(如一个RESTful请求),发送给负责解析请求的解析模块。
图1中步骤3是生成查询执行计划,即解析模块对收到的请求进行解析,所述解析包括词法分析、语法分析和语义分析,最终生成整个SQL语句的执行计划。
先进行词法分析,完成词法分析后,使用JAVA的Visitor模式对SQL语句进行语法分析。语法分析是一个递归调用的过程,通过构造相应的节点形成一个抽象语法树。语法分析完成后进行语义分析,同样使用Visitor模式对SQL语句进行语义分析,常见的包括ShowCatalogs、Create View、Insert、Delete、Select、Join等。最终生成整个SQL语句的执行计划,根据SQL语句的类型生成不同的执行计划。
图1中步骤4是执行SQL查询计划,即将生成的整个SQL语句的执行计划转换为查询任务,分配空闲的工作节点去执行对应查询任务的计算任务,查询中间件可以读取多种数据源中的数据,从而将各异构数据源的数据加载至内存。
图1中步骤5是返回查询结果,即查询客户端从提交查询语句开始就会不停地从查询中间件获取本次查询的计算结果,每当查询任务产生一定的计算结果,查询中间件就向查询客户端返回相应的计算结果,直到查询客户端获得了所有的计算结果。
以下给出本实施例的具体实施结果。将不同数据源部署在服务器上,并在各数据源中模拟某省份用电信息采集、输变电状态监测、统一车辆系统等采集监测类数据。
服务器硬件配置:
服务器软件配置:
操作系统 | 数据库 |
CentOS 6.5 | MySQL5.7.10 |
CentOS 6.5 | Postgresql9.6.3 |
CentOS 6.5 | Oracle11 |
CentOS 6.5 | HBase1.2.0 |
CentOS 6.5 | Hive2.0.1 |
根据以上参数的配置,在各数据源中,分别构建列数目50列的数据表,并插入采集量测数据2亿条。通过本实施例的查询方式,对各数据源的数据查询效率如下:
数据源 | 效率(万/秒) |
MySQL5.7.10 | 0.59 |
Postgresql9.6.3 | 0.68 |
Oracle11 | 0.76 |
HBase1.2.0 | 9.7 |
Hive2.0.1 | 5.6 |
如上表,本实施例对各数据源的查询效率分别为:0.59万/秒、0.68万/秒、0.76万/秒、9.7万/秒、5.6万/秒。其中,单位“万/秒”表示:每一秒钟查询多少万条数据值。在该实际的场景下,数据查询的需求大于0.4万/秒。因此,本实施例高效的满足了海量应用需求。
虽然本发明已以较佳实施例公开如上,但实施例并不是用来限定本发明的。在不脱离本发明之精神和范围内,所做的任何等效变化或润饰,同样属于本发明之保护范围。因此本发明的保护范围应当以本申请的权利要求所界定的内容为标准。
Claims (8)
1.一种异构数据源统一联合查询方法,其特征在于,包括以下步骤:
1)在对各异构数据源进行查询操作前,如果异构数据源支持schema、table、column的时候,遍历异构数据源中所有的schema、table、column以及其他的元数据信息,如果异构数据源不支持schema、table、column的时候,将异构数据源的数据映射到查询中间件中的schema、table、column中,再通过查询中间件中的schema、table、column遍历异构数据源中所有的元数据信息;
2)查询客户端向查询中间件提交查询语句,所述查询语句为需要执行的SQL语句;当得到SQL语句时,查询中间件会将SQL语句组装成一个请求,发送给负责解析请求的解析模块;
3)解析模块对收到的请求进行解析,所述解析包括词法分析、语法分析和语义分析,最终生成整个SQL语句的执行计划;
4)将生成的整个SQL语句的执行计划转换为查询任务,分配空闲的工作节点去执行对应查询任务的计算任务,从而将各异构数据源的数据加载至内存;
5)每当查询任务产生一定的计算结果,查询中间件就向查询客户端返回相应的计算结果,直到查询客户端获得了所有的计算结果。
2.根据权利要求1所述的异构数据源统一联合查询方法,其特征在于,所述步骤2)中,查询语句从指定的文件或命令行参数获取。
3.根据权利要求1所述的异构数据源统一联合查询方法,其特征在于,所述步骤2)中,查询中间件会将SQL语句组装成一个RESTful请求。
4.根据权利要求1所述的异构数据源统一联合查询方法,其特征在于,所述步骤3)中,使用JAVA的Visitor模式对SQL语句进行语法分析。
5.根据权利要求4所述的异构数据源统一联合查询方法,其特征在于,所述步骤3)中,所述语法分析,是一个递归调用的过程,通过构造相应的节点形成一个抽象语法树。
6.根据权利要求1所述的异构数据源统一联合查询方法,其特征在于,所述步骤3)中,使用JAVA的Visitor模式对SQL语句进行语义分析。
7.根据权利要求1所述的异构数据源统一联合查询方法,其特征在于,所述步骤3)中,根据SQL语句的类型生成不同的执行计划。
8.根据权利要求1所述的异构数据源统一联合查询方法,其特征在于,查询客户端从提交查询语句开始就会不停地从查询中间件获取本次查询的计算结果,直到获得了所有的计算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711387611.6A CN108052635A (zh) | 2017-12-20 | 2017-12-20 | 一种异构数据源统一联合查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711387611.6A CN108052635A (zh) | 2017-12-20 | 2017-12-20 | 一种异构数据源统一联合查询方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108052635A true CN108052635A (zh) | 2018-05-18 |
Family
ID=62130558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711387611.6A Pending CN108052635A (zh) | 2017-12-20 | 2017-12-20 | 一种异构数据源统一联合查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108052635A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829735A (zh) * | 2018-05-21 | 2018-11-16 | 上海达梦数据库有限公司 | 并行执行计划的同步方法、装置、服务器及存储介质 |
CN108932345A (zh) * | 2018-07-27 | 2018-12-04 | 北京中关村科金技术有限公司 | 一种基于dremio实现跨数据源分布式查询系统和方法 |
CN109710630A (zh) * | 2018-12-25 | 2019-05-03 | 中科曙光国际信息产业有限公司 | 异构数据源的查询方法及装置 |
CN110659327A (zh) * | 2019-08-16 | 2020-01-07 | 平安科技(深圳)有限公司 | 实现异构数据库之间数据交互式查询的方法和相关装置 |
CN111008211A (zh) * | 2019-12-06 | 2020-04-14 | 北京百分点信息科技有限公司 | 可视化接口的创建方法、装置、可读存储介质及电子设备 |
CN111190924A (zh) * | 2019-12-18 | 2020-05-22 | 中思博安科技(北京)有限公司 | 跨域的数据查询方法及装置 |
CN111930862A (zh) * | 2020-09-17 | 2020-11-13 | 国网浙江省电力有限公司 | 一种基于大数据平台的sql交互式分析方法及系统 |
CN113032423A (zh) * | 2021-05-31 | 2021-06-25 | 北京谷数科技股份有限公司 | 基于多数据引擎动态装载的查询方法和系统 |
CN113468873A (zh) * | 2021-07-09 | 2021-10-01 | 北京东方国信科技股份有限公司 | Pl/sql语言的语法解析方法及装置 |
WO2023015809A1 (zh) * | 2021-08-12 | 2023-02-16 | 威讯柏睿数据科技(北京)有限公司 | 一种分布式内存数据查询优化的方法和设备 |
CN117539912A (zh) * | 2023-11-23 | 2024-02-09 | 武汉软件工程职业学院(武汉开放大学) | 一种加速异构数据源访问的系统、方法及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102982075A (zh) * | 2012-10-30 | 2013-03-20 | 北京京东世纪贸易有限公司 | 支持访问异构数据源的系统和方法 |
US20160092502A1 (en) * | 2014-09-25 | 2016-03-31 | Sundaresan Krishnamurthy | Graphical modeling of database query statements |
CN106897322A (zh) * | 2015-12-21 | 2017-06-27 | 中国移动通信集团山西有限公司 | 一种数据库和文件系统的访问方法和装置 |
CN107122365A (zh) * | 2016-02-25 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 异构数据库的访问方法及装置 |
-
2017
- 2017-12-20 CN CN201711387611.6A patent/CN108052635A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102982075A (zh) * | 2012-10-30 | 2013-03-20 | 北京京东世纪贸易有限公司 | 支持访问异构数据源的系统和方法 |
US20160092502A1 (en) * | 2014-09-25 | 2016-03-31 | Sundaresan Krishnamurthy | Graphical modeling of database query statements |
CN106897322A (zh) * | 2015-12-21 | 2017-06-27 | 中国移动通信集团山西有限公司 | 一种数据库和文件系统的访问方法和装置 |
CN107122365A (zh) * | 2016-02-25 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 异构数据库的访问方法及装置 |
Non-Patent Citations (2)
Title |
---|
ERICH GAMMA等著: "《设计模式 可复用面向对象软件的基础》", 30 September 2000 * |
朱峰: "基于JSON的互联网异构数据整合的应用研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829735A (zh) * | 2018-05-21 | 2018-11-16 | 上海达梦数据库有限公司 | 并行执行计划的同步方法、装置、服务器及存储介质 |
CN108932345A (zh) * | 2018-07-27 | 2018-12-04 | 北京中关村科金技术有限公司 | 一种基于dremio实现跨数据源分布式查询系统和方法 |
CN109710630A (zh) * | 2018-12-25 | 2019-05-03 | 中科曙光国际信息产业有限公司 | 异构数据源的查询方法及装置 |
CN110659327A (zh) * | 2019-08-16 | 2020-01-07 | 平安科技(深圳)有限公司 | 实现异构数据库之间数据交互式查询的方法和相关装置 |
CN111008211B (zh) * | 2019-12-06 | 2023-04-11 | 北京百分点科技集团股份有限公司 | 可视化接口的创建方法、装置、可读存储介质及电子设备 |
CN111008211A (zh) * | 2019-12-06 | 2020-04-14 | 北京百分点信息科技有限公司 | 可视化接口的创建方法、装置、可读存储介质及电子设备 |
CN111190924A (zh) * | 2019-12-18 | 2020-05-22 | 中思博安科技(北京)有限公司 | 跨域的数据查询方法及装置 |
CN111930862A (zh) * | 2020-09-17 | 2020-11-13 | 国网浙江省电力有限公司 | 一种基于大数据平台的sql交互式分析方法及系统 |
CN111930862B (zh) * | 2020-09-17 | 2020-12-15 | 国网浙江省电力有限公司 | 一种基于大数据平台的sql交互式分析方法及系统 |
CN113032423A (zh) * | 2021-05-31 | 2021-06-25 | 北京谷数科技股份有限公司 | 基于多数据引擎动态装载的查询方法和系统 |
CN113032423B (zh) * | 2021-05-31 | 2021-08-17 | 北京谷数科技股份有限公司 | 基于多数据引擎动态装载的查询方法和系统 |
CN113468873A (zh) * | 2021-07-09 | 2021-10-01 | 北京东方国信科技股份有限公司 | Pl/sql语言的语法解析方法及装置 |
CN113468873B (zh) * | 2021-07-09 | 2024-04-16 | 北京东方国信科技股份有限公司 | Pl/sql语言的语法解析方法及装置 |
WO2023015809A1 (zh) * | 2021-08-12 | 2023-02-16 | 威讯柏睿数据科技(北京)有限公司 | 一种分布式内存数据查询优化的方法和设备 |
CN117539912A (zh) * | 2023-11-23 | 2024-02-09 | 武汉软件工程职业学院(武汉开放大学) | 一种加速异构数据源访问的系统、方法及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108052635A (zh) | 一种异构数据源统一联合查询方法 | |
CN104123374B (zh) | 分布式数据库中聚合查询的方法及装置 | |
CN106547796B (zh) | 数据库的执行方法及装置 | |
CN111382226B (zh) | 一种数据库查询检索方法、装置和电子设备 | |
US8874600B2 (en) | System and method for building a cloud aware massive data analytics solution background | |
US8655861B2 (en) | Query metadata engine | |
CN103177068B (zh) | 按照生存规则合并源记录的系统和方法 | |
CN103064875B (zh) | 一种服务化空间数据分布式查询方法 | |
CN109446279A (zh) | 基于neo4j大数据血缘关系管理方法、系统、设备及存储介质 | |
CN105930446B (zh) | 一种基于Hadoop分布式技术的电信客户标签生成方法 | |
CN104462430B (zh) | 关系型数据库的数据处理方法及装置 | |
CN108664516A (zh) | 查询优化方法及相关装置 | |
CN106294695A (zh) | 一种面向实时大数据搜索引擎的实现方法 | |
CN104239572A (zh) | 基于分布式缓存实现元数据分析的系统及方法 | |
CN105405070A (zh) | 一种分布式内存电网系统构建方法 | |
CN102270232A (zh) | 一种存储优化的语义数据查询系统 | |
CN111177148A (zh) | 一种水电数据库自动建表分表的方法 | |
CN105335479A (zh) | 一种基于sql的文本数据统计实现方法 | |
CN103778251A (zh) | 面向大规模rdf图数据的sparql并行查询方法 | |
CN101710336A (zh) | 一种利用关系中间件加速数据处理的方法 | |
CN105183901A (zh) | 一种数据查询引擎读取数据库表的方法及装置 | |
CN108182204A (zh) | 基于房产交易多维度数据的数据查询的处理方法及装置 | |
CN108733688B (zh) | 数据分析的方法、装置 | |
CN103678591A (zh) | 自动执行多业务单据统计处理的装置和方法 | |
CN113609141B (zh) | 一种基于api拼接的无侵入式跨库数据融合方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180518 |
|
RJ01 | Rejection of invention patent application after publication |