跨库数据查询方法、装置和设备

文档序号:7567 发布日期:2021-09-17 浏览:26次 英文

跨库数据查询方法、装置和设备

技术领域

本申请涉及计算机领域,尤其涉及一种跨库数据查询方法、装置和设备。

背景技术

分布式系统具有高度的内聚性和透明性。分布式系统通过使用通用的物理和逻辑资源,实现任务的动态分配,从而提高数据集处理效率。在IT系统的分布式改造中,多个原始系统可以被整合为一个分布式系统。该多个原始系统可以对应于多个数据库。

目前,当一个系统中包括多个数据库时,针对一次数据库操作,通常需要工程师通过逐一操作的方式实现该多个数据库的管理。例如,当数据库操作为数据查询时,工程师需要编辑多条数据库查询指令,对多个数据库逐一查询,从而实现该数据查询操作。

然而,上述针对多数据库的查询方式,其查询过程较为繁琐,存在数据库查询效率低的问题。

发明内容

本申请提供一种跨库数据查询方法、装置和设备,用以解决现有技术中存在的数据库查询效率低的问题。

第一方面,本申请提供一种跨库数据查询方法,包括:

根据输入数据集和查询指令集,在多个数据库中查询得到第一目标数据集,所述输入数据集中包括批量的待查询数据集;

根据所述第一目标数据集和所述查询指令集,在所述多个数据库中查询得到第二目标数据集;

根据映射关系对所述第一目标数据集和所述第二目标数据集进行关联,生成第三目标数据集。

可选地,所述映射关系包括所述第一目标数据集与第二目标数据集的关联关系。

可选地,所述关联关系在根据所述第一目标数据集和所述查询指令集查询所述第二目标数据集时得到。

可选地,所述查询指令集中包括多条查询指令,每一所述查询指令针对一个数据库进行查询。

可选地,所述根据输入数据集和查询指令集,在多个数据库中查询得到第一目标数据集,包括:

根据所述输入数据集和每一所述查询指令,在每一所述数据库中查询得到子目标数据集,所述子目标数据集中包括所述第一目标数据集中的部分数据集;

根据每一所述数据库的所述子目标数据集和联结指令,生成所述第一目标数据集。

可选地,所述根据每一所述数据库的所述子目标数据集和联结指令,生成所述第一目标数据集,包括:

根据预设格式,将每一所述子目标数据集中的数据集转格式为标准数据集;

根据各个所述子目标数据集中的所述标准数据集,生成第一目标数据集。

可选地,所述根据输入数据集和查询指令集,在多个数据库中查询得到第一目标数据集,包括:

根据输入数据集和合并指令,生成待查询字符串,所述待查询字符串中包括所述输入数据集中的待查询数据集;

根据所述待查询字符串和所述查询指令集,在多个数据库中查询得到第一目标数据集。

可选地,所述方法,还包括:

通过加载指令加载外部数据集,得到输入数据集。

第二方面,本申请提供一种跨库数据查询装置,包括:

第一查询模块,用于根据输入数据集和查询指令集,在多个数据库中查询得到第一目标数据集,所述输入数据集中包括批量的待查询数据集;

第二查询模块,用于根据所述第一目标数据集和所述查询指令集,在所述多个数据库中查询得到第二目标数据集;

生成模块,用于根据映射关系对所述第一目标数据集和所述第二目标数据集进行关联,生成第三目标数据集。

可选地,所述映射关系包括所述第一目标数据集与第二目标数据集的关联关系。

可选地,所述关联关系在根据所述第一目标数据集和所述查询指令集查询所述第二目标数据集时得到。

可选地,所述查询指令集中包括多条查询指令,每一所述查询指令针对一个数据库进行查询。

可选地,所述第一查询模块,包括:

第一查询子模块,用于根据所述输入数据集和每一所述查询指令,在每一所述数据库中查询得到子目标数据集,所述子目标数据集中包括所述第一目标数据集中的部分数据集;

第一生成子模块,用于根据每一所述数据库的所述子目标数据集和联结指令,生成所述第一目标数据集。

可选地,所述第一生成子模块具体用于根据预设格式,将每一所述子目标数据集中的数据集转格式为标准数据集;根据各个所述子目标数据集中的所述标准数据集,生成第一目标数据集。

可选地,所述第一查询模块,包括:

第二生成子模块,用于根据输入数据集和合并指令,生成待查询字符串,所述待查询字符串中包括所述输入数据集中的待查询数据集;

第二查询子模块,用于根据所述待查询字符串和所述查询指令集,在多个数据库中查询得到第一目标数据集。

可选地,所述装置,还包括:

加载模块,用于通过加载指令加载外部数据集,得到输入数据集。

第三方面,本申请提供一种服务器,包括:存储器和处理器;

存储器用于存储程序指令;处理器用于调用存储器中的程序指令执行第一方面及第一方面任一种可能的设计中的跨库数据查询方法。

第四方面,本申请提供一种可读存储介质,可读存储介质中存储有执行指令,当服务器的至少一个处理器执行该执行指令时,服务器执行第一方面及第一方面任一种可能的设计中的跨库数据查询方法。

第五方面,本申请提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现第一方面及第一方面任一种可能的设计中的跨库数据查询方法。

本申请提供的跨库数据查询方法,通过根据数据库信息生成查询指令集,该查询指令集中包括多条查询指令;获取输入数据集,该输入数据集中可以包括批量的待查询数据集;根据输入数据集和查询指令集,在多个数据库中查询得到第一目标数据集;将查询得到的第一目标数据集作为输入数据集进行查询;根据第一目标数据集和查询指令集,在多个数据库中查询得到第二目标数据集;根据映射关系对第一目标数据集和第二目标数据集进行关联,生成第三目标数据集的手段,实现降低多库查询过程中,中间数据集存储的复杂度,提高了跨库查询的查询效率的效果。

附图说明

为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请一实施例提供的一种跨库数据查询方法的流程图;

图2为本申请一实施例提供的另一种跨库数据查询方法的流程图;

图3为本申请一实施例提供的再一种跨库数据查询方法的流程图;

图4为本申请一实施例提供的一种跨库数据查询装置的结构示意图;

图5为本申请一实施例提供的一种服务器的硬件结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据集在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。

此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

分布式系统是一种具有高度内聚性和透明性集成系统。分布式系统中包括多个服务器。分布式系统通过使用通用的物理和逻辑资源,实现任务在多个服务器中的动态分配,从而提高数据集处理效率。在银行的IT系统中,为了提高该IT系统的数据集处理效率,该IT系统被改造成了一个分布式系统。由于在改造前,该IT系统中可以包括多个原始系统。并且,该多个原始系统可以对应于多个数据库。由于每一数据库中均包含大量的数据集,因此数据库的整合存在数据集迁移复杂的问题。并且,当全部数据集均存储于同一个数据库后,数据集的读写收到数据库本身读写效率的限制,其使用效率必然低于分布式存储的读写效率。因此,针对该多个数据库,如何实现数据集的跨库查询,成为亟待解决的问题。

目前,该跨库操作通常由工程师通过对其中的数据库进行逐一操作的方式实现。当数据库操作为数据查询时,工程师需要针对每一待查询数据集,编辑多条数据库查询指令,对多个数据库逐一查询,从而实现该数据查询操作。目前数据库的查询主要包括单库查询和多库查询两种。其中,单库查询是指服务器可以根据待查询数据集在数据库中直接查询得到结果的查询操作。例如,当数据查询为单库查询时,可以包括数据库1、数据库2、数据库3、待查询数据集A和目标数据集B。工程师需要编写待查询数据集A的三条数据库查询指令,从而实现从三个数据库中查询目标数据集B的操作。

其中,多库查询是指服务器需要根据待查询数据查询得到至少一个中间结果后,才可以查询得到结果的查询操作。两库查询是多库查询中最简单的查询方式。该两库查询的方式可以包括,服务器根据待查询数据集A在数据库中查询得到中间数据集B。进而,服务器根据该中间数据集B在数据库中查询得到目标数据集C。例如,当包括数据库1、数据库2、数据库3、待查询数据集A和目标数据集C时,工程师需要先编写待查询数据集A在数据库1、数据库2和数据库3的中间结果1、中间结果2和中间结果3。该中间结果1、中间结果2和中间结果3中可以分别包括中间数据集B。工程师需要根据该中间结果1、中间结果2和中间结果3,分别编写三条数据库查询指令,从而实现三个中间结果在三个数据库中的查询操作。该查询操作可以得到9个查询结果,包括查询结果11、查询结果12、查询结果13、查询结果21、查询结果22、查询结果23、查询结果31、查询结果32和查询结果33。其中,查询结果11、查询结果12、查询结果13、查询结果21、查询结果22、查询结果23、查询结果31、查询结果32和查询结果33可以分别包括目标数据集C。

上述查询过程中,数据库1、数据库2和数据库3可能为不同的数据库。例如,SQLServer、Oracle、DB2、Foxpro、Access、MySQL等。或者,上述数据库还可能同时包括关系型数据库和非关系型数据库。因此,针对多库查询,中间结果的保存会变得繁琐。而随着涉及的数据库数量的增加、多库查询中中间结果查询次数的增加,该中间结果的复杂性还会导致查询效率的降低以及查询准确度的降低。

针对上述问题,本申请提出了一种跨库数据查询方法。该跨库数据查询方法中主要包括操作查询语言(Operational Query Language,OPQL)。该OPQL语言是工程师针对本申请存在的技术问题提出的一种数据库查询语言。该数据库查询语言中可以包括五个基本指令。该五个基本指令分别为OPQL_EXEC,OPQL_MAP,OPQL_LOAD,OPQL_JOIN,OPQL_CONCAT。其中,上述五个基本指令的分类以及功能可以如表1所示:

表1

基于上述五个基本指令,本申请还集中存储不同数据库的连接信息。工程师可以根据该集中存储的数据库连接信息,实现所有数据库的连接。本申请还为每个数据库分配数据库标识(ID)和数据库名称(Name)。其中,数据库标识(ID)唯一对应于一个数据库。在单库查询过程中,服务器可以通过查询指令OPQL_EXEC实现一待查询数据集在一个数据库中的查询。该查询指令中包括4个参数。该4个参数分别为数据库标识、SQL语句模板、SQL参数和结果集名称。在多库查询过程中,可以将一次多库查询拆分成一次或者多次两库查询。一次两库查询由可以拆分成多次单库查询。

服务器可以在一次单库查询得到多个中间数据集时,将中间数据集存储到一个统一格式的临时数据集中。服务器根据该临时数据集进行第二次单库查询,从而实现该次两库查询。其中,服务器可以通过联结指令OPQL_MAP,实现将查询得到的各个数据库的中间数据集的联结。该联结过程包括将各个数据库的查询结果标准化为统一格式,以及将统一格式的查询结果存入一个数据集表中。在完成多库查询后,服务器还可以通过映射指令OPQL_JOIN实现将多个中间数据集根据其映射关系,关联为目标数据集。

在该数据库查询过程中,输入数据集可以为批量数据集。该输入数据集中包括待查询数据集。服务器可以使用加载指令OPQL_LOAD加载输入数据集,实现批量的待查询数据集的导入。服务器还可以使用合并指令OPQL_CONCAT将输入数据集中的待查询数据集整理为字符串,以便于后续查询。或者,服务器还可以使用合并指令OPQL_CONCAT将查询得到的目标数据集整理为字符串,以便于后续存储。

下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

本申请中,以服务器为执行主体,执行如下实施例的跨库数据查询方法。具体地,该执行主体可以为服务器的硬件装置,或者为服务器中实现下述实施例的软件应用,或者为安装有实现下述实施例的软件应用的计算机可读存储介质,或者为实现下述实施例的软件应用的代码。

图1示出了本申请一实施例提供的一种跨库数据查询方法的流程图。如图1所示,以服务器为执行主体,本实施例的方法可以包括如下步骤:

S101、根据输入数据集和查询指令集,在多个数据库中查询得到第一目标数据集,输入数据集中包括批量的待查询数据集。

本实施例中,服务器可以根据数据库信息生成查询指令集。该查询指令集中包括多条查询指令。其中,每一条查询指令对应一个数据库的一次查询操作。服务器获取输入数据集。该输入数据集中可以包括批量的待查询数据集。服务器可以将该待查询数据集作为查询指令的参数,在各个数据库中进行查询。

其中,一条查询指令OPQL_EXEC可以如下所示:

OPQL_EXEC('RS1','DS000000000000004364',"select CARD_NO,CARD_ID,CUSTOMER_NO,CONTRACT_ID from card where CARD_NO in#1",OPQL_CONCAT('RS0','CARD_NO'));

OPQL_EXEC中包括4个参数。其中,RS1为第一目标数据集。其中,DS000000000000004364为数据库标识(ID)。其中,"select CARD_NO,CARD_ID,CUSTOMER_NO,CONTRACT_ID from card where CARD_NO in#1"为SQL语句模板。其中,SQL参数为OPQL_CONCAT('RS0','CARD_NO')。该SQL参数中,OPQL_CONCAT为合并指令。其中,RS0为输入数据集。该合并指令OPQL_CONCAT用于获取输入数据集中的待查询数据集CARD_NO。该待查询数据集CARD_NO为卡号。该卡号将替换到SQL语句模板#1处。该SQL语句模板用于在数据库DS000000000000004364中搜索CARD_NO与待查询数据集CARD_NO一致的数据集。当服务器在数据库DS000000000000004364中检索到CARD_NO为待查询数据集CARD_NO的数据集时,服务器将该条数据集的CARD_NO,CARD_ID,CUSTOMER_NO,CONTRACT_ID四个字段输出到第一目标数据集中。该四个数据集可以分别对应卡号、卡ID、客户号和账户ID。

一种示例中,当输入数据集中包括批量的待查询数据集时,服务器可以将该输入数据集中的待查询数据集作为SQL参数,输入到SQL语句模板语句中。例如,当输入数据集中包括1000个用户的卡号时,服务器将这1000个卡号作为SQL参数,输入到SQL语句模板语句中。服务器根据这1000条SQL语句模板语句,使用上述查询指令OPQL_EXEC,在数据库DS000000000000004364中进行1000次查询,得到多条数据集。每一条数据集中包括CARD_NO,CARD_ID,CUSTOMER_NO,CONTRACT_ID四个字段。服务器将该多条数据集存储到第一目标数据集中。

其中,查询指令集中可以包括多条查询指令OPQL_EXEC,每一条查询指令OPQL_EXEC中包括不同的SQL语句模板。或者,每一条查询指令OPQL_EXEC中还可以包括不同的数据库语句模板。其中,不同的SQL语句模板或者数据库语句模板中,可以包括不同的数据库标识(ID)、不同的查询语句、不同的子目标数据集。其中,子目标数据集为第一目标数据集的子集。该多条条查询指令OPQL_EXEC中包括相同的输入数据集。服务器可以通过联结指令,将该多个子目标数据集整合为第一目标数据集RS1集。

S102、根据第一目标数据集和查询指令集,在多个数据库中查询得到第二目标数据集。

本实施例中,服务器将第一目标数据集作为输入数据集进行查询。服务器可以通过与S101相同的查询指令集,以及不同的输入数据集,查询得到第二目标数据集。

例如,当服务器通过第一目标数据集确定账户ID(CONTRACT_ID)后,服务器可以根据该账户ID,查询得到账户余额。其查询指令可以为:OPQL_EXEC('RS2','DS000000000000004488',"select CUSTOMER_ID,CUSTOMER_NO from customer whereCUSTOMER_NO in#1",OPQL_CONCAT('RS1','CUSTOMER_NO'));

其中,RS2为第二目标数据集。其中,DS000000000000004488为数据库标识(ID)。其中,"select CUSTOMER_ID,CUSTOMER_NO from customer where CUSTOMER_NO in#1"为SQL语句模板。该SQL语句模板用于在数据库DS000000000000004488中搜索CUSTOMER_NO与第一目标数据集RS1中的CUSTOMER_NO一致的数据集。当服务器在数据库DS000000000000004488中检索到CUSTOMER_NO与第一目标数据集RS1中的CUSTOMER_NO一致的数据集时,服务器将该条数据集的CUSTOMER_ID,CUSTOMER_NO两个字段输出到第二目标数据集RS2中。该两个字段分别对应账户ID和余额。

S103、根据映射关系对第一目标数据集和第二目标数据集进行关联,生成第三目标数据集。

本实施例中,服务器在根据输入数据集RS0确定第一目标数据集RS1后,服务器根据第一目标数据集RS1查询得到第二目标数据集RS2。例如,服务器使用第一目标数据集RS1中的账号ID(CUSTOMER_NO),在数据库中查询得到第二目标数据集RS2。因此,服务器可以根据该账号ID(CUSTOMER_NO),确定第一目标数据集RS1与第二目标数据集RS2的关联关系。服务器可以根据该关联关系确定第一目标数据集RS1与第二目标数据集RS2的映射关系。该映射关系用于将第一目标数据集RS1中的一条数据集与第二目标数据集RS2中的一条数据集对应。服务器根据该映射关系实现第三目标数据集RS3的生成。

其中,上述关联过程可以通过映射函数OPQL_JOIN实现,其实现过程可以包括:

OPQL_JOIN('RS3','RS1','RS2','CUSTOMER_NO=CUSTOMER_NO');

其中,RS1为第一目标数据集,RS2为第二目标数据集,RS3为第三目标数据集。其中,映射条件包括CUSTOMER_NO=CUSTOMER_NO。即当且仅当RS1中的CUSTOMER_NO与RS2中的CUSTOMER_NO相同时,服务器确定该两条数据集存在映射关系,并将该两条数据集合并为一条数据集。该合并后的数据集被存储在RS3中。

本申请提供的跨库数据查询方法,服务器可以根据数据库信息生成查询指令集。该查询指令集中包括多条查询指令。服务器获取输入数据集。该输入数据集中可以包括批量的待查询数据集。服务器根据输入数据集和查询指令集,在多个数据库中查询得到第一目标数据集。服务器将查询得到的第一目标数据集作为输入数据集进行查询。服务器根据第一目标数据集和查询指令集,在多个数据库中查询得到第二目标数据集。服务器根据映射关系对第一目标数据集和第二目标数据集进行关联,生成第三目标数据集。本申请中,服务器可以通过上述两次单库查询,实现一次两库查询。服务器还可以通过多次两库查询实现多库查询。服务器通过使用上述OPQL中的基本指令,实现多库查询,降低了中间数据集存储的复杂度,提高了跨库查询的查询效率,提高了跨库查询的查询准确率。

图2示出了本申请一实施例提供的另一种跨库数据查询方法的流程图。在图1所示实施例的基础上,如图2所示,当查询指令集中包括多条查询指令,每一查询指令针对一个数据库进行查询,以服务器为执行主体,本实施例的方法可以包括如下步骤:

S201、通过加载指令加载外部数据集,得到输入数据集。

本实施例中,服务器可以通过加载指令加载外部数据集。服务器获取该外部数据集后,得到输入数据集。其中,外部数据集可以为以预设格式存储的数据集。该外部数据集可以包括多种存储方式。服务器可以根据该多种存储方式设置该加载指令。该加载指令OPQL_LOAD可以通过获取外部数据集的地址,读取该外部数据集,进而得到输入数据集RS0。该输入数据集可以为表格形式。该表格中可以包括多个字段。其中,待查询数据集为该输入数据集中的一个或者多个字段。

S202、根据输入数据集和每一查询指令,在每一数据库中查询得到子目标数据集,子目标数据集中包括第一目标数据集中的部分数据集。

本实施例中,服务器可以根据数据库信息生成查询指令集。该查询指令集中包括多条查询指令。其中,每一条查询指令对应一个数据库的一次查询操作。其中,服务器确定每一条查询指令从每一个数据库中获取的数据集为子目标数据集。

一种示例中,不同的子目标数据集可以具有不同的数据集格式。该数据集格式可以根据该子目标数据集对应的数据库确定。

S203、根据每一数据库的子目标数据集和联结指令,生成第一目标数据集。

本实施例中,服务器可以包括联结指令OPQL_MAP。服务器在获取上述多个子目标数据集后,该联结指令OPQL_MAP可以将多个子目标数据集整合为一个数据集,即第一目标数据集。其中,该联结指令OPQL_MAP的参数中可以包括查询指令集。该联结指令OPQL_MAP可以将参数中包括的各个查询指令查询得到子目标数据集整合为一个数据集。

一种示例中,当每一子目标数据集中的数据集具有不同数据集格式时,S203具体可以包括:

步骤1、服务器根据预设格式,对每一子目标数据集进行格式转换操作。服务器将每一子目标数据集的格式转换为预设格式,得到标准数据集。

步骤2、服务器将每一子目标数据集的标准数据集放入一个数据集中该数据集即为第一目标数据集。

S204、根据第一目标数据集和查询指令集,在多个数据库中查询得到第二目标数据集。

S205、根据映射关系对第一目标数据集和第二目标数据集进行关联,生成第三目标数据集。

其中,步骤S204和S205与图2实施例中的步骤S102和S103实现方式类似,本实施例此处不再赘述。

本申请提供的跨库数据查询方法,服务器可以通过加载指令加载外部数据集。服务器获取该外部数据集后,得到输入数据集。服务器可以根据数据库信息生成查询指令集。该查询指令集中包括多条查询指令。其中,每一条查询指令对应一个数据库的一次查询操作。其中,服务器确定每一条查询指令从每一个数据库中获取的数据集为子目标数据集。服务器在获取上述多个子目标数据集后,该联结指令可以将多个子目标数据集整合为一个数据集,即第一目标数据集。服务器根据第一目标数据集和查询指令集,在多个数据库中查询得到第二目标数据集。服务器根据映射关系对第一目标数据集和第二目标数据集进行关联,生成第三目标数据集。本申请中,通过使用上述联结指令,实现查询指令集的执行,以及将多个子目标数据集整合为一个数据集,使中间数据集可被存储到一个数据集中,降低了中间数据集的复杂度,提高了跨库查询的查询效率。

图3示出了本申请一实施例提供的再一种跨库数据查询方法的流程图。在图1和图2所示实施例的基础上,如图3所示,当查询指令集中包括多条查询指令,每一查询指令针对一个数据库进行查询,以服务器为执行主体,本实施例的方法可以包括如下步骤:

S301、根据输入数据集和合并指令,生成待查询字符串,待查询字符串中包括输入数据集中的待查询数据集。

本实施例中,服务器在获取输入数据集后,使用合并指令,从输入数据集中获取待查询数据集。例如,如查询指令所示,OPQL_EXEC('RS1','DS000000000000004364',"selectCARD_NO,CARD_ID,CUSTOMER_NO,CONTRACT_ID from card where CARD_NO in#1",OPQL_CONCAT('RS0','CARD_NO')),其中包括合并指令。服务器在执行该查询指令前,根据其中的SQL参数所指示合并指令,实现待查询数据集的获取。其中,该合并指令OPQL_CONCAT具体用于获取该输入数据集中的待查询数据集后,根据该待查询数据集,生成待查询字符串。该待查询字符串中,两个待查询数据集之间使用预设符号隔开。该预设符号可以为“,”、“、”、“/”等符号。例如,当待查询字符串中包括多个卡号时,该待查询字符串可以为“6216920xxxx1225,6216920xxxx1226,6216920xxxx1227,6216920xxxx1228”。

S302、根据待查询字符串和查询指令集,在多个数据库中查询得到第一目标数据集。

本实施例中,服务器在生成待查询字符串后,将该待查询字符串输入到查询指令中,实现待查询数据集的批量查询。例如,如查询指令所示,OPQL_EXEC('RS1','DS000000000000004364',"select CARD_NO,CARD_ID,CUSTOMER_NO,CONTRACT_ID fromcard where CARD_NO in#1",OPQL_CONCAT('RS0','CARD_NO'))。服务器根据其中的SQL参数所指示合并指令OPQL_CONCAT('RS0','CARD_NO'),生成待查询字符串。该待查询字符串中的待查询数据集将替换SQL语句模板中的#1内容,生成其对应的查询语句,实现待查询数据集的批量查询。

S303、根据第一目标数据集和查询指令集,在多个数据库中查询得到第二目标数据集。

S304、根据映射关系对第一目标数据集和第二目标数据集进行关联,生成第三目标数据集。

其中,步骤S303和S304与图2实施例中的步骤S102和S103实现方式类似,本实施例此处不再赘述。

本申请提供的跨库数据查询方法,服务器在获取输入数据集后,使用合并指令,从输入数据集中获取待查询数据集。该合并指令在获取该输入数据集中的待查询数据集后,根据该待查询数据集,生成待查询字符串。服务器将该待查询字符串输入到查询指令中,实现待查询数据集的批量查询。服务器根据第一目标数据集和查询指令集,在多个数据库中查询得到第二目标数据集。服务器根据映射关系对第一目标数据集和第二目标数据集进行关联,生成第三目标数据集。本申请中,通过使用上述合并指令,将待查询数据集转格式为待查询字符串,使输入数据集中的待查询数据集可以被提取使用,进一步提高了输入数据集的使用效率,提高了跨库查询的查询效率。

图4示出了本申请一实施例提供的一种跨库数据查询装置的结构示意图,如图4所示,本实施例的跨库数据查询装置10用于实现上述任一方法实施例中对应于服务器的操作,本实施例的跨库数据查询装置10,包括:

第一查询模块11,用于根据输入数据集和查询指令集,在多个数据库中查询得到第一目标数据集,输入数据集中包括批量的待查询数据集。

第二查询模块12,用于根据第一目标数据集和查询指令集,在多个数据库中查询得到第二目标数据集。

生成模块13,用于根据映射关系对第一目标数据集和第二目标数据集进行关联,生成第三目标数据集。

一种示例中,映射关系包括输入数据集与第一目标数据集的第一关联关系,以及第一目标数据集与第二目标数据集的第二关联关系。

一种示例中,第一关联关系在根据输入数据集和查询指令集查询第一目标数据集时得到,第二关联关系在根据第一目标数据集和查询指令集查询第二目标数据集时得到。

一种示例中,当查询指令集中包括多条查询指令,每一查询指令针对一个数据库进行查询时,第一查询模块11,可以包括:

第一查询子模块111,用于根据输入数据集和每一查询指令,在每一数据库中查询得到子目标数据集,子目标数据集中包括第一目标数据集中的部分数据集。

第一生成子模块112,用于根据每一数据库的子目标数据集和联结指令,生成第一目标数据集。

其中,第一生成子模块具体用于根据预设格式,将每一子目标数据集中的数据集转格式为标准数据集。根据各个子目标数据集中的标准数据集,生成第一目标数据集。

另一种示例中,第一查询模块11,还可以包括:

第二生成子模块113,用于根据输入数据集和合并指令,生成待查询字符串,待查询字符串中包括输入数据集中的待查询数据集。

第二查询子模块114,用于根据待查询字符串和查询指令集,在多个数据库中查询得到第一目标数据集。

一种示例中,跨库数据查询装置10,还包括:

加载模块14,用于通过加载指令加载外部数据集,得到输入数据集。

本申请实施例提供的跨库数据查询装置10,可执行上述方法实施例,其具体实现原理和技术效果,可参见上述方法实施例,本实施例此处不再赘述。

图5示出了本申请实施例提供的一种服务器的硬件结构示意图。如图5所示,该服务器20,用于实现上述任一方法实施例中对应于服务器的操作,本实施例的服务器20可以包括:存储器21,处理器22。

存储器21,用于存储计算机程序。该存储器21可能包含高速随机存取存储器(Random Access Memory,RAM),也可能还包括非易失性存储(Non-Volatile Memory,NVM),例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。

处理器22,用于执行存储器存储的计算机程序,以实现上述实施例中的跨库数据查询方法。具体可以参见前述方法实施例中的相关描述。该处理器22可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

可选地,存储器21既可以是独立的,也可以跟处理器22集成在一起。

当存储器21是独立于处理器22之外的器件时,服务器20还可以包括总线23。该总线23用于连接存储器21和处理器22。该总线23可以是工业标准体系结构(IndustryStandard Architecture,ISA)总线、外部设备互连(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,EISA)总线等。总线可以分为地址总线、数据集总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。

可选地,该服务器还可以包括通信接口24。该通信接口24可以通过总线23与处理器21连接。通信接口24可以用于获取输入数据集,处理器21将根据该输入数据集通过上述跨库数据查询方法实现上述跨库数据查询的功能。

本实施例提供的服务器可用于执行上述的跨库数据查询方法,其实现方式和技术效果类似,本实施例此处不再赘述。

本申请还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时用于实现上述的各种实施方式提供的方法。

其中,计算机可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,计算机可读存储介质耦合至处理器,从而使处理器能够从该计算机可读存储介质读取信息,且可向该计算机可读存储介质写入信息。当然,计算机可读存储介质也可以是处理器的组成部分。处理器和计算机可读存储介质可以位于专用集成电路(Application Specific Integrated Circuits,ASIC)中。另外,该ASIC可以位于用户设备中。当然,处理器和计算机可读存储介质也可以作为分立组件存在于通信设备中。

具体地,该计算机可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random-Access Memory,SRAM),电可擦除可编程只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM),可编程只读存储器(Programmable read-only memory,PROM),只读存储器(Read-OnlyMemory,ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。

本申请还提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。设备的至少一个处理器可以从计算机可读存储介质中读取该计算机程序,至少一个处理器执行该计算机程序使得设备实施上述的各种实施方式提供的方法。

本申请实施例还提供一种芯片,该芯片包括存储器和处理器,存储器用于存储计算机程序,处理器用于从存储器中调用并运行计算机程序,使得安装有芯片的设备执行如上各种可能的实施方式中的方法。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

其中,各个模块可以是物理上分开的,例如安装于一个的设备的不同位置,或者安装于不同的设备上,或者分布到多个网络单元上,或者分布到多个处理器上。各个模块也可以是集成在一起的,例如,安装于同一个设备中,或者,集成在一套代码中。各个模块可以以硬件的形式存在,或者也可以以软件的形式存在,或者也可以采用软件加硬件的形式实现。本申请可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

当各个模块以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例方法的部分步骤。

应该理解的是,虽然上述实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制。尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换。而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:一种基于区块链的基金信息实时交互系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!