CN115982230A - 数据库的跨数据源查询方法、***、设备及存储介质 - Google Patents
数据库的跨数据源查询方法、***、设备及存储介质 Download PDFInfo
- Publication number
- CN115982230A CN115982230A CN202211579504.4A CN202211579504A CN115982230A CN 115982230 A CN115982230 A CN 115982230A CN 202211579504 A CN202211579504 A CN 202211579504A CN 115982230 A CN115982230 A CN 115982230A
- Authority
- CN
- China
- Prior art keywords
- query
- sub
- data source
- query task
- target data
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种数据库的跨数据源查询方法、***、设备及存储介质,该方法包括:对用户输入的目标查询语句进行分析,获取每一目标数据源对应的子查询任务;根据多个计算引擎的历史查询记录和每一子查询任务,获取每一子查询任务对应的最佳计算引擎;根据多个集群的当前实时资源状态和每一子查询任务,获取每一子查询任务对应的最佳集群;利用每一子查询任务对应的最佳集群上最佳计算引擎,在对应的目标数据源中进行查找,获取所述目标查询语句的最终查询结果。本发明可以合理分配数据资源,提高资源利用率,提升数据使用效率。
Description
技术领域
本发明涉及大数据技术领域,尤其涉及一种数据库的跨数据源查询方法、***、设备及存储介质。
背景技术
在企业管理的过程中,业务对接、业绩统计、人员管理等方面都需要构建报表***,在对报表***构建指标查询时往往涉及到多个不同的数据源,由于不同数据源的构建来自不同的用户,指标数据的定义不统一,现有的结构化查询语句(StructuredQueryLanguage,SQL)技术难以跨越不同的数据源进行查询。
传统的技术方案由于可扩展性和处理性能的限制无法满足其要求,新兴的基于消息队列的技术方案具有良好的可扩展性,需要将不同数据源数据汇聚到一个数据库中,使得数据计算链路长而复杂,资源利用率底,存储异构,容易形成数据孤岛等,频繁同步数据造成资源浪费等诸多问题。
发明内容
本发明提供一种数据库的跨数据源查询方法、***、设备及存储介质,其主要目的在于对用户输入的通用跨数据源查询语句进行自动解析,并根据解析得到的查询语句特点,为其分配相应的计算引擎和集群,可以合理分配数据资源,提高资源利用率,提升数据使用效率。
第一方面,本发明实施例提供一种数据库的跨数据源查询方法,包括:
对用户输入的目标查询语句进行分析,获取每一目标数据源对应的子查询任务,所述目标查询语句涉及多个不同数据源中的数据;
根据多个计算引擎的历史查询记录和每一子查询任务,获取每一子查询任务对应的最佳计算引擎;
根据多个集群的当前实时资源状态和每一子查询任务,获取每一子查询任务对应的最佳集群;
利用每一子查询任务对应的最佳集群上最佳计算引擎,在对应的目标数据源中进行查找,获取每一子查询任务对应的查询结果,并进一步根据每一子查询任务对应的查询结果,获取所述目标查询语句的最终查询结果。
优选地,所述对用户输入的目标查询语句进行分析,获取每一目标数据源对应的子查询任务,包括:
根据所述目标查询语句中包含的目标数据源地理位置、所述目标数据源的数据库类型、所述目标数据源中存储数据内容,获取每一目标数据源对应的子查询路径;
根据每一目标数据源对应的子查询路径,通过解析器得到抽象语法树,获取每一目标数据源对应的子查询任务,所述子查询任务为SQL查询语句。
优选地,所述根据每一目标数据源对应的子查询路径,通过解析器得到抽象语法树,获取每一目标数据源对应的子查询任务,之后还包括:
对每一目标数据源对应的子查询任务进行优化,得到每一目标数据源对应的优化后的子查询任务;
将每一目标数据源对应的优化后的子查询任务重新作为每一目标数据源对应的子查询路径。
优选地,所述对每一目标数据源对应的子查询任务进行优化,得到每一目标数据源对应的优化后的子查询任务,包括:
判断每一目标数据源对应的子查询任务中定义的属性字段是否有命名冲突,若有命名冲突,则根据属性字段的实际需求,对冲突的属性字段重新命名;
判断每一目标数据源对应的子查询任务中定义的数据单位是否为预设单位,若不是,则对不符合的子查询任务中定义的数据转换为所述预设单位;
判断每一目标数据源对应的子查询任务格式是否满足预设要求,若不满足,则对不满足的子查询任务进行格式转换。
优选地,所述每一子查询任务包括目标数据源的地理位置和目标数据源的数据库类型,所述根据多个计算引擎的历史查询记录和每一子查询任务,获取每一子查询任务对应的最佳计算引擎,包括:
对每一计算引擎的历史查询记录进行聚合,获取每一计算引擎对应的任务特征,所述任务特征包括数据处理的地理范围和数据处理的类型范围;
将每一子查询任务中目标数据源的地理位置与每一计算引擎对应的数据处理的地理范围进行比对,将每一子查询任务中目标数据源的数据库类型与每一计算引擎对应的数据处理的类型范围与进行比对,获取每一子查询任务对应的最佳计算引擎。
优选地,所述根据多个集群的当前实时资源状态和每一子查询任务,获取每一子查询任务对应的最佳集群,包括:
根据每一集群的当前实时资源状态,将所有集群划分为多个预设类型;
将所有子查询任务划分为多个预设类型;
将预设类型相同的集群作为每一子查询任务的最佳集群。
优选地,所述预设类型包括CPU集中型和IO集中型。
第二方面,本发明实施例提供一种数据库的跨数据源查询***,包括:
分析模块,用于对用户输入的目标查询语句进行分析,获取每一目标数据源对应的子查询任务,所述目标查询语句涉及多个不同数据源中的数据;
引擎模块,用于根据多个计算引擎的历史查询记录和每一子查询任务,获取每一子查询任务对应的最佳计算引擎;
集群模块,用于根据多个集群的当前实时资源状态和每一子查询任务,获取每一子查询任务对应的最佳集群;
查询模块,用于利用每一子查询任务对应的最佳集群上最佳计算引擎,在对应的目标数据源中进行查找,获取每一子查询任务对应的查询结果,并进一步根据每一子查询任务对应的查询结果,获取所述目标查询语句的最终查询结果。
第三方面,本发明实施例提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种数据库的跨数据源查询方法的步骤。
第四方面,本发明实施例提供一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述一种数据库的跨数据源查询方法的步骤。
本发明实施例提供一种数据库的跨数据源查询方法、***、设备及存储介质,通过对目标查询语句进行分析,将目标查询语句拆分为多个子查询任务,并且根据子查询任务的数据特点和每个计算引擎的历史查询记录,选取出最佳计算引擎,根据每个集群的当前实时资源状态和子查询任务的数据特点,选取出最佳集群,然后利用最佳集群上的最佳计算引擎执行对应的子查询任务,即可得到目标查询语句的查询结果。本发明实施例中对用户输入的通用跨数据源查询语句进行自动解析,并根据解析得到的子查询任务特点,为其分配相应的计算引擎和集群,可以合理分配数据资源,提高资源利用率,提升数据使用效率。
附图说明
图1为本发明实施例提供的一种数据库的跨数据源查询方法的应用场景示意图;
图2为本发明实施例提供的一种数据库的跨数据源查询方法的流程图;
图3为本发明实施例提供的一种数据库的跨数据源查询***的结构示意图;
图4为本发明实施例中提供的一种计算机设备的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为本发明实施例提供的一种数据库的跨数据源查询方法的应用场景示意图,如图1所示,首先用户在客户端输入目标查询语句,客户端接收到该目标查询语句后,将该目标查询语句发送给服务端,服务端根据该目标查询语句后执行该一种数据库的跨数据源查询方法,得到目标查询语句的查询结果。
需要说明的是,服务端可以用独立的服务器或者是多个服务器组成的服务器集群来实现。客户端可为智能手机、平板电脑、笔记本电脑、台式计算机等,但并不局限于此。客户端和服务端可以通过蓝牙、USB(UniversalSerial Bus,通用串行总线)或者其他通讯连接方式进行连接,本发明实施例在此不做限制。
本发明实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(ArtificialIntelligence,简称AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。
人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互***、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习、深度学习等几大方向。
图2为本发明实施例提供的一种数据库的跨数据源查询方法的流程图,如图2所示,该方法包括:
S210,对用户输入的目标查询语句进行分析,获取每一目标数据源对应的子查询任务,所述目标查询语句涉及多个不同数据源中的数据;
首先获取用户输入的目标查询语句,该目标查询语句为通用的查询语句,即用户经常使用、符合用户习惯的查询语句,常用的目标查询语句有简单查询、按条件查找、高级查询和为表和字段取别名,简单查询包括查询所有的字段和查询指定字段;按条件查询包括带关系运算符的查询、带in关键字的查询、带betweenand关键字的查询、空值查询、带and关键字的多条件查询和带or关键字的查询;高级查询包括聚合函数、对查询结果排序和分组查询;为表和字段取别名包括为表取别名和为字段取别名。该目标查询语句可以包括多种常用的查询语句,也可以是包括一种常用的查询语句,其查询语句的类型可以是一种上述类型,也可以是多种不同类型的查询语句组合得到。
对目标查询语句进行分析,对该目标查询语句中所涉及到的数据进行例举,该目标查询语句中涉及到的数据在不同数据源,数据源是用来存储数据,可以看做成数据库;在实际应用中,由于企业的业务可能涉及到不同地方不同城市,因此通过收集用户的历史使用数据来形成数据源,一般在不同的城市设置不同数据源。将该目标查询语句中涉及到的数据源称之为目标数据源,并将目标查询语句在每个目标数据源中作用,得到每个目标数据源对应的子查询任务。即可以将目标查询语句拆分为每个目标数据源对应的子查询语句。
本发明实施例中将目标查询语句拆分为每个目标数据源对应的子查询任务,具体的拆解方法可以是通过人工智能机器学习的方法,将用户的目标查询语句利用特征提取神经网络分解成若干关键词,根据关键词计算出每个关键词和每个目标数据源之间的匹配程度,然后将该关键词对应的数据作为该目标数据源对应的子查询任务。该特征提取神经网络在使用之前,需要先对其进行训练,并且在训练过程中不断调整特征提取神经网络的网络参数,直到某次训练的损失函数满足条件,则停止训练,并利用此时的特征提取神经网络对目标查询语句进行关键词提取。
S220,根据多个计算引擎的历史查询记录和每一子查询任务,获取每一子查询任务对应的最佳计算引擎;
由于数据源有多个,并且在目标查询语句并发时数量较多,并且不同类型的目标查询语句最适应的计算引擎也不同,因此通常在每个集群上会有不同的计算引擎,或者不同集群上会有不同的计算引擎,具体可以根据实际情况进行确定,本申请实施例对此不做具体限定。计算引擎就是一种计算规则的高度抽象聚合体,使用者按照指定的方式编写对应接口代码,然后执行就能得到需要的结果。大数据计算场景分为两种:批处理和流处理,常见的批处理计算引擎和流处理计算引擎如下;
1、批处理Hadoop承载的MapReduce,它将计算分为两个阶段,分别为Map(映射)和Reduce(归约),对于上层应用来说,就不得不想方设法去拆分算法,甚至于不得不在上层应用实现多个Job的串联,以完成一个完整的算法,例如迭代计算。
2、支持DAG计算的计算引擎,如Tez和Oozie,大多是批处理的任务,hadoop2新增计算引擎,MapReduce是第二代,优化原有MapReduce框架结构,合并非必要计算过程,减少数据存储次数,执行时间大幅提升。
3、内置DAG的计算引擎,以Spark为代表的第三代的计算引擎,特点主要是Job内部的DAG支持,以及实时计算,同时也能够很好的运行批处理的Job。Spark不同于MapReducer只提供两种简单的编程接口,它提供了多种编程接口去操作数据,这些操作接口如果使用MapReduce去实现,需要更多的代码。在批处理方面相比于MapReduce处理同样的数据,Spark所要求的硬件设施更高,MapReduce在相同的设备下所能处理的数据量会比Spark多。
4、流批处理计算引擎,Flink是一个大数据量处理的统一的引擎,主要表现在Flink对流计算的支持,以及更一步的实时性上面。当然Flink也可以支持Batch的任务,以及DAG的运算。
由上可知,不同的计算引擎各自特点不同,其擅长处理的子查询任务也不同,因此从所有的计算引擎中选取出一个最适合子查询任务的最佳计算引擎,可以最大效率利用计算引擎资源,提高子查询任务的处理效率。本发明实施例中,对于每个计算引擎,首先统计该计算引擎的历史查询记录,即该计算引擎所处理过的历史查询记录,该历史查询记录中包括历史查询请求的数据类型、数据所在地、处理时间等等属性,然后对该历史查询请求的各种属性进行统计,找出该计算引擎最适合处理的数据类型、数据所在地等等,按照该方法得到每个计算引擎最适合处理的数据类型和数据所在地。对于每个目标数据源对应的子查询任务,根据该查询任务对应的数据类型和数据所在地,与每个计算引擎对应的最合适处理的数据类型和数据所在地进行匹配,从而得到每个子查询任务对应的最佳计算引擎。
S230,根据多个集群的当前实时资源状态和每一子查询任务,获取每一子查询任务对应的最佳集群;
服务器集群是由互相连接在一起的服务器群组成的一个并行式或分布式***,由于服务器集群中的服务器运行同一个计算任务。尽管单台服务器的运算能力有限,但是将成百上千的服务器组成服务器集群后,整个***就具备了强大的运算能力,可以支持大数据分析的运算负荷。本发明实施例中由于数据有很多种,且数据量很大,因此本发明实施例中包括多个集群,然后根据每个集群的当前实时资源状态,比如在当前时刻,有的集群处理任务比较多,集群处于繁忙状态,而有的集群处理的任务比较少,集群处于空闲状态,故在分配时会尽可能将子查询任务分配到处于空闲状态的集群中,而将少量子查询任务分配到处于繁忙状态的集群中,从而合理利用集群资源;又比如,有些集群的CPU使用率较高,而有效集群的IO口使用率较高,因此将CPU使用率不那么高的子查询任务分配给CPU使用率较高的集群,将IO使用率不那么高的子查询任务分配给IO口使用率较高的集群;具体可以根据实际情况进行确定,本发明实施例对此不做具体限定。
S240,利用每一子查询任务对应的最佳集群上最佳计算引擎,在对应的数据源中进行查找,获取每一子查询任务对应的查询结果,并进一步根据每一子查询任务对应的查询结果,获取所述目标查询语句的最终查询结果。
当获取到每个子查询任务对应的最佳集群和最佳计算引擎后,利用最佳集群上的最佳计算引擎执行对应的子查询任务,即可得到每个子查询任务对应的查询结果,并根据每个子查询任务对应的查询结果,得到目标查询语句的最终查询结果。
本发明实施例提供一种数据库的跨数据源查询方法,通过对目标查询语句进行分析,将目标查询语句拆分为多个子查询任务,并且根据子查询任务的数据特点和每个计算引擎的历史查询记录,选取出最佳计算引擎,根据每个集群的当前实时资源状态和子查询任务的数据特点,选取出最佳集群,然后利用最佳集群上的最佳计算引擎执行对应的子查询任务,即可得到目标查询语句的查询结果。本发明实施例中对用户输入的通用跨数据源查询语句进行自动解析,并根据解析得到的查询语句特点,为其分配相应的计算引擎和集群,可以合理分配数据资源,提高资源利用率,提升数据使用效率。
在一些实施例中,所述对用户输入的目标查询语句进行分析,获取每一目标数据源对应的子查询任务,包括:
根据所述目标查询语句中包含的目标数据源地理位置、所述目标数据源的数据库类型、所述目标数据源中存储数据内容,获取每一目标数据源对应的子查询路径;
根据每一目标数据源对应的子查询路径,通过解析器得到抽象语法树,获取每一目标数据源对应的子查询任务,所述子查询任务为SQL查询语句。
具体地,对用户输入的目标查询语句进行分析,得到每个目标数据源对应的子查询任务,将该目标查询语句中所关联的数据称之为目标数据,由于是跨信息源,因此不同的目标数据其所在的地理位置可能不同,也可能相同,本发明实施例中地理位置可以是具体所在的城市,也可以用经纬度坐标表示,具体可以根据实际情况进行确定,本申请实施例对此不做具体限定。目标数据源的数据库类型,是指该目标数据源中所存储数据库的类型,数据库类型包括MySQL、Oracle、SqlServer、SQLite、INFORMIX、Redis、MongoDB、HBase、Neo4J、CouchDB等,具体可以根据实际目标数据源中数据库类型进行确定,本发明实施例对此不做具体限定。以及目标数据源中存储的数据内容,该数据内容包括目标数据源中数据的取值范围,所包含的数据具体类型等等,具体可以根据实际情况进行确定,本发明实施例对此不做具体限定。得到上述内容后,为每个目标数据源建立一个子查询路径,将该目标数据源涉及到的地理位置、数据库类型和数据内容作为该子查询任务的操作内容,即可得到每个目标数据对应的子查询路径。本发明实施例中子查询路径为文字路径,表示要查找的内容地理位置在哪、要查找内容的数据库类型是哪些以及要查找的数据内容是哪些。
然后根据每个目标数据源对应的子查询路径,通过解析器得到抽象语法树,得到每个目标数据源对应的子查询任务,本发明实施例中,是根据子查询路径得到子查询任务,该子查询任务是满足数据库查找需求的SQL查询语句,即通过子查询任务将子查询路径用SQL语言表达出来,可得到每个目标数据源对应的子查询任务。
在上述实施例的基础上,优选地,所述根据每一目标数据源对应的子查询路径,通过解析器得到抽象语法树,获取每一目标数据源对应的子查询任务,之后还包括:
对每一目标数据源对应的子查询任务进行优化,得到每一目标数据源对应的优化后的子查询任务;
将每一目标数据源对应的优化后的子查询任务重新作为每一目标数据源对应的子查询任务。
具体地,得到每个目标数据源对应的子查询任务之后还需要对每个目标数据对应的子查询任务进行优化,由于目标查询语句只是符合用户习惯的通用型查询语句,而不是符合计算引擎的查询语句,因此需要对目标查询语句进行优化,并将优化后的子查询任务代替原来的子查询任务,参与到后续的计算中。
在上述实施例的基础上,优选地,所述对每一目标数据源对应的子查询任务进行优化,得到每一目标数据源对应的优化后的子查询任务,包括:
判断每一目标数据源对应的子查询任务中定义的属性字段是否有命名冲突,若有命名冲突,则根据属性字段的实际需求,对冲突的属性字段重新命名;
判断每一目标数据源对应的子查询任务中定义的数据单位是否为预设单位,若不是,则对不符合的子查询任务中定的数据转换为所述预设单位;
判断每一目标数据源对应的子查询任务格式是否满足预设要求,若不满足,则对不满足的子查询任务进行格式转换。
具体地,先判断每个目标数据源对应的子查询任务中定义的属性字段是否有命名冲突,由于子查询任务是对目标查询语句进行拆分后重建的,因此多个子查询任务中定义的属性字段可能会存在重名的情况,本发明实施例对不同子查询任务中的属性字段是否重名进行判断,如果有重名的情况,则对其进行修改,得到新命名;对每个子查询任务中定义的数据单位进行筛查,对于同一个指标数据,可能有不同单位进行表达,为了方便后续查找语句的执行,必须要先统一数据单位,本发明实施例中对每种数据都指定一个预设单位,并将子查询任务中的数据与该数据对应的预设单位进行比对,如果不符合预设单位,则对该数据进行转换,得到预设单位的数据;最后,对子查询任务的格式进行判断,判断该子查询任务的格式是否满足预设要求,如果不满足,则对其进行格式转换,方便后续计算引起的执行。
在上述实施例的基础上,优选地,所述每一子查询任务包括目标数据源的地理位置和目标数据源的数据库类型,所述根据多个计算引擎的历史查询记录和每一子查询任务,获取每一子查询任务对应的最佳计算引擎,包括:
对每一计算引擎的历史查询记录进行聚合,获取每一计算引擎对应的任务特征,所述任务特征包括数据处理的地理范围和数据处理的类型范围;
将每一子查询任务中目标数据源的地理位置与每一计算引擎对应的数据处理的地理范围进行比对,将每一子查询任务中目标数据源的数据库类型与每一计算引擎对应的数据处理的类型范围与进行比对,获取每一子查询任务对应的最佳计算引擎。
本发明实施例中每个子查询任务中都包括目标数据源的地理位置和目标数据源的数据库类型,为每个目标数据源的子查询任务分配一个最佳计算引擎的步骤为:对每个计算引擎的历史查询记录进行聚合,根据该计算引擎的历史查询记录,得到该计算引擎的历史查询语句处理情况,历史查询记录中包括处理过的历史查询语句中数据源的地理位置和数据库类型,通过对该计算引擎所有历史查询语句的地理位置和数据库类型进行聚合,提炼出计算引擎最佳地理位置和数据库类型,即得到每个计算引擎对应的数据处理地理范围和数据处理类型范围;然后将每个子查询任务中目标数据源的地理位置和每个计算引擎对应的数据处理的地理范围进行比对,将每个查询任务中目标数据源的数据库类型和每个计算引擎对应的数据处理类型范围进行比对,得到每个子查询任务对应的最佳计算引擎。本发明实施例中,最佳计算引擎的数据处理类型范围包括对应的子查询任务的数据处理类型范围,最佳计算引擎的数据处理的地理范围包括对应的子查询任务的目标数据源的地理位置。
在上述实施例的基础上,优选地,所述根据多个集群的当前实时资源状态和每一子查询任务,获取每一子查询任务对应的最佳集群,包括:
根据每一集群的当前实时资源状态,将所有集群划分为多个预设类型;
将所有子查询任务划分为多个预设类型;
将预设类型相同的集群作为每一子查询任务的最佳集群。
根据每个集群的当前实时资源状态和每个子查询任务,得到每个子查询任务对应的最佳集群,具体步骤为:根据每个集群的当前资源类型,将集群划分为多个预设类型,同时也根据子查询任务的特点,将子查询任务划分为多个预设类型;然后将每个子查询任务分配给相同预设类型的集群,将其作为该子查询任务对应的最佳集群。
在一些实施例中,所述预设类型包括CPU集中型和IO集中型。
本发明实施例中,集群可以分为CPU集中型和IO集中型,CPU集中型也叫计算密集型,指的是***的硬盘、内存性能相对CPU要好很多,此时,***运作大部分的靠CPU,CPU要读/写I/O,I/O在很短的时间就可以完成;根据该特性,对***硬盘和内存性能要求较高的子查询任务分配给CPU集中型的集群,将CPU集中型的集群作为这类子查询任务的最佳集群;IO集中型为涉及到网络、磁盘IO的任务,这类任务的特点是CPU消耗很少,任务的大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度),因此对于涉及到网络、磁盘IO的子查询任务,将其分配给IO集中型的集群,将IO集中型的集群作为这类子查询任务的最佳集群。
图3为本发明实施例提供的一种数据库的跨数据源查询***的结构示意图,如图3所示,该***包括:
分析模块,用于对用户输入的目标查询语句进行分析,获取每一目标数据源对应的子查询任务,所述目标查询语句涉及多个不同数据源中的数据;
引擎模块,用于根据多个计算引擎的历史查询记录和每一子查询任务,获取每一子查询任务对应的最佳计算引擎;
集群模块,用于根据多个集群的当前实时资源状态和每一子查询任务,获取每一子查询任务对应的最佳集群;
查询模块,用于利用每一子查询任务对应的最佳集群上最佳计算引擎,在对应的目标数据源中进行查找,获取每一子查询任务对应的查询结果,并进一步根据每一子查询任务对应的查询结果,获取所述目标查询语句的最终查询结果。
本实施例为与上述方法实施例对应的***实施例,其具体实施过程与上述方法实施例相同,详情请参考上述方法实施例,本***实施例在此不再赘述。
在一些实施例中,所述分析模块包括路径单元和语句单元,其中:
所述路径单元用于根据所述目标查询语句中包含的目标数据源地理位置、所述目标数据源的数据库类型、所述目标数据源中存储数据内容,获取每一目标数据源对应的子查询路径;
所述语句单元用于根据每一目标数据源对应的子查询路径,通过解析器得到抽象语法树,获取每一目标数据源对应的子查询任务,所述子查询任务为SQL查询语句。
在一些实施例中,所述分析模块还包括优化单元,其中:
所述优化单元用于对每一目标数据源对应的子查询任务进行优化,得到每一目标数据源对应的优化后的子查询任务,将每一目标数据源对应的优化后的子查询任务重新作为每一目标数据源对应的子查询任务。
在一些实施例中,所述优化单元包括命名单元、单位单元和格式单元,其中:
所述命名单元用于判断每一目标数据源对应的子查询任务中定义的属性字段是否有命名冲突,若有命名冲突,则根据属性字段的实际需求,对冲突的属性字段重新命名;
所述单位单元用于判断每一目标数据源对应的子查询任务中定义的数据单位是否为预设单位,若不是,则对不符合的子查询任务中定的数据转换为所述预设单位;
所述格式单元用于判断每一目标数据源对应的子查询任务格式是否满足预设要求,若不满足,则对不满足的子查询任务进行格式转换。
在一些实施例中,所述每一子查询任务包括目标数据源的地理位置和目标数据源的数据库类型,所述引擎模块包括聚合单元和比对单元,其中:
所述聚合单元用于对每一计算引擎的历史查询记录进行聚合,获取每一计算引擎对应的任务特征,所述任务特征包括数据处理的地理范围和数据处理的类型范围;
所述比对单元用于将每一子查询任务中目标数据源的地理位置与每一计算引擎对应的数据处理的地理范围进行比对,将每一子查询任务中目标数据源的数据库类型与每一计算引擎对应的数据处理的类型范围与进行比对,获取每一子查询任务对应的最佳计算引擎。
在一些实施例中,所述集群模块包括类型单元、划分单元和分配单元,其中:
所述类型单元用于根据每一集群的当前实时资源状态,将所有集群划分为多个预设类型;
所述划分单元用于将所有子查询任务也划分为多个预设类型;
所述分配单元用于将与每一子查询任务的预设类型相同的集群作为对应的最佳集群。
在一些实施例中,所述预设类型包括CPU集中型和IO集中型。
上述一种数据库的跨数据源查询***中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
图4为本发明实施例中提供的一种计算机设备的结构示意图,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括计算机存储介质、内存储器。该计算机存储介质存储有操作***、计算机程序和数据库。该内存储器为计算机存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储执行一种数据库的跨数据源查询方法过程中生成或获取的数据,如目标查询语句、子查询任务。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据库的跨数据源查询方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中的一种数据库的跨数据源查询方法的步骤。或者,处理器执行计算机程序时实现一种数据库的跨数据源查询***这一实施例中的各模块/单元的功能。
在一实施例中,提供一计算机存储介质,该计算机存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中一种数据库的跨数据源查询方法的步骤。或者,该计算机程序被处理器执行时实现上述一种数据库的跨数据源查询***这一实施例中的各模块/单元的功能。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据库的跨数据源查询方法,其特征在于,包括:
对用户输入的目标查询语句进行分析,获取每一目标数据源对应的子查询任务,所述目标查询语句涉及多个不同数据源中的数据;
根据多个计算引擎的历史查询记录和每一子查询任务,获取每一子查询任务对应的最佳计算引擎;
根据多个集群的当前实时资源状态和每一子查询任务,获取每一子查询任务对应的最佳集群;
利用每一子查询任务对应的最佳集群上最佳计算引擎,在对应的目标数据源中进行查找,获取每一子查询任务对应的查询结果,并进一步根据每一子查询任务对应的查询结果,获取所述目标查询语句的最终查询结果。
2.根据权利要求1所述的数据库的跨数据源查询方法,其特征在于,所述对用户输入的目标查询语句进行分析,获取每一目标数据源对应的子查询任务,包括:
根据所述目标查询语句中包含的目标数据源地理位置、所述目标数据源的数据库类型、所述目标数据源中存储数据内容,获取每一目标数据源对应的子查询路径;
根据每一目标数据源对应的子查询路径,通过解析器得到抽象语法树,获取每一目标数据源对应的子查询任务,所述子查询任务为SQL查询语句。
3.根据权利要求2所述的数据库的跨数据源查询方法,其特征在于,所述根据每一目标数据源对应的子查询路径,通过解析器得到抽象语法树,获取每一目标数据源对应的子查询任务,之后还包括:
对每一目标数据源对应的子查询任务进行优化,得到每一目标数据源对应的优化后的子查询任务;
将每一目标数据源对应的优化后的子查询任务重新作为每一目标数据源对应的子查询任务。
4.根据权利要求3所述的数据库的跨数据源查询方法,其特征在于,所述对每一目标数据源对应的子查询任务进行优化,得到每一目标数据源对应的优化后的子查询任务,包括:
判断每一目标数据源对应的子查询任务中定义的属性字段是否有命名冲突,若有命名冲突,则根据属性字段的实际需求,对冲突的属性字段重新命名;
判断每一目标数据源对应的子查询任务中定义的数据单位是否为预设单位,若不是,则对不符合的子查询任务中定义的数据转换为所述预设单位;
判断每一目标数据源对应的子查询任务格式是否满足预设要求,若不满足,则对不满足的子查询任务进行格式转换。
5.根据权利要求1所述的数据库的跨数据源查询方法,其特征在于,所述每一子查询任务包括目标数据源的地理位置和目标数据源的数据库类型,所述根据多个计算引擎的历史查询记录和每一子查询任务,获取每一子查询任务对应的最佳计算引擎,包括:
对每一计算引擎的历史查询记录进行聚合,获取每一计算引擎对应的数据处理的地理范围和数据处理的类型范围;
将每一子查询任务中目标数据源的地理位置与每一计算引擎对应的数据处理的地理范围进行比对,将每一子查询任务中目标数据源的数据库类型与每一计算引擎对应的数据处理的类型范围与进行比对,获取每一子查询任务对应的最佳计算引擎。
6.根据权利要求1所述的数据库的跨数据源查询方法,其特征在于,所述根据多个集群的当前实时资源状态和每一子查询任务,获取每一子查询任务对应的最佳集群,包括:
根据每一集群的当前实时资源状态,将所有集群划分为多个预设类型;
将所有子查询任务划分为多个预设类型;
将预设类型相同的集群作为每一子查询任务的最佳集群。
7.根据权利要求6所述的数据库的跨数据源查询方法,其特征在于,所述预设类型包括CPU集中型和IO集中型。
8.一种数据库的跨数据源查询***,其特征在于,包括:
分析模块,用于对用户输入的目标查询语句进行分析,获取每一目标数据源对应的子查询任务,所述目标查询语句涉及多个不同数据源中的数据;
引擎模块,用于根据多个计算引擎的历史查询记录和每一子查询任务,获取每一子查询任务对应的最佳计算引擎;
集群模块,用于根据多个集群的当前实时资源状态和每一子查询任务,获取每一子查询任务对应的最佳集群;
查询模块,用于利用每一子查询任务对应的最佳集群上最佳计算引擎,在对应的目标数据源中进行查找,获取每一子查询任务对应的查询结果,并进一步根据每一子查询任务对应的查询结果,获取所述目标查询语句的最终查询结果。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述数据库的跨数据源查询方法的步骤。
10.一种计算机存储介质,所述计算机存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述数据库的跨数据源查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211579504.4A CN115982230A (zh) | 2022-12-09 | 2022-12-09 | 数据库的跨数据源查询方法、***、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211579504.4A CN115982230A (zh) | 2022-12-09 | 2022-12-09 | 数据库的跨数据源查询方法、***、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115982230A true CN115982230A (zh) | 2023-04-18 |
Family
ID=85975019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211579504.4A Pending CN115982230A (zh) | 2022-12-09 | 2022-12-09 | 数据库的跨数据源查询方法、***、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115982230A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116302457A (zh) * | 2023-05-25 | 2023-06-23 | 之江实验室 | 一种云原生工作流引擎实现方法、***、介质及电子设备 |
-
2022
- 2022-12-09 CN CN202211579504.4A patent/CN115982230A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116302457A (zh) * | 2023-05-25 | 2023-06-23 | 之江实验室 | 一种云原生工作流引擎实现方法、***、介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10831562B2 (en) | Method and system for operating a data center by reducing an amount of data to be processed | |
CN109815283B (zh) | 一种异构数据源可视化查询方法 | |
CN103678609B (zh) | 一种基于分布式关系‑对象映射处理的大数据查询的方法 | |
US20170083573A1 (en) | Multi-query optimization | |
US20230124520A1 (en) | Task execution method and storage device | |
CN105824957A (zh) | 分布式内存列式数据库的查询引擎***及查询方法 | |
CN108073696B (zh) | 基于分布式内存数据库的gis应用方法 | |
CN107291770B (zh) | 一种分布式***中海量数据的查询方法及装置 | |
CN112269887A (zh) | 一种基于图数据库的分布式*** | |
CN114443680A (zh) | 数据库管理***、相关装置、方法和介质 | |
CN115982230A (zh) | 数据库的跨数据源查询方法、***、设备及存储介质 | |
CN114969441A (zh) | 基于图数据库的知识挖掘引擎*** | |
CN112182031B (zh) | 数据查询方法及装置、存储介质、电子装置 | |
CN116775041B (zh) | 基于流计算和rete算法的实时决策引擎实现方法 | |
CN108319604B (zh) | 一种hive中大小表关联的优化方法 | |
CN108932258B (zh) | 数据索引处理方法及装置 | |
CN111125108A (zh) | 基于Lucene的HBASE二级索引方法、装置及计算机设备 | |
CN116974994A (zh) | 一种基于集群的高效能文件协作*** | |
CN113568931A (zh) | 一种数据访问请求的路由解析***及方法 | |
US12026162B2 (en) | Data query method and apparatus, computing device, and storage medium | |
CN116431635A (zh) | 基于湖仓一体的配电物联网数据实时处理***及方法 | |
CN112835932B (zh) | 业务表的批量处理方法及装置、非易失性存储介质 | |
CN115168389A (zh) | 请求处理方法以及装置 | |
KR20230033911A (ko) | Etl 프로세스의 데이터 처리 방법, 그리고 이를 구현하기 위한 장치 | |
CN112163030A (zh) | 多表批量操作方法、***及计算机设备 |
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 |