CN112699141A - 多源异构数据的数据查询方法、装置、存储介质及设备 - Google Patents
多源异构数据的数据查询方法、装置、存储介质及设备 Download PDFInfo
- Publication number
- CN112699141A CN112699141A CN202011588689.6A CN202011588689A CN112699141A CN 112699141 A CN112699141 A CN 112699141A CN 202011588689 A CN202011588689 A CN 202011588689A CN 112699141 A CN112699141 A CN 112699141A
- Authority
- CN
- China
- Prior art keywords
- data
- query
- sub
- source
- structured query
- 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
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000004458 analytical method Methods 0.000 claims description 15
- 238000000638 solvent extraction Methods 0.000 claims description 8
- 230000010354 integration Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 238000012423 maintenance Methods 0.000 abstract description 3
- 238000005192 partition Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 7
- 238000005457 optimization Methods 0.000 description 6
- 241001178520 Stomatepia mongo Species 0.000 description 5
- 238000013507 mapping Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 241000508269 Psidium Species 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种多源异构数据的数据查询方法、装置、计算机可读存储介质及设备,该方法针对多源异构数据,对所接收到结构化查询语句进行解析,确定需要查询的子数据源及查询语义,生成适应于子数据源类型的查询语句,对每一子数据源分别进行查询,获得相应地子目标信息,并将所获取的子目标信息按照查询语义整合为目标信息,从而使得利用一个查询接口即可实现对多源异构数据的查询,简化了数据查询的查询接口,避免了对于多种数据源类型的查询语义维护,对于多源异构数据具有非常强的适用性,显著增加数据查询代码的可复用性。有效提高查询效率,节约计算资源和存储资源。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种多源异构数据的数据查询方法、装置、计算机可读存储介质及设备。
背景技术
随着大数据技术的快速发展,多种结构的数据库也都得到了广泛的应用。很多企业的数据***也都是基于多种结构的数据库构建的。例如,对于即时性要求较高的数据***,可以基于mysql、oracle、sqlServer、mongo等关系型数据库架构进行构建;而对于即时性要求一般的数据***,可以基于hive、presto、 spark、hadoop数据库架构进行构建。数据***中能够配置多种数据结构的数据源,在很大程度上满足了企业对数据源的需求。
但是,目前基于多种不同数据库结构构建的多数据源数据***中,业务逻辑都非常复杂。基于多种数据源进行数据查询的实现方式主要采用基于现有业务***开放对应的API(Application Programming Interface,应用程序接口)或者基于数据***对应的SDK(Software Development Kit,软件开发工具包)进行查询。如果多个数据源之间具有逻辑关系,则需要从不同数据源获取到数据之后,将所获取的数据组织成符合需求的数据形式。并且,不同数据源所支持的查询语句是不同的,例如:mysql数据库支持sql查询;而mongoDB数据库支持json查询,不支持sql查询。因此,利用现有的数据***进行数据查询时,需要将数据请求转化成不同的查询语句去查询不同的数据源。严重影响数据查询效率,并且为了适应不同数据库结构的查询语句的编写、调试和运行,耗费较大的计算机内存和存储资源。
发明内容
本发明实施例为了解决数据查询过程中存在的上述问题,创造性地提供一种多源异构数据的数据查询方法、装置、计算机可读存储介质及设备。
第一方面,本发明提供一种多源异构数据的数据查询方法,所述方法包括:接收第一结构化查询语句;对所述第一结构化查询语句进行解析,得到解析结果,所述解析结果用于示出所述第一结构化查询语句所对应的子数据源信息及查询语义;根据所述子数据源信息,生成多个第二结构化查询语句;根据所述第二结构化查询语句,进行数据查询,获得子目标信息;将所述子目标信息按照所述查询语义整合为目标信息;输出所述目标信息。
优选地,所述对所述第一结构化查询语句进行解析,得到解析结果,包括:以抽象语法树的形式对所述第一结构化查询语句进行拆解,以确定所述第一结构化查询语句所对应的子数据源信息及查询语义。
优选地,所述根据所述子数据源信息,生成多个第二结构化查询语句,包括:根据所述子数据源信息,确定子数据源的数据源类型;根据所述数据源类型,生成所述数据源类型的子数据源所支持的第二结构化查询语句。
优选地,所述根据所述子数据源信息,生成多个第二结构化查询语句,包括:根据所述子数据信息,判断子数据源是否支持数据分区;在所述子数据源支持数据分区时,按照数据分区规则,生成相应的子数据源的第二结构化查询语句。
优选地,所述根据所述第二结构化查询语句,进行数据查询,获得子目标信息,包括:根据多个所述第二结构化查询语句执行多线程查询;接收针对每一所述第二结构化查询语句返回的相应的子目标信息。
优选地,所述接收第一结构化查询语句,包括:接收HTTP请求,所述HTTP 请求的参数包括SQL语句。
优选地,所述方法还包括:缓存所述子目标信息,以在用于下一次根据相应的所述第二结构化查询语句进行数据查询操作。
第二方面,本发明提供一种多源异构数据的数据查询装置,所述装置包括:接收模块,用于接收第一结构化查询语句;解析模块,用于对所述第一结构化查询语句进行解析,得到解析结果,所述解析结果用于示出所述第一结构化查询语句所对应的子数据源及查询语义;查询语句生成模块,用于根据所述子数据源,生成多个第二结构化查询语句;查询模块,用于根据所述第二结构化查询语句,进行数据查询,获得子目标信息;信息整合模块,用于将所述子目标信息按照所述查询语义整合为目标信息;输出模块,用于输出所述目标信息。
第三方面,本发明提供了一种设备,所述设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面中任一所述的多源异构数据的数据查询方法。
第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面中任一所述的多源异构数据的数据查询方法。
本发明实施例针对多源异构数据,对所接收到结构化查询语句进行解析,确定需要查询的子数据源及查询语义,生成适应于子数据源类型的查询语句,对每一子数据源分别进行查询,获得相应地子目标信息,并将所获取的子目标信息按照查询语义整合为目标信息。由此,利用一个接口即可实现对多源异构数据的查询,简化了数据查询的查询接口,避免了对于多种数据源类型的查询语义维护,对于多源异构数据具有非常强的适用性,显著增加数据查询代码的可复用性。有效提高查询效率,节约计算资源和存储资源。
需要理解的是,本发明的教导并不需要实现上面所述的全部有益效果,而是特定的技术方案可以实现特定的技术效果,并且本发明的其他实施方式还能够实现上面未提到的有益效果。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
在附图中,相同或对应的标号表示相同或对应的部分。
图1示出了本发明一实施例提供的一种多源异构数据的数据查询方法的实现流程示意图;
图2示出了本发明另一实施例提供的一种多源异构数据的数据查询方法的实现流程示意图;
图3示出了本发明一实施例提供的一种多源异构数据的数据查询装置的结构示意图;
图4示出了本发明一实施例提供的一种设备的结构示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为使本发明更加透彻和完整,并能够将本发明的范围完整地传达给本领域的技术人员。
下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。
图1示出了本发明一实施例提供的一种多源异构数据的数据查询方法的实现流程示意图。
参考图1,本发明实施例多源异构数据的数据查询方法,至少包括如下操作流程。
操作101,接收第一结构化查询语句。
在本发明这一实施例中,第一结构化查询语句可以是sql语句,sql语句可以通过HTTP接口输入。
举例说明,对于多个不同数据库结构类型的子数据源组成的数据***,可以预先对数据***进行配置。具体地,可以配置子数据源的信息,例如:每一子数据源对应的用户名、密码、数据库类型、服务地址和端口等。
进一步的,还可以根据数据业务的需要,配置元数据信息。举例说明:1、通用添加查询条件,例如:所有的查询操作均针对一个固定时间段的数据进行查询,则可以将该固定时间段配置为固定的查询条件,在每次执行数据查询操作时,自动添加该查询条件。2、配置字段的映射关系,例如:可以预先针对一个子数据源定义字段映射关系,在进行执行交互查询时,可以根据预先定义的字段映射关系,自动完成字段映射需求。3、针对数据***配置自定义视图,视图中可以包含各个子数据源之间的逻辑关系,如此,在具有查询需求时,可以基于预先配置的自定义视图进行查询,而无需多次研究各个子数据源之间的逻辑关系。4、针对查询需求,针对子数据源进行分区查询的配置,例如:对于一个具有基于时间分区查询或关键字分区查询等需求的子数据源,在元数据中预先定义分区查询的配置。例如:定义关键字的字段或者时间分区的字段,以及关键字字段或者时间分区字段对应的枚举值。如此,对子数据源进行分区查询时,可以根据预先定义的枚举值进行分区查询。
通过上述操作,预先定义一个数据***,并配置可以用于数据查询的HTTP 接口。通过HTTP接口的访问方式,接收数据需求方发送的第一结构化查询语句。第一结构化查询语句可以是sql语句,例如:select a.field_a,b.field_b from a left join b ona.primary_id=b.primary_id where a.primary_id=‘123’。
操作102~操作103中,对第一结构化查询语句进行解析,得到解析结果,解析结果用于示出第一结构化查询语句所对应的子数据源信息及查询语义。根据子数据源信息,生成多个第二结构化查询语句。
在本发明这一实施例中,子数据源信息可以包括子数据源的名称、用户名、密码以及数据源类型等,例如:mysql、mongo、hive、presto、spark、hadoop 等。
对第一结构化查询语句进行解析,是为了确定第一结构化查询语句中所涉及的多个子数据源的名称、数据结构等。查询语义可以包括多个数据源之间的查询语义,例如:内连接inner join、左连接left join、右连接right join和全连接full join等方式。innerjoin在两张表进行连接查询时,只保留两张表中完全匹配的结果集。left join在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录。right join在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录。full join在两张表进行连接查询时,返回左表和右表中所有没有匹配的行。查询语义还可以包括单个子数据源内部的处理,例如:输入目录from、输入目录join、多表的关联条件on、过滤条件where、分组group by以及过滤条件having等。
举例说明,对上述sql语句“select a.field_a,b.field_b from a left join bon a.primary_id=b.primary_id where a.primary_id=‘123’”进行解析,可知,该sql语句欲查询的数据来源于子数据源a和子数据源b。
在本发明这一实施例中,会根据子数据源的数据源类型,生成针对相应的数据源的第二结构查询语句。举例说明,对上述sql查询语句进行解析后,得到该sql语句涉及子数据源a和子数据源b的数据查询,并且针对子数据源a 的数据包含一次过滤操作where,则生成针对子数据源a的查询为select a.field_a,a.primary_id from a where a.primary_id=’123’。而针对子数据源b的查询语句就变成select b.field_b,b.primary_id fromb。这里,如果子数据源a的数据源类型为mysql,支持sql查询语句,可知直接应用selecta.field_a,a.primary_id from a where a.primary_id=’123’作为一个第二结构化查询语句。如果子数据源b的数据源类型为mongo,则可以将select b.field_b,b.primary_idfrom b翻译为db.t_b.find({},{“pid”:1.”field_b”:1})。
在本发明这一实施例中,根据子数据源信息,生成的多个第二结构化查询语句不体现多个子数据源之间的查询语义,而是分别针对各个子数据源进行数据查询。
举例说明,对于上述sql查询语句中子数据源a和子数据源b之间所具有 leftjoin的查询语义,表示在对子数据源a和子数据源b进行连接查询时,会返回子数据源a所有的行,即使在子数据源b中没有匹配的记录。
这里,不直接对所查询到的数据进行处理,而是生成针对子数据源a的第二结构查询语句和针对子数据源b的查询语句,在分别获取到相应的数据后,对所获取到的数据再进行整合处理。由此,数据***能够详细记录数据查询过程中每个数据源的语义分析过程,在数据查询出现问题时,能够快速定位问题,显著提高数据查询过程中的问题处理效率,有效节约计算机的计算和分析资源。
操作104,根据第二结构化查询语句,进行数据查询,获得子目标信息。
在本发明这一实施例中,利用第二结构化查询语句所要查询的子数据源是支持该查询语句的,故数据***根据所接收的第一结构化查询语句,经过操作 102和103的处理后,得到的多个第二结构化语句,可以分别从相应的子数据源中获取子目标信息。
例如:操作103中得到两个第二结构化查询语句:1、select a.field_a,a.primary_id from a where a.primary_id=’123’,2、 db.t_b.find({},{“pid”:1.”field_b”:1})。该操作104中会根据查询语句1从数据源类型为mysql的子数据源a中获取需要查询的数据,会根据查询语句2从数据源类型为mongo的子数据源b中获取需要查询的数据。
操作105,将子目标信息按照查询语义整合为目标信息。
在本发明这一实施方式中,在从多个子数据源中分别获取需要的数据之后,针对所获取的数据,按照多个子数据源之间的查询语义,整合成最终的目标信息。
举例说明,对于第一结构话查询语句“select a.field_a,b.field_b from aleft join b on a.primary_id=b.primary_id where a.primary_id=‘123’”,其中定义了子数据源a和子数据源b之间的left join的关系。在根据操作104分别从子数据源 a和子数据源b获取相应的子目标信息,例如:从子数据源a中获取的子目标信息记为表A1,从子数据源b中获取的子目标信息记为表B1。则在本操作105 中,对表A1和表B1的数据进行整合,left join表示在对两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录,因此,该操作中,确定目标信息为表A1中的所有的行。
操作106,输出目标信息。
在本发明这一实施例中,确定了最终需要的目标信息后,反馈至数据需求方。
至此,本实施例实现了对于多源异构数据的数据查询。通过以上技术方案可知,本实施例存在的有益效果是:针对多源异构数据,对所接收到结构化查询语句进行解析,确定需要查询的子数据源及查询语义,生成适应于子数据源类型的查询语句,对每一子数据源分别进行查询,获得相应地子目标信息,并将所获取的子目标信息按照查询语义整合为目标信息,从而使得利用一个查询接口即可实现对多源异构数据的查询,简化了数据查询的查询接口,避免了对于多种数据源类型的查询语义维护,对于多源异构数据具有非常强的适用性,显著增加数据查询代码的可复用性。有效提高查询效率,节约计算资源和存储资源。
图1所示仅为本发明所述方法的基础实施例,在其基础上进行一定的优化和拓展,还能够得到所述方法的其他优选实例施。
如图2所示,为本发明另一实施例提供的一种多源异构数据的数据查询方法的实现流程示意图。在本发明这一实施例中,多源异构数据的数据查询方法包括以下操作步骤:
操作201~操作202,接收HTTP请求,HTTP请求的参数包括SQL语句。以抽象语法树的形式对第一结构化查询语句进行拆解,以确定第一结构化查询语句所对应的子数据源信息及查询语义。
在本发明这一实施例中,针对一数据***,预先进行了子数据源的来源配置和元数据配置等。并且配置了子数据查询的多个优化规则和引擎规则。
在通过HTTP接口接收到sql查询语句时,根据预先配置的元数据规则、引擎规则以及数据优化规则等,以AST(abstract syntax tree,抽象语法树)的形式对第一结构化查询语句进行拆解,以确定第一结构化查询语句所对应的子数据源及查询语义。
首先,举例说明数据***中的引擎规则的配置,针对一条sql查询语句,其对应的元数据的定义可能只有一个定义,但是数据源可能是两个。例如:对于大数据的常见使用场景OLAP(Online Analytical Processing,联机分析处理),其中有一表a,存在于hive数据库中,hived的常用查询入口是类似于presto或者spark的即席查询入口。但是有一些统计查询在即席查询中是非常耗时的,例如:select count(distinct patient_id)aspidNumber from a group by age。因此,对于大数据的常用应用中,可以配置专门的OLAP分析***即席查询入口用于执行OLAP查询,例如:对于sql查询语句select patient_idfrom a where age=60,可以利用即席查询引擎执行数据查询。同时为数据***配置聚合查询引擎,使得一般的统计查询,只要计算函数和维度均符合的sql查询,可以利用OLAP ***的统计查询引擎执行数据查询,例如:druid、kylin和clickHouse等。
在本发明一实施方式中,预先配置了通用的优化规则,在接收到sql查询语句时,基于通用规则和AST的antlr4技术,对所接收到的sql语句进行解析。
举例说明,预先配置以下通用规则:1、where条件中某个字段包含大量的等值查询,则对大量的等值进行合并等操作,例如:select sum(amount)from a where type='1'or type='2'or type='3'or type='4',根据通用规则进行优化后为 select sum(amount)from a where type in('1','2','3','4')。2、对于复杂的计算函数后没有as操作,补充完整相应的as操作,例如:select sum(amount)from a where type='1'or type='2'or type='3'or type='4',根据通用规则进行优化后为select sum(amount)assum_a from a where type='1'or type='2'or type='3'or type='4'。
进一步的,对select sum(amount)as sum_a from a where type='1'or type='2'or type='3'or type='4'进行解析后,可以得到:
在本发明一实施方式中,还根据预先配置的规则和元数据确认查询引擎,例如:对于sql查询语句select sum(amount)as sum_a from a where type='1'and status='NEW',元数据中定义了子数据源a的结构如下:
在元数据中我们定义了子数据源a的字段,确认了那些字段是可以作为维度查询,哪些字段是可以作为度量查询。
通过对sql查询语句进行解析,可以确认该sql查询语句是一个包含过滤字段的聚合查询。在元数据中,可以匹配作为一个OLAP即席查询,利用olapEngine 进行数据查询,例如:预先配置的引擎规则中的druid。
再例如sql查询语句:select status,type from a limit 10,该sql查询语句可以解析为一个明细数据的查询,可以直接采用即席查询进行数据查找,元数据中定义了presto。
操作203,根据子数据源信息,生成多个第二结构化查询语句。
在本发明一实施方式中,根据子数据源信息,确定子数据源的数据源类型;根据数据源类型,生成数据源类型的子数据源所支持的第二结构化查询语句。
该实施方式的具体实现流程与图1所示实施例中操作102~103的具体实现过程相类似,这里不再赘述。
在本发明一实施方式中,根据子数据源信息,判断子数据源是否支持数据分区;在子数据源支持数据分区时,按照数据分区规则,生成相应的子数据源的第二结构化查询语句。
举例说明,可以在数据***中配置执行分区查询的分区规则进行数据优化,例如:子数据源inpatient的元数据中定义了分区信息 partionInfo:{fieldName:createTime,partitionList:[2019-01-01,2019-07-01|20190-7-0 1,2020-01-01|2020-01-01,2020-07-01]}。则在接收到需要从子数据源inpatient查询数据的sql语句时,可以采用分区查询,例如:接收到的sql查询语句为:select sum(amount)as total_amount frominpatient。则可以该sql查询语句是使用子数据源inpatient中的分区优化规则的,由此,可以将sql查询语句拆解为三个第二结构查询语句:select sum(amount)as total_amountfrom inpatient where createTime>=[开始时间]and createTime<[结束时间]。
三个第二结构查询语句在线程池中分别执行数据查询操作,并分别返回相应的数据,根据对应计算函数sum的累加器sumAccumulator对三个线程的查询结果进行累加,可以得到最终的查询结果。
操作204~操作205,根据多个第二结构化查询语句执行多线程查询。接收针对每一第二结构化查询语句返回的相应的子目标信息。
举例说明,接收到的sql查询语句为:select sum(amount)as sum_a from awhere type='1'and status='NEW'。如果在元数据中定义了数据分区,例如:partitionInfo:{"partitionType":"range","fieldName":"createTime",partitionList:["202 0-01-01,2020-02-01","2020-02-01,2020-03-01"]},则sql查询“select sum(amount) as sum_a from a where type='1'and status='NEW'”拆解为两个第二结构查询语句:
1、sql:select sum(amount)as sum_a from a where type='1'and status='NEW' and createTime>='2020-01-01'and createTime<'2020-02-01';
2、select sum(amount)as sum_a from a where type='1'and status='NEW'and createTime>='2020-02-01'and createTime<'2020-03-01'。
该sql查询语句被拆解为两个第二结构查询语句,同时执行数据查询操作,并返回数据查询结果{sum_a:100},{sum_a:200}。
在本发明另一实施方式中,元数据的定义如下:
以上定义了一个子查询。
接收到的sql查询语句为:select sum(amount)as sum_a from a left join bon a.type=b.type where b.type='1'and status='NEW',相当于查询select sum(amount) as sum_a from(select status,type,sum(amount)as amount from a whereyear>2019 group by status,type)as a left join b on a.type=b.type whereb.type='1'and status='NEW',由此,查询语句的写法意义明确并且表达简约。
对于该sql查询语句,被拆解为两个第二结构查询语句,其中一个用于从数据源类型为presto的子数据源a进行查询数据,另一个用于从数据源类型为 mysql的子数据源b中进行数据查询。两个第二结构查询语句同时发送至线程池中,可以同时执行数据查询,并返回查询得到的数据。
优选地,在本发明另一实施例中,还将多个第二结构的查询语句查询到的实际数据,进行缓存,以用于下次查询。具体地,可以缓存子目标信息,以在用于下一次根据相应的第二结构化查询语句进行数据查询操作。缓存支持多种缓存方式,比如redis、memcache、mongo、Guava Cache等。
操作206,将子目标信息按照查询语义整合为目标信息。
举例说明,对于sql查询语句:select sum(amount)as sum_a from a where type='1'and status='NEW',返回参考上述操作205,将该sql查询语句拆解为两个第二结构查询语句执行查询操作,则返回两个结果{sum_a:100}和 {sum_a:200},由此,可以触发一个累加器,例如:该sql查询语句中触发sum 的累加器,将查询得到的数据,按照最初接收到的sql查询语句中的查询语义进行整合,得到最终的目标信息。
若在sql查询语句中提到left join的请求,则在两个第二结构查询语句分别获取到数据之后,根据sql查询语句中left join定义的进行数据整合。
例如:sql查询语句为:select sum(a.amount)as sum_a,b.type_name as namefrom a left join b on a.type=b.type where b.type='1'and a.status='NEW',则拆解为两个第二结构查询语句,触发两个请求:
1、select amount,type from(select status,type,sum(amount)as amountfrom a where year>2019group by status,type)as a where a.status='NEW'andb.type='1';
2、select type,type_name from b where type='1'。
两个第二结构查询语句执行查询操作的返回结果分别是 {amount:100,type:"1"}和{"type_name":"示例",“type”:"1"},因为这是一个left join的操作,会触发leftjoin的执行,join的结果是 {amount:100,"type":"1","type_name":"示例"},然后按照select后的要求,对执行字段执行sum操作,完成数据整合,得到目标信息。
操作207,输出目标信息
其中,操作207的具体实现过程与图1所示实施例中操作106的具体实现过程相类似,这里不再赘述。
进一步,基于上文多源异构数据的数据查询方法,本发明实施例还提供一种多源异构数据的数据查询装置,如图3所示,该装置30包括:接收模块301,用于接收第一结构化查询语句;解析模块302,用于对第一结构化查询语句进行解析,得到解析结果,解析结果用于示出第一结构化查询语句所对应的子数据源及查询语义;查询语句生成模块303,用于根据子数据源,生成多个第二结构化查询语句;查询模块304,用于根据第二结构化查询语句,进行数据查询,获得子目标信息;信息整合模块305,用于将子目标信息按照查询语义整合为目标信息;输出模块306,用于输出目标信息。
另外在图3所示实施例的基础上,优选地,所述解析模块302包括:拆解子模块,用于以抽象语法树的形式对所述第一结构化查询语句进行拆解,以确定所述第一结构化查询语句所对应的子数据源及查询语义。
优选地,所述查询语句生成模块包括:类型确定子模块,用于确定所述子数据源的数据源类型;第一生成子模块,用于根据所述数据源类型,生成所述数据源类型所支持的第二结构化查询语句。
优选地,所述查询语句生成模块303包括:分区判断子模块,用于判断所述子数据源是否支持数据分区;第二生成子模块,用于在所述子数据源支持数据分区时,按照数据分区规则,生成相应的子数据源的第二结构化查询语句。
优选地,所述查询模块304包括:查询子模块,用于根据多个所述第二结构化查询语句执行多线程查询;信息接收子模块,用于接收针对每一所述第二结构化查询语句返回的相应的子目标信息。
优选地,所述接收模块301包括:语句接收子模块,用于接收HTTP请求,所述HTTP请求的参数包括SQL语句。
优选地,所述方法还包括:缓存模块,用于缓存所述子目标信息,以在用于下一次根据相应的所述第二结构化查询语句进行数据查询操作。
这里需要指出的是:以上对针对多源异构数据的数据查询装置实施例的描述,与前述图1至2所示的方法实施例的描述是类似的,具有同前述图1至2 所示的方法实施例相似的有益效果,因此不做赘述。对于本发明多源异构数据的数据查询装置实施例中未披露的技术细节,请参照本发明前述图1至2所示的方法实施例的描述而理解,为节约篇幅,因此不再赘述。
图4是本发明实施例提供的一种设备的结构示意图。在硬件层面,该设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatilememory),例如至少1个磁盘存储器等。当然,该设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放执行指令。具体地,执行指令即可被执行的计算机程序。存储器可以包括内存和非易失性存储器,并向处理器提供执行指令和数据。
在一种可能实现的方式中,处理器从非易失性存储器中读取对应的执行指令到内存中然后运行,也可从其它设备上获取相应的执行指令,以在逻辑层面上形成多源异构数据的数据查询装置。处理器执行存储器所存放的执行指令,以通过执行的执行指令实现本发明任一实施例中提供的多源异构数据的数据查询方法。
上述如本发明图3所示实施例提供的多源异构数据的数据查询装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(CentralProcessing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
本发明实施例还提出了一种可读介质,该可读存储介质存储有执行指令,存储的执行指令被电子设备的处理器执行时,能够使该电子设备执行本发明任一实施例中提供的多源异构数据的数据查询方法,并具体用于执行如图1或图 2所示的方法。
前述各个实施例中的设备可以为计算机。
本领域内的技术人员应明白,本发明的实施例可提供为方法或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例,或软件和硬件相结合的形式。
本发明中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (10)
1.一种多源异构数据的数据查询方法,其特征在于,所述方法包括:
接收第一结构化查询语句;
对所述第一结构化查询语句进行解析,得到解析结果,所述解析结果用于示出所述第一结构化查询语句所对应的子数据源信息及查询语义;
根据所述子数据源信息,生成多个第二结构化查询语句;
根据所述第二结构化查询语句,进行数据查询,获得子目标信息;
将所述子目标信息按照所述查询语义整合为目标信息;
输出所述目标信息。
2.根据权利要求1所述的方法,其特征在于,所述对所述第一结构化查询语句进行解析,得到解析结果,包括:
以抽象语法树的形式对所述第一结构化查询语句进行拆解,以确定所述第一结构化查询语句所对应的子数据源信息及查询语义。
3.根据权利要求1所述的方法,其特征在于,所述根据所述子数据源信息,生成多个第二结构化查询语句,包括:
根据所述子数据源信息,确定子数据源的数据源类型;
根据所述数据源类型,生成所述数据源类型所支持的第二结构化查询语句。
4.根据权利要求1所述的方法,其特征在于,所述根据所述子数据源信息,生成多个第二结构化查询语句,包括:
根据所述子数据源信息,判断子数据源是否支持数据分区;
在所述子数据源支持数据分区时,按照数据分区规则,生成相应的子数据源的第二结构化查询语句。
5.根据权利要求1所述的方法,其特征在于,所述根据所述第二结构化查询语句,进行数据查询,获得子目标信息,包括:
根据多个所述第二结构化查询语句执行多线程查询;
接收针对每一所述第二结构化查询语句返回的相应的子目标信息。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述接收第一结构化查询语句,包括:
接收HTTP请求,所述HTTP请求的参数包括SQL语句。
7.根据权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:
缓存所述子目标信息,以在用于下一次根据相应的所述第二结构化查询语句进行数据查询操作。
8.一种多源异构数据的数据查询装置,其特征在于,所述装置包括:
接收模块,用于接收第一结构化查询语句;
解析模块,用于对所述第一结构化查询语句进行解析,得到解析结果,所述解析结果用于示出所述第一结构化查询语句所对应的子数据源信息及查询语义;
查询语句生成模块,用于根据所述子数据源信息,生成多个第二结构化查询语句;
查询模块,用于根据所述第二结构化查询语句,进行数据查询,获得子目标信息;
信息整合模块,用于将所述子目标信息按照所述查询语义整合为目标信息;
输出模块,用于输出所述目标信息。
9.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的多源异构数据的数据查询方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一项所述的多源异构数据的数据查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011588689.6A CN112699141A (zh) | 2020-12-29 | 2020-12-29 | 多源异构数据的数据查询方法、装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011588689.6A CN112699141A (zh) | 2020-12-29 | 2020-12-29 | 多源异构数据的数据查询方法、装置、存储介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112699141A true CN112699141A (zh) | 2021-04-23 |
Family
ID=75513045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011588689.6A Pending CN112699141A (zh) | 2020-12-29 | 2020-12-29 | 多源异构数据的数据查询方法、装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112699141A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113177062A (zh) * | 2021-05-25 | 2021-07-27 | 深圳前海微众银行股份有限公司 | 一种数据查询方法及装置 |
CN113468204A (zh) * | 2021-06-28 | 2021-10-01 | 深信服科技股份有限公司 | 一种数据查询方法、装置、设备、介质 |
CN113901083A (zh) * | 2021-09-14 | 2022-01-07 | 威讯柏睿数据科技(北京)有限公司 | 基于多解析器的异构数据源操作资源解析定位方法和设备 |
WO2023029854A1 (zh) * | 2021-09-03 | 2023-03-09 | 北京火山引擎科技有限公司 | 数据查询方法、装置、存储介质及电子设备 |
WO2023115252A1 (en) * | 2021-12-20 | 2023-06-29 | Boe Technology Group Co., Ltd. | Data query method, data query apparatus, and computer-program product |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9189515B1 (en) * | 2013-03-08 | 2015-11-17 | Amazon Technologies, Inc. | Data retrieval from heterogeneous storage systems |
CN106970943A (zh) * | 2017-02-21 | 2017-07-21 | 南京中新赛克科技有限责任公司 | 基于异构数据源和分布式文件***的融合查询方法 |
CN108446289A (zh) * | 2017-09-26 | 2018-08-24 | 北京中安智达科技有限公司 | 一种支持异构数据库的数据检索方法 |
CN110399388A (zh) * | 2019-07-29 | 2019-11-01 | 中国工商银行股份有限公司 | 数据查询方法、***和设备 |
CN110633292A (zh) * | 2019-09-19 | 2019-12-31 | 上海依图网络科技有限公司 | 一种异构数据库的查询方法、装置、介质、设备及*** |
CN111190924A (zh) * | 2019-12-18 | 2020-05-22 | 中思博安科技(北京)有限公司 | 跨域的数据查询方法及装置 |
-
2020
- 2020-12-29 CN CN202011588689.6A patent/CN112699141A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9189515B1 (en) * | 2013-03-08 | 2015-11-17 | Amazon Technologies, Inc. | Data retrieval from heterogeneous storage systems |
CN106970943A (zh) * | 2017-02-21 | 2017-07-21 | 南京中新赛克科技有限责任公司 | 基于异构数据源和分布式文件***的融合查询方法 |
CN108446289A (zh) * | 2017-09-26 | 2018-08-24 | 北京中安智达科技有限公司 | 一种支持异构数据库的数据检索方法 |
CN110399388A (zh) * | 2019-07-29 | 2019-11-01 | 中国工商银行股份有限公司 | 数据查询方法、***和设备 |
CN110633292A (zh) * | 2019-09-19 | 2019-12-31 | 上海依图网络科技有限公司 | 一种异构数据库的查询方法、装置、介质、设备及*** |
CN111190924A (zh) * | 2019-12-18 | 2020-05-22 | 中思博安科技(北京)有限公司 | 跨域的数据查询方法及装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113177062A (zh) * | 2021-05-25 | 2021-07-27 | 深圳前海微众银行股份有限公司 | 一种数据查询方法及装置 |
WO2022247201A1 (zh) * | 2021-05-25 | 2022-12-01 | 深圳前海微众银行股份有限公司 | 一种数据查询方法及装置 |
CN113468204A (zh) * | 2021-06-28 | 2021-10-01 | 深信服科技股份有限公司 | 一种数据查询方法、装置、设备、介质 |
WO2023029854A1 (zh) * | 2021-09-03 | 2023-03-09 | 北京火山引擎科技有限公司 | 数据查询方法、装置、存储介质及电子设备 |
CN113901083A (zh) * | 2021-09-14 | 2022-01-07 | 威讯柏睿数据科技(北京)有限公司 | 基于多解析器的异构数据源操作资源解析定位方法和设备 |
CN113901083B (zh) * | 2021-09-14 | 2023-05-12 | 北京柏睿数据技术股份有限公司 | 基于多解析器的异构数据源操作资源解析定位方法和设备 |
WO2023115252A1 (en) * | 2021-12-20 | 2023-06-29 | Boe Technology Group Co., Ltd. | Data query method, data query apparatus, and computer-program product |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112699141A (zh) | 多源异构数据的数据查询方法、装置、存储介质及设备 | |
CN110795455B (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
CN110096513B (zh) | 一种数据查询、资金核对方法及装置 | |
Hueske et al. | Opening the black boxes in data flow optimization | |
US9141678B2 (en) | Distributed query cache in a database system | |
US8332389B2 (en) | Join order for a database query | |
US8903841B2 (en) | System and method of massively parallel data processing | |
Bruno et al. | Advanced join strategies for large-scale distributed computation | |
US8396852B2 (en) | Evaluating execution plan changes after a wakeup threshold time | |
Gedik | Generic windowing support for extensible stream processing systems | |
US11687546B2 (en) | Executing conditions with negation operators in analytical databases | |
US8442971B2 (en) | Execution plans with different driver sources in multiple threads | |
US20240045860A1 (en) | Data query method and system, heterogeneous acceleration platform, and storage medium | |
US8478733B2 (en) | Substitute function in projection list | |
CN112395303A (zh) | 查询的执行方法、装置、电子设备及计算机可读介质 | |
CN108431766B (zh) | 用于访问数据库的方法和*** | |
US20180365294A1 (en) | Artificial intelligence driven declarative analytic platform technology | |
CN111198898B (zh) | 大数据查询方法及大数据查询装置 | |
Karimov et al. | AJoin: ad-hoc stream joins at scale | |
Rodrigues et al. | Big data processing tools: An experimental performance evaluation | |
US20180341709A1 (en) | Unstructured search query generation from a set of structured data terms | |
US9824122B2 (en) | Requests for source code text | |
EP4174680A1 (en) | Sql unification method, system, and device, and medium | |
CN114238387A (zh) | 一种数据查询方法、装置、电子设备及存储介质 | |
CN112765286A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210817 Address after: 211199 room 1502, 15 / F, building a, Yangzi science and innovation center, 211 pubin Road, Jiangbei new area, Nanjing, Jiangsu Applicant after: NANJING YIJI CLOUD MEDICAL DATA RESEARCH INSTITUTE Co.,Ltd. Address before: 100089 801, 8th floor, building 9, No.35 Huayuan North Road, Haidian District, Beijing Applicant before: YIDU CLOUD Ltd. |
|
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210423 |