CN111078961B - 多数据源查询驱动系统、方法、装置和存储介质 - Google Patents
多数据源查询驱动系统、方法、装置和存储介质 Download PDFInfo
- Publication number
- CN111078961B CN111078961B CN201911348115.9A CN201911348115A CN111078961B CN 111078961 B CN111078961 B CN 111078961B CN 201911348115 A CN201911348115 A CN 201911348115A CN 111078961 B CN111078961 B CN 111078961B
- Authority
- CN
- China
- Prior art keywords
- query
- module
- data
- data source
- type
- 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.)
- Active
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/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9032—Query formulation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种多数据源查询驱动系统、方法、装置和存储介质,系统包括:数据盘点模块,适于提供可视化界面,盘点数据源信息,并将数据源生成对象;查询模块,适于输入数据源类型、结构化查询语言语句和返回文件类型;适配器,与数据盘点模块和查询模块分别信号连接,适于根据数据源类型匹配对象,且校对象和结构化查询语言语句,根据返回文件类型生成查询结果,并输出查询结果;返回类型构建模块,与适配器信号连接,适于根据查询结果返回类型文件。多数据源查询驱动方法采用系统来实现,多数据源查询驱动装置和存储介质用来运行多数据源查询驱动方法。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及多数据源查询驱动系统、方法、装置和存储介质。
背景技术
目前,在多数据源查询时,不管是单一的数据源查询,还是多数据源查询,针对不同的数据源连接驱动是不一样的,查询结构化查询语言语句也是不一致的,需要单独去适配,这增加了数据库使用者的成本。同时,查询完毕返回的数据也是不相同的,尤其对于非大数据开发来说,对如何和现有的系统进行集成提出了一个比较大的挑战。
发明内容
本发明旨在解决上述技术问题的至少之一。
为此,本发明的第一目的在于提供一种多数据源查询驱动系统。
本发明的第二目的在于提供一种多数据源查询驱动方法。
本发明的第三目的在于提供一种多数据源查询驱动装置。
本发明的第四目的在于提供一种存储介质。
为实现本发明的第一目的,本发明的实施例提供了一种多数据源查询驱动系统,用于查询多种数据源中的至少之一,包括:数据盘点模块,适于提供可视化界面,盘点数据源的数据源信息,并根据数据源信息将数据源生成对象;查询模块,适于输入数据源类型、结构化查询语言语句和返回文件类型;适配器,与数据盘点模块和查询模块分别信号连接,适于根据查询模块输入的数据源类型匹配对象,且校验数据盘点模块的对象和查询模块输入的结构化查询语言语句,根据查询模块输入的返回文件类型生成查询结果,并输出查询结果;返回类型构建模块,与适配器信号连接,适于根据适配器输出的查询结果返回类型文件。
通过针对不同的数据源连接驱动,能够为不同的计算平台和数据源提供统一的查询引擎,多数据源查询可以配置多种类型的数据源,同种数据源可以配置多个,做到统一查询的效果,只需要根据填写的数据源类型、结构化查询语言语句、返回类型就可以很容易获得想要的查询结果,结构简单,查询结果快速有效。
另外,本发明提供的技术方案还可以具有如下附加技术特征:
多数据源查询驱动系统还包括:内存模块,设置有多个对象类型,并与适配器和返回类型构建模块分别信号连接,适于接收适配器输出的查询结果,根据查询结果将查询出来的数据设置于对应的对象类型中保存,并向返回类型构建模块输出查询结果;对象关系建立模块,与内存模块信号连接,内存模块中设有表对象类型,适于在表对象类型中根据表与表之间的关联关系,使表主键、表外键、表描述、表名称之间耦合连接。
通过将查询出来的数据在内存模块进行存储,可以提高查询效率,在数据源内存化存储的时候,根据表之间的关联关系,使表主键、表外键、表描述、表名称之间预先建立起耦合连接的关系,查询的时候可以快速查询出结果。
上述技术方案中,多数据源查询驱动系统还包括:权值计算模块,与内存模块信号连接,适于根据查询次数对查询结果中含有的对象类型设置权值;对象优化模块,与权值计算模块信号连接,适于设定内存最大存放量,并根据权值的权值优先原则将靠后的对象设置于磁盘中保存;对象热度计算模块,与权值计算模块信号连接信,以按照权值的大小排序,并形成对象队列,适于当内存模块的内存不足时,将对象队列的队尾的对象设置于磁盘中保存。
通过针对对象的查询次数的计算、统计,以将相应数据存储于磁盘中,减小了内存模块的存储量,进一步提高了查询效率。
上述任一技术方案中,多数据源查询驱动系统还包括:大数据量落地模块:与内存模块信号连接,以将内存模块保存不下的数据设置于磁盘中保存。
大数据量落地模块可以采用HDFS(Hadoop Distributed File System)格式的文件落地,将内存放不下的数据存放到磁盘里面,解决了多次数据连接产生的时间成本问题,进一步提高了查询效率。
上述任一技术方案中,适配器包括:目录单元,与数据盘点模块信号连接,以根据数据盘点模块生成的对象,定义与对象的结构化查询语言语义相关的元数据与命名空间;解析单元,与目录单元信号连接,适于把结构化查询语言转化成抽象语法树;校正单元,与目录单元和解析单元分别信号连接,适于分别获取目录单元的对象的结构化查询语言语义相关的元数据和抽象语法树,以根据元数据校正解析单元转化后的抽象语法树;查询优化单元,与校正单元信号连接,适于将校正单元校正后的抽象语法树转化成物理执行计划,并优化物理执行计划;语句生成单元,与查询优化单元信号连接,适于反向将查询优化单元优化后的物理执行计划转化成内部可执行的结构化查询语言语句;文件生成单元,与语句生成单元信号连接,适于根据查询模块输入的返回文件类型生成类型文件,并将类型文件作为生成的查询结果。
通过在目录单元内定义存储空间,通过适配器内部的计算和输出,将查询结果返回到返回类型构建模块,使返回类型构建模块按照在查询模块输入的返回文件类型返回文件,简化了查询过程,提高了查询效率。
为实现本发明的第二目的,本发明的实施例提供了一种多数据源查询驱动方法,用于查询多种数据源中的至少之一,采用多数据源查询驱动系统,多数据源查询驱动方法包括:采用数据盘点模块盘点数据源的数据源信息,并将数据源生成对象;采用查询模块输入数据源类型、结构化查询语言语句和返回文件类型;采用适配器根据查询模块输入的数据源类型匹配数据盘点模块的对象,且校验对象和查询模块输入的结构化查询语言语句,以生成查询结果,并输出查询结果;采用返回类型构建模块根据适配器输出的查询结果按查询模块输入的返回文件类型返回文件。
通过将数据源生成对象,并采用适配器校验对象和查询模块输入的结构化查询语言语句,以生成查询结果,并输出查询结果,再根据输入的返回文件类型返回文件,整个查询过程自动完成,提高了查询效率。
上述技术方案中,多数据源查询驱动方法还包括:通过内存模块设置多个对象类型,并接收适配器输出的查询结果,且根据查询结果将查询出来的数据保存于对应的对象类型中,并向返回类型构建模块输出查询结果;通过对象关系建立模块对内存模块中的表对象类型根据表与表之间的关联关系,使表主键、表外键、表描述、表名称之间耦合连接。
通过将查询出来的数据放到对应的内部对象中,可以以提高查询效率。另外,在数据源内存化存储的时候,根据表之间的关联关系,使表主键、表外键、表描述、表名称之间预先建立起耦合连接的关系,查询的时候可以快速查询出结果。
上述任一技术方案中,采用适配器根据查询模块输入的数据源类型匹配数据盘点模块的对象,且校验对象和查询模块输入的结构化查询语言语句,以生成查询结果,并输出查询结果的步骤包括:采用目录单元根据数据盘点模块生成的对象,定义与对象的结构化查询语言语义相关的元数据与命名空间;采用解析单元把结构化查询语言转化成抽象语法树;采用校正单元获取目录单元的对象的结构化查询语言语义相关的元数据和解析单元转化的抽象语法树,以根据元数据校正解析单元转化后的抽象语法树;采用查询优化单元将校正单元校正后的抽象语法树转化成物理执行计划,并优化物理执行计划;采用语句生成单元反向将查询优化单元优化后的物理执行计划转化成内部可执行的结构化查询语言语句;采用文件生成单元根据查询模块输入的返回文件类型生成类型文件,并将类型文件作为生成的查询结果。
通过定义存储空间,再把结构化查询语言转化成抽象语法树,校正抽象语法树并将完成校正的抽象语法树转化成物理执行计划、并优化物理执行计划,然后反向将物理执行计划转化成内部可执行的结构化查询语言语句,按照返回文件类型返回文件,只在适配器内部就可完成查询处理,简化了处理过程,直接输出查询结果,提高了查询效率。
为实现本发明的第三目的,本发明的实施例提供了一种多数据源查询驱动装置,包括:存储器,存储有计算机程序;处理器,执行计算机程序;其中,处理器在执行计算机程序时,实现多数据源查询驱动方法的步骤。
本发明的实施例提供的多数据源查询驱动装置实现如本发明任一实施例的多数据源查询驱动方法的步骤,因此其具有本发明任一实施例的多数据源查询驱动法的有益效果。
为实现本发明的第四目的,本发明的实施例提供了一种存储介质,包括:存储介质存储有计算机程序,计算机程序被执行时,实现多数据源查询驱动方法的步骤。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
图1为本发明第一个实施例的多数据源查询驱动系统的组成示意图;
图2为本发明第二个实施例的多数据源查询驱动系统的组成示意图;
图3为本发明第三个实施例的多数据源查询驱动系统的组成示意图;
图4为本发明第四个实施例的多数据源查询驱动系统的组成示意图;
图5为本发明一个实施例的多数据源查询驱动系统的适配器的组成示意图;
图6为本发明的一个实施例的多数据源查询驱动方法的组成示意图。
其中,附图中的附图标记与部件名称之间的对应关系为:
10:多数据源查询驱动系统,100:数据盘点模块,200:适配器,210:目录单元,220:解析单元,230:校正单元,240:查询优化单元,250:语句生成单元,260:文件生成单元,300:内存模块,400:返回类型构建模块,500:查询模块,600:对象关系建立模块,700:权值计算模块,800:对象优化模块,900:对象热度计算模块,1000:大数据量落地模块。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
目前,对于跨数据源的查询,Presto数据查询引擎(Facebook开发的一种数据查询引擎)可以解决跨源的处理,但是需要预设一些数据源,对数据源的支持也是有限的,例如sparksql数据查询引擎(一种通用的大数据快速处理引擎)查询有一定的局限性;kylin数据查询引擎(一种开源的分布式分析引擎)解决了偏于分析的问题,主要使用预处理过程,采用空间来换时间的策略,划分的维度越细所需要的存储是越多的,这对于存储资源是一种严重的挑战。
因此,本发明的实施例,除了要解决自主查询的问题,还要解决存储的问题,以进一步提高查询效率。
下面参照附图描述本发明一些实施例的技术方案。
实施例1:
如图1所示,本实施例提供了一种多数据源查询驱动系统10,用于查询多种数据源中的至少之一,包括:数据盘点模块100、查询模块500、适配器200和返回类型构建模块400,其中,数据盘点模块100适于提供可视化界面,盘点数据源的数据源信息,并根据数据源信息将数据源生成对象,查询模块500适于输入数据源类型、结构化查询语言(英文名称:Structured Query Language,简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统)语句和返回文件类型,适配器200与数据盘点模块100和查询模块500分别信号连接,适于根据查询模块500输入的数据源类型匹配对象,且校验数据盘点模块100的对象和查询模块500输入的结构化查询语言语句,根据查询模块500输入的返回文件类型生成查询结果,并输出查询结果,返回类型构建模块400与适配器200信号连接,适于根据适配器200输出的查询结果返回类型文件。
本实施例中,数据盘点模块100用于盘点数据源信息,其中,目前可支持的数据源信息有mysql.Oracle、sqlServer、Postgresql、Hive、Hbase、sparksql、Kylin、flink、Solr等,其中,mysql是一个精巧的SQL数据库管理系统,而且是开源的数据管理系统,是一个真正的多用户、多线程SQL数据库服务器。sqlServer是由Microsoft开发和推广的关系数据库管理系统。Postgresql是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统。Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制,其中Hadoop是一种分布式系统基础架构。Hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hbase是一个分布式的、面向列的开源数据库。sparksql是Spark的一个模块,Spark是大数据计算框架,是一种基于内存计算的框架,是一种通用的大数据快速处理引擎。Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析能力以支持超大规模数据。Flink是新的stream计算引擎。Solr是一个独立的企业级搜索应用服务器。
数据盘点模块100设置有一个接口,以便于动态添加,人工扩展,采用动态配置文件的方式为配置数据源类型,数据源版本,数据源schema(数据库对象的集合)账户,密码执行即可。
适配器200(英文名称:Adapter)是一个接口转换器,适配器200可以是一个独立的硬件接口设备,允许硬件或电子接口与其它硬件或电子接口相连,也可以是信息接口。由于在数据盘点模块100的内部有不同的控制器来生成对象schema:数据源类型数据源schema数据源名称,利用JavaCC解析器,对sql进行校验,并生成和输出查询结果。
返回类型构建模块400根据查询结果配置文件,对于查询返回值进行封装,返回的文件格式类型包括但并部限于json、ResultSet、list、hdfs文件,其中,json(英文名称:JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式,ResultSet是管理结果集格式,list在编程语言中是标准类库中的一个类,可以简单视之为双向链表,以线性列的方式管理物件集合,hdfs(Hadoop Distributed File System)是Hadoop分布式文件系统格式。返回的文件格式类型可以根据不同的需要来进行设定,能够做到所有数据统一返回。
本实施例针对不同的数据源连接驱动,可以分别进行处理。如果是单个数据源查询,只需要配置数据源类型、版本号、采用自定义Schema,对外提供一个统一的接口,开发人员不需要关心数据库驱动配置和数据连接,释放问题。对于单独数据源的时候,独立于编程语言和数据源,支持关系代数、可定制的逻辑规划规则和基于成本模型优化的查询引擎,支持物化视图(materialized view)的管理(创建、丢弃、持久化和自动识别)。跨数据源查询,本身会缓存Schema、Function等信息(也可以在内存里缓存),支持复合指标计算、常用聚合函数等,因此,多数据源查询可以配置多种类型的数据源,同种数据源可以配置多个,统一存储实现跨源查询的问题。
实施例2:
如图2所示,本实施例提供了一种多数据源查询驱动系统10,除上述实施例的技术特征之外,本实施例还包括以下技术特征。
多数据源查询驱动系统10还包括:内存模块300和对象关系建立模块600,其中,内存模块300设置有多个对象类型,并与适配器200和返回类型构建模块400分别信号连接,适于接收适配器200输出的查询结果,根据查询结果将查询出来的数据设置于对应的对象类型中保存,并向返回类型构建模块400输出查询结果,对象关系建立模块600与内存模块300信号连接,内存模块300中设有表对象类型,适于在表对象类型中根据表与表之间的关联关系,使表主键、表外键、表描述、表名称之间耦合连接。
本实施例中,将查询出来的数据进行存储,可以提高查询效率。存储方式一般有两种:内部存储和存储于介质中,例如可以存储于磁盘。其中,内部存储可以通过设置内存模块300来实现,首先在内存模块300内设置对象类型,对象类型的实现是通过内部来定义不同类型,例如,实例对象(InstanceStruct)、数据源对象(DatabasesStruct)、表对象(TableStruct)、字段对象(ColumnStruct)、关系对象(RelationStruct),设置对象类型的目的主要是采用key-value数据库(Key-value数据库是一种以键值对存储数据的一种数据库)方式存放各类属性信息。因此可以将查询出来的数据放到对应的内部对象中,以提高查询效率。
另外,在数据源内存化存储的时候,根据表之间的关联关系,使表主键、表外键、表描述、表名称之间预先建立起耦合连接的关系,查询的时候可以快速查询出结果。
实施例3:
如图3所示,本实施例提供了一种多数据源查询驱动系统10,除上述实施例的技术特征之外,本实施例还包括以下技术特征。
多数据源查询驱动系统10还包括:权值计算模块700、对象优化模块800和对象热度计算模块900,其中,权值计算模块700与内存模块300信号连接,适于根据查询次数对查询结果中含有的对象类型设置权值,对象优化模块800与权值计算模块700信号连接,适于设定内存最大存放量,并根据权值的权值优先原则将靠后的对象设置于磁盘中保存,对象热度计算模块900,与权值计算模块700信号连接信,以按照权值的大小排序,并形成对象队列,适于当内存模块300的内存不足时,将对象队列的队尾的对象设置于磁盘中保存。
通过权值计算模块700根据查询次数计算权值,查询一次中含有该对象的时候,它的权值就加1,通过对象优化模块800按照权值优先规则,将权值较小的对象存放到磁盘中保存,通过对象热度计算模块900计算查询中包含的对象的热度,此刻维护一个对象队列,按照权值大小排序,当内存不足的情况下,首先将队尾的对象放到磁盘做存储。
本实施例中,通过针对对象的查询次数的计算、统计,以将相应数据存储于磁盘中,减小了内存模块300的存储量,进一步提高了查询效率。
实施例4:
如图4所示,本实施例提供了一种多数据源查询驱动系统10,除上述实施例的技术特征之外,本实施例还包括以下技术特征。
多数据源查询驱动系统100还包括:大数据量落地模块1000,大数据量落地模块1000与内存模块300信号连接,以将内存模块300保存不下的数据设置于磁盘中保存。
大数据量落地模块1000可以采用hdfs落地,将内存放不下的数据存放到磁盘里面,解决多次数据连接产生的时间成本,进一步提高了查询效率。
实施例5:
如图5所示,本实施例提供了一种多数据源查询驱动系统10,除上述实施例的技术特征之外,本实施例还包括以下技术特征。
适配器200包括:目录单元210、解析单元220、校正单元230、查询优化单元240、语句生成单元250和文件生成单元260,其中,目录单元210与数据盘点模块100信号连接,以根据数据盘点模块100生成的对象,定义与对象的结构化查询语言语义相关的元数据与命名空间,解析单元220与目录单元210信号连接,适于把结构化查询语言转化成抽象语法树,校正单元230与目录单元210和解析单元220分别信号连接,适于分别获取目录单元210的对象的结构化查询语言语义相关的元数据和抽象语法树,以根据元数据校正解析单元220转化后的抽象语法树,查询优化单元240与校正单元230信号连接,适于将校正单元230校正后的抽象语法树转化成物理执行计划,并优化物理执行计划,语句生成单元250与查询优化单元240信号连接,适于反向将查询优化单元240优化后的物理执行计划转化成内部可执行的结构化查询语言语句;文件生成单元260与语句生成单元250信号连接,适于根据查询模块500输入的返回文件类型生成类型文件,并将类型文件作为生成的查询结果。
本实施例中,通过提供标准的SQL语言查询底层各种数据源的一个工具,可以为不同计算平台和数据源提供统一的查询引擎,上层尽量简单的封装请求,所以它定义为标准的SQL,中间通过构建JDBC或ODBC来访问“Calcite数据库”,而实际上,Calcite并没有数据库,需要在代码里告诉Calcite,虚拟出来的表是什么、字段是什么、字段类型是什么等,整体抽象为一个个Schema,就查虚拟出来东西,不用关心底层真正对接了哪些数据源,底层通过定义各种adapter,来对接不同的查询和存储引擎,例如es、hbase、redis、mysql,HDFS等,这也就决定了它其实没有真正的“物理执行计划”。这里的JDBC(英文名称:Java DatabaseConnectivity,简称JDBC)是一种Java数据库连接,是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口。ODBC(英文名称:Open Database Connectivity,简称ODBC)是开放数据库连接是为解决异构数据库间的数据共享而产生的,现已成为WOSA(英文名称:The Windows Open System Architecture)的主要部分和基于Windows环境的一种数据库访问接口标准ODBC为异构数据库访问提供统一接口。
通过在目录单元210内定义存储空间,主要定义SQL语义相关的元数据与命名空间,再通过解析单元220主要把SQL转化成AST,通过校正单元230调取目录单元210的数据来校正AST,以通过查询优化单元240将完成校正的AST转化成物理执行计划、并优化物理执行计划,语句生成单元250反向将物理执行计划转化成内部可执行的SQL语句,如果是跨数据源,根据内存就计算,然后通过文件生成单元260生成配置的返回结果。通过适配器200内部的计算和输出,将查询结果返回到返回类型构建模块400,使返回类型构建模块400按照在查询模块500输入的返回文件类型返回文件,并作为查询结果在数据盘点模块100进行显示,使查询结果可视化。
实施例6:
如图6所示,本发明的实施例提供了一种多数据源查询驱动方法,用于查询多种数据源中的至少之一,采用多数据源查询驱动系统10,多数据源查询驱动方法包括:
S102:采用数据盘点模块100盘点数据源的数据源信息,并将数据源生成对象;
S104:采用查询模块500输入数据源类型、结构化查询语言语句和返回文件类型;
S106:采用适配器200根据查询模块500输入的数据源类型匹配数据盘点模块100的对象,且校验对象和查询模块500输入的结构化查询语言语句,以生成查询结果,并输出查询结果;
S108:采用返回类型构建模块400根据适配器200输出的查询结果按查询模块500输入的返回文件类型返回文件。
通过将数据源生成对象,并采用适配器200校验对象和查询模块500输入的结构化查询语言语句,以生成查询结果,并输出查询结果,再根据输入的返回文件类型返回文件,整个查询过程自动完成,提高了查询效率。
实施例7:
本实施例提供了一种多数据源查询驱动方法,除上述实施例的技术特征之外,本实施例还包括以下技术特征。
多数据源查询驱动方法还包括:
通过内存模块300设置多个对象类型,并接收适配器200输出的查询结果,且根据查询结果将查询出来的数据保存于对应的对象类型中,并向返回类型构建模块400输出查询结果;
通过对象关系建立模块600对内存模块300中的表对象类型根据表与表之间的关联关系,使表主键、表外键、表描述、表名称之间耦合连接。
本实施例中,将查询出来的数据放到对应的内部对象中,可以以提高查询效率。另外,在数据源内存化存储的时候,根据表之间的关联关系,使表主键、表外键、表描述、表名称之间预先建立起耦合连接的关系,查询的时候可以快速查询出结果。
实施例8:
本实施例提供了一种多数据源查询驱动方法,除上述实施例的技术特征之外,本实施例还包括以下技术特征。
采用适配器200根据查询模块500输入的数据源类型匹配数据盘点模块100的对象,且校验对象和查询模块500输入的结构化查询语言语句,以生成查询结果,并输出查询结果的步骤包括:
采用目录单元210根据数据盘点模块100生成的对象,定义与对象的结构化查询语言语义相关的元数据与命名空间;
采用解析单元220把结构化查询语言转化成抽象语法树;
采用校正单元230获取目录单元210的对象的结构化查询语言语义相关的元数据和解析单元220转化的抽象语法树,以根据元数据校正解析单元220转化后的抽象语法树;
采用查询优化单元240将校正单元230校正后的抽象语法树转化成物理执行计划,并优化物理执行计划;
采用语句生成单元250反向将查询优化单元240优化后的物理执行计划转化成内部可执行的结构化查询语言语句;
采用文件生成单元260根据查询模块500输入的返回文件类型生成类型文件,并将类型文件作为生成的查询结果。
通过定义存储空间,再把SQL转化成AST,校正AST并将完成校正的AST转化成物理执行计划、并优化物理执行计划,然后反向将物理执行计划转化成内部可执行的SQL语句,按照返回文件类型返回文件,只在适配器内部就可完成查询处理,简化了处理过程,直接输出查询结果,提高了查询效率。
实施例9:
本发明的实施例提供了一种多数据源查询驱动装置,包括:存储器和处理器,其中,存储器存储有计算机程序,处理器,执行计算机程序,处理器在执行计算机程序时,实现多数据源查询驱动方法的步骤。
实施例10:
本发明的实施例提供了一种存储介质,包括:存储介质存储有计算机程序,计算机程序被执行时,实现多数据源查询驱动方法的步骤。
综上,本发明实施例的有益效果为:
1.只需要输入数据源类型、sql语句、返回类型,就可以根据适配器的查询引擎返回想要的查询结果,自动查询,查询方式简单,有效,可以解决跨源查询的问题。
2.解决了查询结果的存储问题,提高了查询效率。
3.解决了多次数据连接产生的时间成本问题,进一步提高了查询效率。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种多数据源查询驱动系统,用于查询多种数据源中的至少之一,其特征在于,包括:
数据盘点模块,适于提供可视化界面,盘点数据源的数据源信息,并根据所述数据源信息将所述数据源生成对象;
查询模块,适于输入数据源类型、结构化查询语言语句和返回文件类型;
适配器,与所述数据盘点模块和所述查询模块分别信号连接,适于根据所述查询模块输入的所述数据源类型匹配所述对象,且校验所述数据盘点模块的所述对象和所述查询模块输入的所述结构化查询语言语句,根据所述查询模块输入的所述返回文件类型生成查询结果,并输出所述查询结果;
返回类型构建模块,与所述适配器信号连接,适于根据所述适配器输出的所述查询结果返回类型文件;内存模块,设置有多个对象类型,并与所述适配器和所述返回类型构建模块分别信号连接,适于接收所述适配器输出的所述查询结果,根据所述查询结果将查询出来的数据设置于对应的所述对象类型中保存,并向所述返回类型构建模块输出所述查询结果;
对象关系建立模块,与所述内存模块信号连接,所述内存模块中设有表对象类型,适于在所述表对象类型中根据表与表之间的关联关系,使表主键、表外键、表描述、表名称之间耦合连接。
2.根据权利要求1所述的多数据源查询驱动系统,其特征在于,还包括:
权值计算模块,与所述内存模块信号连接,适于根据查询次数对所述查询结果中含有的所述对象类型设置权值;
对象优化模块,与所述权值计算模块信号连接,适于设定内存最大存放量,并根据所述权值的权值优先原则将靠后的对象设置于磁盘中保存;
对象热度计算模块,与所述权值计算模块信号连接信,以按照所述权值的大小排序,并形成对象队列,适于当内存模块的内存不足时,将所述对象队列的队尾的对象设置于磁盘中保存。
3.根据权利要求1所述的多数据源查询驱动系统,其特征在于,还包括:
大数据量落地模块:与所述内存模块信号连接,以将所述内存模块保存不下的数据设置于磁盘中保存。
4.根据权利要求1至3中任一项所述的多数据源查询驱动系统,其特征在于,所述适配器包括:
目录单元,与所述数据盘点模块信号连接,以根据所述数据盘点模块生成的所述对象,定义与所述对象的结构化查询语言语义相关的元数据与命名空间;
解析单元,与所述目录单元信号连接,适于把结构化查询语言转化成抽象语法树;
校正单元,与所述目录单元和解析单元分别信号连接,适于分别获取目录单元的所述对象的结构化查询语言语义相关的元数据和抽象语法树,以根据所述元数据校正解析单元转化后的抽象语法树;
查询优化单元,与所述校正单元信号连接,适于将校正单元校正后的抽象语法树转化成物理执行计划,并优化所述物理执行计划;
语句生成单元,与所述查询优化单元信号连接,适于反向将所述查询优化单元优化后的所述物理执行计划转化成内部可执行的结构化查询语言语句;
文件生成单元,与所述语句生成单元信号连接,适于根据所述查询模块输入的返回文件类型生成类型文件,并将所述类型文件作为生成的所述查询结果。
5.一种多数据源查询驱动方法,用于查询多种数据源中的至少之一,其特征在于,采用如权利要求1至4中任一项所述的多数据源查询驱动系统,所述多数据源查询驱动方法包括:
采用数据盘点模块盘点数据源的数据源信息,并将所述数据源生成对象;
采用查询模块输入数据源类型、结构化查询语言语句和返回文件类型;
采用适配器根据所述查询模块输入的所述数据源类型匹配所述数据盘点模块的所述对象,且校验所述对象和所述查询模块输入的所述结构化查询语言语句,以生成查询结果,并输出所述查询结果;
采用返回类型构建模块根据所述适配器输出的所述查询结果按所述查询模块输入的返回文件类型返回文件;
通过内存模块设置多个对象类型,并接收所述适配器输出的所述查询结果,且根据所述查询结果将查询出来的数据保存于对应的所述对象类型中,并向所述返回类型构建模块输出所述查询结果;
通过对象关系建立模块对内存模块中的表对象类型根据表与表之间的关联关系,使表主键、表外键、表描述、表名称之间耦合连接。
6.根据权利要求5所述的多数据源查询驱动方法,其特征在于,所述采用适配器根据所述查询模块输入的所述数据源类型匹配所述数据盘点模块的所述对象,且校验所述对象和所述查询模块输入的所述结构化查询语言语句,以生成查询结果,并输出所述查询结果的步骤包括:
采用目录单元根据所述数据盘点模块生成的所述对象,定义与所述对象的结构化查询语言语义相关的元数据与命名空间;
采用解析单元把结构化查询语言转化成抽象语法树;
采用校正单元获取目录单元的所述对象的结构化查询语言语义相关的元数据和所述解析单元转化的抽象语法树,以根据所述元数据校正解析单元转化后的抽象语法树;
采用查询优化单元将校正单元校正后的抽象语法树 转化成物理执行计划,并优化所述物理执行计划;
采用语句生成单元反向将所述查询优化单元优化后的所述物理执行计划转化成内部可执行的结构化查询语言语句;
采用文件生成单元根据所述查询模块输入的返回文件类型生成类型文件,并将所述类型文件作为生成的所述查询结果。
7.一种多数据源查询驱动装置,其特征在于,包括:
存储器,存储有计算机程序;
处理器,执行所述计算机程序;
其中,所述处理器在执行所述计算机程序时,实现如权利要求5或6所述的多数据源查询驱动方法的步骤。
8.一种存储介质,其特征在于,包括:
所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现如权利要求5或6所述的多数据源查询驱动方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911348115.9A CN111078961B (zh) | 2019-12-24 | 2019-12-24 | 多数据源查询驱动系统、方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911348115.9A CN111078961B (zh) | 2019-12-24 | 2019-12-24 | 多数据源查询驱动系统、方法、装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111078961A CN111078961A (zh) | 2020-04-28 |
CN111078961B true CN111078961B (zh) | 2023-09-15 |
Family
ID=70317393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911348115.9A Active CN111078961B (zh) | 2019-12-24 | 2019-12-24 | 多数据源查询驱动系统、方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111078961B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506951B (zh) * | 2020-12-07 | 2023-02-24 | 海南车智易通信息技术有限公司 | 数据库慢查询日志的处理方法、服务器、计算设备和系统 |
CN112764749B (zh) * | 2021-01-18 | 2023-04-25 | 电子科技大学 | 一种软件功能界面组的生成方法及系统 |
CN113568930A (zh) * | 2021-08-12 | 2021-10-29 | 威讯柏睿数据科技(北京)有限公司 | 一种分布式内存数据查询优化的方法和设备 |
CN113901083B (zh) * | 2021-09-14 | 2023-05-12 | 北京柏睿数据技术股份有限公司 | 基于多解析器的异构数据源操作资源解析定位方法和设备 |
CN116521142B (zh) * | 2023-06-29 | 2023-10-03 | 速度科技股份有限公司 | 基于Presto扩展的时空大数据SQL引擎的实现方法 |
CN117453731A (zh) * | 2023-12-22 | 2024-01-26 | 北京宇信科技集团股份有限公司 | 一种多源数据查询系统及多源数据查询方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6704726B1 (en) * | 1998-12-28 | 2004-03-09 | Amouroux Remy | Query processing method |
CN102163223A (zh) * | 2011-04-02 | 2011-08-24 | 锐词文化发展(北京)有限公司 | 一种后台数据自助式查询方法和装置 |
CN107066499A (zh) * | 2016-12-30 | 2017-08-18 | 江苏瑞中数据股份有限公司 | 面向异构存储多源数据管理及可视化系统的数据查询方法 |
CN108090154A (zh) * | 2017-12-08 | 2018-05-29 | 广州市申迪计算机系统有限公司 | 一种异构多源数据融合查询方法及装置 |
CN108536728A (zh) * | 2018-02-24 | 2018-09-14 | 国家计算机网络与信息安全管理中心 | 一种数据查询方法和装置 |
CN109582695A (zh) * | 2018-12-04 | 2019-04-05 | 用友网络科技股份有限公司 | 一种微服务架构下数据通用查询方法及查询系统 |
CN110032575A (zh) * | 2019-04-15 | 2019-07-19 | 网易(杭州)网络有限公司 | 数据查询方法、装置、设备和存储介质 |
CN110162528A (zh) * | 2019-05-24 | 2019-08-23 | 安徽芃睿科技有限公司 | 海量大数据检索方法及系统 |
CN110399388A (zh) * | 2019-07-29 | 2019-11-01 | 中国工商银行股份有限公司 | 数据查询方法、系统和设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7469248B2 (en) * | 2005-05-17 | 2008-12-23 | International Business Machines Corporation | Common interface to access catalog information from heterogeneous databases |
US7702625B2 (en) * | 2006-03-03 | 2010-04-20 | International Business Machines Corporation | Building a unified query that spans heterogeneous environments |
US20150261507A1 (en) * | 2014-03-14 | 2015-09-17 | Raghuvira Bhagavan | Validating sql queries in a report |
-
2019
- 2019-12-24 CN CN201911348115.9A patent/CN111078961B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6704726B1 (en) * | 1998-12-28 | 2004-03-09 | Amouroux Remy | Query processing method |
CN102163223A (zh) * | 2011-04-02 | 2011-08-24 | 锐词文化发展(北京)有限公司 | 一种后台数据自助式查询方法和装置 |
CN107066499A (zh) * | 2016-12-30 | 2017-08-18 | 江苏瑞中数据股份有限公司 | 面向异构存储多源数据管理及可视化系统的数据查询方法 |
CN108090154A (zh) * | 2017-12-08 | 2018-05-29 | 广州市申迪计算机系统有限公司 | 一种异构多源数据融合查询方法及装置 |
CN108536728A (zh) * | 2018-02-24 | 2018-09-14 | 国家计算机网络与信息安全管理中心 | 一种数据查询方法和装置 |
CN109582695A (zh) * | 2018-12-04 | 2019-04-05 | 用友网络科技股份有限公司 | 一种微服务架构下数据通用查询方法及查询系统 |
CN110032575A (zh) * | 2019-04-15 | 2019-07-19 | 网易(杭州)网络有限公司 | 数据查询方法、装置、设备和存储介质 |
CN110162528A (zh) * | 2019-05-24 | 2019-08-23 | 安徽芃睿科技有限公司 | 海量大数据检索方法及系统 |
CN110399388A (zh) * | 2019-07-29 | 2019-11-01 | 中国工商银行股份有限公司 | 数据查询方法、系统和设备 |
Non-Patent Citations (3)
Title |
---|
A Novel Approach for Multi-source Heterogeneous Database Integration;Vijay Maruti Shelake 等;《2013 International Conference on Machine Intelligence and Research Advancement》;全文 * |
结构化大数据存储与查询优化关键技术;徐涛;《中国优秀硕士学位论文全文数据库》;全文 * |
面向数据空间的异构数据索引方法研究;王红卫;《中国优秀硕士学位论文全文数据库》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111078961A (zh) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111078961B (zh) | 多数据源查询驱动系统、方法、装置和存储介质 | |
US10831753B2 (en) | Query plan generation and execution in a relational database management system with a temporal-relational database | |
Tan et al. | Enabling query processing across heterogeneous data models: A survey | |
CN107402988B (zh) | 一种分布式NewSQL数据库系统和半结构化数据查询方法 | |
Zhou et al. | SCOPE: parallel databases meet MapReduce | |
Sikka et al. | Efficient transaction processing in SAP HANA database: the end of a column store myth | |
Stadler et al. | Making interoperability persistent: A 3D geo database based on CityGML | |
EP2660732B1 (en) | Unified table query processing | |
US20170083573A1 (en) | Multi-query optimization | |
WO2012125166A1 (en) | Data source analytics | |
US20100235344A1 (en) | Mechanism for utilizing partitioning pruning techniques for xml indexes | |
US11893026B2 (en) | Advanced multiprovider optimization | |
CN108009270A (zh) | 一种基于分布式内存计算的文本检索方法 | |
Sinthong et al. | Aframe: Extending dataframes for large-scale modern data analysis | |
Azevedo et al. | Modern Federated Database Systems: An Overview. | |
CN115934673A (zh) | 用于促进元数据标识和导入的系统和方法 | |
CN115774730A (zh) | 具有公共数据结构的阶段式查询编译 | |
US10558661B2 (en) | Query plan generation based on table adapter | |
US9870399B1 (en) | Processing column-partitioned data for row-based operations in a database system | |
Bondiombouy et al. | Multistore big data integration with CloudMdsQL | |
Liu | Data warehousing technologies for large-scale and right-time data | |
Sinthong et al. | AFrame: Extending DataFrames for large-scale modern data analysis (Extended Version) | |
US9058344B2 (en) | Supporting flexible types in a database | |
CN115905164A (zh) | 对数据库工件的扩展的元数据的标识和导入 | |
US10169410B2 (en) | Merge of stacked calculation views with higher level programming language logic |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |