一种数据查询方法及装置的制造方法
【专利摘要】本申请提供一种数据查询方法及装置,该方法包括:接收查询请求,所述查询请求中包括查询条件;所述查询条件涉及N个不同的数据库;计算M种跨库关联处理方式中每一种跨库关联处理方式的查询成本;其中,每一种跨库关联处理方式的查询成本为通过每一种跨库关联处理方式在N个不同的数据库中进行与查询条件对应的数据查询的成本,M为大于或等于2的整数;根据所述每一种跨库关联处理方式的查询成本在所述M种跨库关联处理方式确定出本次使用的跨库关联处理方式;通过所述本次使用的跨库关联处理方式在所述N个不同的数据库中进行与所述查询条件对应的数据查询。
【专利说明】
-种数据查询方法及装置
技术领域
[0001] 本申请涉及计算机技术领域,尤其涉及一种数据查询方法及装置。
【背景技术】
[0002] 数据拆分值ata化arding)的基本思想是把一个数据库切分成多个部分放到不同 的数据库上,从而缓解单一数据库的性能问题。通常来讲,对于海量数据的数据库,如果是 因为表多而数据多,送时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出 来放在一个服务器上。如果表并不多,但每张表的数据非常多,送时候适合水平切分,即把 表的数据按某种规则(比如按ID散列)切分到多个数据库上。当然,现实中更多是送两种 情况混杂在一起,送时候需要根据实际情况做出选择,也可能会综合使用垂直与水平切分, 从而将原有数据库切分成类似矩阵一样可W无限扩充的数据库阵列(如图1所示),W提高 整个应用系统的高可用性。如图1所示,将一个应用单库按照不同模块(如用户、商铺、产 品)垂直切分,形成3个不同的数据库。在垂直切分之后,针对每个库再进行水平切分(例 如按照ID散列切分到多个数据库中)。
[0003] 然而送种数据分布都会面临一个跨库关联似"oss-dat油ase join)问题,例如 查询所有用户与商铺的对应关系(select use;r_name,shop_name from user tl, shop t2where tl. use;r_id = t2. use;r_id),该查询涉及到两个库数据库,不能直接从相关库得到 结果数据,需要应用层或者中间件层进行跨库关联处理。
[0004] 在现有技术中提供了多种跨库关联的处理方式,但是对于某一个系统而言,一旦 选定了一种跨库关联的处理方式,郝么就会一直采用该选定的方式。因此,现有技术中的跨 库关联的处理方式过于单一,不够灵活。
【发明内容】
[0005] 本申请提供一种数据查询方法及装置,用W解决现有技术中的跨库关联的处理方 式过于单一,不够灵活的技术问题。
[0006] 本申请第一方面提供了一种数据查询方法,包括:
[0007] 接收查询请求,所述查询请求中包括查询条件;所述查询条件涉及N个不同的数 据库;N为大于或等于2的整数;
[000引计算Μ种跨库关联处理方式中每一种跨库关联处理方式的查询成本;其中,所述 每一种跨库关联处理方式的查询成本为通过所述每一种跨库关联处理方式在所述Ν个不 同的数据库中进行与所述查询条件对应的数据查询的成本;Μ为大于或等于2的整数;
[0009] 根据所述每一种跨库关联处理方式的查询成本确定出本次使用的跨库关联处理 方式;其中,所述本次使用的跨库关联处理方式为所述Μ种跨库关联处理方式中的一种;
[0010] 通过所述本次使用的跨库关联处理方式在所述Ν个不同的数据库中进行与所述 查询条件对应的数据查询。
[0011] 结合第一方面,在第一方面的第一种可能的实现方式中,所述计算Μ种跨库关联 处理方式中每一种跨库关联处理方式的查询成本,具体包括:
[0012] 获取所述N个不同的数据库的与所述查询条件对应的统计信息;
[0013] 根据所述统计信息和所述每一种跨库关联处理方式包含的原子操作项的成本参 数计算所述每一种跨库关联处理方式的查询成本。
[0014] 结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式 中,所述统计信息包括所述N个不同的数据库中与所述查询条件对应的记录数和每条记录 的数据长度,
[0015] 所述根据所述统计信息和所述每一种跨库关联处理方式包含的原子操作项的成 本参数计算所述每一种跨库关联处理方式的查询成本,具体包括:
[0016] 根据所述记录数、所述数据长度和所述原子操作项的成本参数获得所述每一种跨 库关联处理方式包含的每一所述原子操作项的成本;
[0017] 对所述每一种跨库关联处理方式包含的每一所述原子操作项的成本进行求和获 得所述每一种跨库关联处理方式的查询成本。
[0018] 结合第一方面的第二种可能的实现方式,在第一方面的第Η种可能的实现方式 中,所述根据所述记录数、所述数据长度和所述原子操作项的成本参数获得所述每一种跨 库关联处理方式包含的每一所述原子操作项的成本,具体包括:
[0019] 将所述记录数、所述数据长度和所述原子操作项的成本参数相乘得到的乘积作为 所述每一种跨库关联处理方式包含的每一所述原子操作项的成本。
[0020] 结合第一方面或第一方面的第一种可能的实现方式至第一方面的第Η种可能的 实现方式中的任意一种,在第一方面的第四种可能的实现方式中,当所述本次使用的跨库 关联处理方式为第一种跨库关联处理方式时,
[0021] 所述使用所述本次使用的跨库关联处理方式在所述Ν个不同的数据库中进行与 所述查询条件对应的数据查询,具体包括:
[0022] 从所述Ν个不同的数据库中获取与查询条件对应的数据;
[0023] 对所述数据进行关联操作。
[0024] 结合第一方面或第一方面的第一种可能的实现方式至第一方面的第Η种可能的 实现方式中的任意一种,在第一方面的第五种可能的实现方式中,当所述本次使用的跨库 关联处理方式为第二种跨库关联处理方式时,
[0025] 所述使用所述本次使用的跨库关联处理方式在所述Ν个不同的数据库中进行与 所述查询条件对应的数据查询,具体包括:
[0026] 将所述Ν个不同数据库中的Ν-1个数据库中的数据表发送给剩余的一个数据库;
[0027] 根据所述数据表建立临时数据表;
[0028] 获取所述临时数据表和所述剩余的一个数据库中与所述查询条件对应的数据;
[0029] 对所述数据进行关联操作。
[0030] 本申请第二方面提供一种数据查询装置,包括:
[0031] 接收单元,用于接收查询请求,所述查询请求中包括查询条件;所述查询条件涉及 Ν个不同的数据库;Ν为大于或等于2的整数;
[0032] 处理单元,用于计算Μ种跨库关联处理方式中每一种跨库关联处理方式的查询成 本;其中,所述每一种跨库关联处理方式的查询成本为通过所述每一种跨库关联处理方式 在所述N个不同的数据库中进行与所述查询条件对应的数据查询的成本;Μ为大于或等于2 的整数;根据所述每一种跨库关联处理方式的查询成本确定出本次使用的跨库关联处理方 式;其中,所述本次使用的跨库关联处理方式为所述Μ种跨库关联处理方式中的一种;
[0033] 查询单元,用于通过所述本次使用的跨库关联处理方式在所述Ν个不同的数据库 中进行与所述查询条件对应的数据查询。
[0034] 结合第二方面,在第二方面的第一种可能的实现方式中,所述处理单元用于获取 所述Ν个不同的数据库的与所述查询条件对应的统计信息;根据所述统计信息和所述每一 种跨库关联处理方式包含的原子操作项的成本参数计算所述每一种跨库关联处理方式的 成本。
[0035] 结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式 中,所述统计信息包括所述至少两个数据库中与所述查询条件对应的记录数和每条记录的 数据长度,所述处理单元具体用于:根据所述记录数、所述数据长度和所述原子操作项的成 本参数获得所述每一种跨库关联处理方式包含的每一所述原子操作项的成本;对所述每一 种跨库关联处理方式包含的每一所述原子操作项的成本进行求和获得所述每一种跨库关 联处理方式的成本。
[0036] 结合第二方面的第二种可能的实现方式,在第二方面的第Η种可能的实现方式 中,所述处理单元具体用于;将所述记录数、所述数据长度和所述原子操作项的成本参数相 乘得到的乘积作为所述每一种跨库关联处理方式包含的每一所述原子操作项的成本。
[0037] 结合第二方面或第二方面的第一种可能的实现方式至第二方面的第Η种可能的 实现方式中的任意一种,在第二方面的第四种可能的实现方式中,所述查询单元具体用于: 当所述本次使用的跨库关联处理方式为第一种跨库关联处理方式时,从所述Ν个不同的数 据库中获取与查询条件对应的数据;对所述数据进行关联操作。
[0038] 结合第二方面或第二方面的第一种可能的实现方式至第二方面的第Η种可能的 实现方式中的任意一种,在第二方面的第五种可能的实现方式中,所述查询单元具体用于: 当所述本次使用的跨库关联处理方式为第二种跨库关联处理方式时,将所述Ν个不同数据 库中的Ν-1个数据库中的数据表发送给剩余的一个数据库;根据所述数据表建立临时数据 表;获取所述临时数据表和所述剩余的一个数据库中与所述查询条件对应的数据;对所述 数据进行关联操作。
[0039] 本申请第Η方面提供一种数据查询装置,包括:
[0040] 接收器,用于接收查询请求,所述查询请求中包括查询条件;所述查询条件涉及Ν 个不同的数据库;Ν为大于或等于2的整数;
[0041] 处理器,用于计算Μ种跨库关联处理方式中每一种跨库关联处理方式的查询成 本;其中,所述每一种跨库关联处理方式的查询成本为通过所述每一种跨库关联处理方式 在所述Ν个不同的数据库中进行与所述查询条件对应的数据查询的成本;Μ为大于或等于2 的整数;根据所述每一种跨库关联处理方式的查询成本确定出本次使用的跨库关联处理方 式;其中,所述本次使用的跨库关联处理方式为所述Μ种跨库关联处理方式中的一种;处理 器还用于通过所述本次使用的跨库关联处理方式在所述Ν个不同的数据库中进行与所述 查询条件对应的数据查询。
[0042] 结合第Η方面,在第Η方面的第一种可能的实现方式中,所述处理器用于获取所 述N个不同的数据库的与所述查询条件对应的统计信息;根据所述统计信息和所述每一种 跨库关联处理方式包含的原子操作项的成本参数计算所述每一种跨库关联处理方式的成 本。
[0043] 结合第Η方面的第一种可能的实现方式,在第Η方面的第二种可能的实现方式 中,所述统计信息包括所述至少两个数据库中与所述查询条件对应的记录数和每条记录的 数据长度,所述处理器具体用于:根据所述记录数、所述数据长度和所述原子操作项的成本 参数获得所述每一种跨库关联处理方式包含的每一所述原子操作项的成本;对所述每一种 跨库关联处理方式包含的每一所述原子操作项的成本进行求和获得所述每一种跨库关联 处理方式的成本。
[0044] 结合第Η方面的第二种可能的实现方式,在第Η方面的第Η种可能的实现方式 中,所述处理器具体用于;将所述记录数、所述数据长度和所述原子操作项的成本参数相乘 得到的乘积作为所述每一种跨库关联处理方式包含的每一所述原子操作项的成本。
[0045] 结合第Η方面或第Η方面的第一种可能的实现方式至第Η方面的第Η种可能的 实现方式中的任意一种,在第Η方面的第四种可能的实现方式中,所述处理器具体用于:当 所述本次使用的跨库关联处理方式为第一种跨库关联处理方式时,从所述Ν个不同的数据 库中获取与查询条件对应的数据;对所述数据进行关联操作。
[0046] 结合第Η方面或第Η方面的第一种可能的实现方式至第Η方面的第Η种可能的 实现方式中的任意一种,在第Η方面的第五种可能的实现方式中,所述处理器具体用于:当 所述本次使用的跨库关联处理方式为第二种跨库关联处理方式时,将所述Ν个不同数据库 中的Ν-1个数据库中的数据表发送给剩余的一个数据库;根据所述数据表建立临时数据 表;获取所述临时数据表和所述剩余的一个数据库中与所述查询条件对应的数据;对所述 数据进行关联操作。
[0047] 本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0048] 本申请实施例中,在接收到查询请求时,如果查询请求中的查询条件涉及至少两 个不同的数据库,就表示需要进行跨库关联处理,所W就计算多种跨库关联处理方式中每 一种跨库关联处理方式的查询成本,然后根据每种跨库关联处理方式的查询成本确定使用 哪种跨库关联处理方式进行数据查询。因此,相较于现有技术中每个系统只固定用一种跨 库关联处理方式,本申请实施例中的方法能够基于成本在多种处理方式中进行选择,所W 本申请实施例中的方法较灵活,而且处理方式也多样化。
【附图说明】
[0049] 图1为现有技术中数据拆分的示意图;
[0050] 图2为本申请实施例提供的一种系统架构图;
[0051] 图3为本申请实施例提供的一种数据查询方法的流程图;
[0052] 图4为本申请实施例提供的一种数据查询装置的功能框图;
[0053] 图5为本申请实施例提供的一种电子设备的结构框图。
【具体实施方式】
[0054] 本申请实施例提供一种数据查询方法及装置,用W解决现有技术中的跨库关联的 处理方式过于单一,不够灵活的技术问题。
[0055] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例 中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0056] 请参考图2所示,为本申请实施例提供的一种系统架构图。该系统包括应用服务 器、中间件W及各个互不相同的子数据库。在实际运用中,中间件可W集成在应用服务器 中,也可W是两者在物理上是相互独立的两个设备。应用服务器可W接收或者产生查询请 求。中间件可W在不同的子数据库中进行与查询请求对应的数据查询。
[0057] 关于产生查询请求的【具体实施方式】为本领域技术人员所熟知的内容,所W在此不 再赏述。接下来请参考图3,为本申请一实施例提供的一种数据查询方法的流程图。该方法 可W由中间件执行。如图3所示,该方法包括W下内容:
[0058] 步骤101 ;接收查询请求,所述查询请求中包括查询条件;所述查询条件涉及N个 不同的数据库;N为大于或等于2的整数;
[0059] 步骤102 ;计算Μ种跨库关联处理方式中每一种跨库关联处理方式的查询成本;Μ 为大于或等于2的整数;其中,所述每一种跨库关联处理方式的查询成本为通过所述每一 种跨库关联处理方式在所述Ν个不同的数据库中进行与所述查询条件对应的数据查询的 成本;
[0060] 步骤103 ;根据所述每一种跨库关联处理方式的查询成本在所述Μ种跨库关联处 理方式中确定出本次使用的跨库关联处理方式;
[0061] 步骤104 ;通过所述本次使用的跨库关联处理方式在所述Ν个不同的数据库中进 行与所述查询条件对应的数据查询。
[0062] 便于说明本申请实施例中数据查询方法的实施过程,W下将详细描述每个步骤的
【具体实施方式】。
[0063] 在步骤101中,查询条件涉及Ν个不同的数据库,Ν大于或等于2,表示的是两个数 据库中的数据不同,而两个数据库的结构类型可W相同,也可W不同。举例来说,查询条件 为所有用户与商铺的对应关系,用结构化查询语言(英文;S化UC化red如ery Language, 简称:SQL)来表示的话,目P为 select user_name, shop_name from user tl, shop t2where tl. user_id = t2. user_id。当然,在实际运用中,也可W用其他查询语言来表示查询条件。 在该例的查询条件中,涉及两个不同的数据库,分别为用户库(user tl)和商铺库(shop t2)。用户库和商铺库分别是两个不同的子数据库,例如位于不同的服务器上。而送两个数 据库的结构类型可W相同,也可W不同。相同的情况例如两者均为oracle数据库。不同的 情况例如:用户库为oracle数据库,而商铺库例如为Sybase类型的数据库。当然,在实际 运用中,数据库的结构类型还可W是其他类型,本申请不作具体限定。
[0064] 因为查询条件涉及至少两个不同的数据库,所W就需要利用跨库关联处理方式进 行跨库关联查询,与现有技术中利用为数据库或者系统配置的一种固定的跨库关联处理方 式进行数据查询不同的是,接下来执行步骤102,即计算Μ种跨库关联处理方式中的每一种 跨库关联处理方式的查询成本。
[0065] 其中,Μ种跨库关联处理方式具体例如是系统配置的。举例来说,假设现有技术 中存在Η种跨库关联处理方式,但是为某个系统配置了其中两种处理方式,所W在步骤102 中进行计算时,就只要分别计算该其中两种处理方式的查询成本即可。需要说明的是,在该 系统配置跨库关联处理方式时,需要配置该系统支持的处理方式。W下先介绍两种常用的 跨库关联处理方式。
[0066] 第一种,由中间件从各个关联数据库中获取与查询条件对应的表数据。然后由中 间件完成关联操作。
[0067] 第二种,中间件将关联驱动表分发到目的数据库成为临时表,然后在目的数据库 上完成目的表与临时表的关联操作。
[0068] 上述两种跨库关联中的关联操作都可W采用多种关联算法实现,例如:嵌套循环 连接(nest-loop join)、哈希连接化ash join)、归并排序连接(merge so;rt join)等。
[0069] 由W上描述可W看出,送两种跨库关联处理方式的操作方式不同,所W两者的性 能消耗也不同。对于第一种跨库关联处理方式来说,其性能消耗为各个关联数据库中的数 据获取、符合查询条件的数据的网络传输W及各个关联表的关联操作。对于第二种跨库关 联处理方式来说,其性能消耗为关联驱动表的数据获取、关联驱动表数据的网络传输、临时 表的创建及数据导入W及临时表和目的表的关联操作。
[0070] 对于其它跨库关联处理方式而言,因为处理方式不同,所W性能消耗也不尽相同, 性能消耗的计算方式与前述两种跨库关联处理方式的计算方式类似,具体根据每种处理方 式所包含的原子操作项来计算。其中,原子操作项是用W区分不同操作种类的最小操作单 τη 〇
[0071] 原子操作项针对的操作对象即与查询条件对应,继续W前述所举的用户库和商铺 库的例子为例,如果查询条件为所有的用户和商铺的对应关系,郝么两个数据库的数据传 输的性能消耗就与两个数据库的总记录数相关。如果查询条件为某地区的用户和商铺的对 应关系,郝么两个数据库的数据传输的性能消耗就和查询条件"某地区"筛选出的记录数有 关。
[0072] 因此,在一种可能的实施方式中,步骤102包括;获取Ν个不同的数据库的与查询 条件对应的统计信息;根据所述统计信息和每一种跨库关联处理方式包含的原子操作项的 成本参数计算每一种跨库关联处理方式的查询成本。
[0073] 与查询条件对应的统计信息包括查询条件所涉及的Ν个不同的数据库的总记录 数,列的字节数。进一步,根据不同的查询条件,统计信息进一步包括的内容可能不同,例如 如果查询条件中还包括筛选条件,郝么统计信息就还包括筛选条件对应的记录数。
[0074] 获取Ν个不同的数据库的与查询条件对应的统计信息,具体来说,一种情况可W 是系统定期的去获取每个数据库的统计信息,然后存储在存储单元中,在执行步骤102时, 直接去存储单元中获取与查询条件对应的统计信息即可。另一种情况可W是在执行步骤 102时,向Ν个不同的数据库发送获取统计信息的请求,然后接收Ν个不同的数据库发送的 统计信息。
[0075] 举例来说,假设由系统进行周期性的进行统计信息的获取,获取到的统计信息存 放在数据字典中。数据字典例如包括表(t油les)字典、索引(indexes)字典和列(columns) 字典。
[007引表字典为:
[0077]
[0078]
[0079] 表字典
[0080] 索引字典为:
[0081]
[0082]
[0083] 索引字典
[0084] 列字典为:
[0085]
[0086]
[0087] 列字典
[008引 W上统计信息仅为举例,在实际运用中,统计信息还可W是其它关于数据库的统 计信息,本申请不作具体限定。
[0089] 每一种跨库关联处理方式包含的原子操作项因处理方式不同而不完全相同。本申 请实施例中提供了几种常见的原子操作项的成本参数,为便于说明本申请实施例中的成本 计算方式而进行的举例,具体请参见表一所示。
[0090]
[0091]
[0092] 表一
[0093] 在实际运用中,也可W采用其它方式计算每种跨库关联处理方式的成本,本申请 不作具体限定。
[0094] 当在步骤102中计算出每一种跨库关联处理方式的成本之后,然后根据每一种跨 库关联处理方式的成本在所述Μ种跨库关联处理方式确定出本次使用的跨库关联处理方 式,即步骤103。然后通过确定出的跨库关联处理方式在Ν个不同的数据库中进行与步骤 101中的查询条件对应的数据查询。
[0095] 举例来说,当确定的本次使用的跨库关联处理方式为前述第一种跨库关联处理方 式时,步骤104具体包括;从所述Ν个不同的数据库中获取与查询条件对应的数据;对所述 数据进行关联操作。
[0096] 当确定的本次使用的跨库关联处理方式为前述第二种跨库关联处理方式时,步骤 104具体包括;将所述Ν个不同数据库中的Ν-1个数据库中的数据表发送给剩余的一个数 据库;根据所述数据表建立临时数据表;获取所述临时数据表和和所述剩余的一个数据库 中与所述查询条件对应的数据;对所述数据进行关联操作。
[0097] 由此可见,相较于现有技术中每个系统只固定用一种跨库关联处理方式,本申请 实施例中的方法能够基于成本在多种处理方式中进行选择,所W本申请实施例中的方法较 灵活,而且处理方式也多样化。
[0098] 通常来讲,例如可W确定成本最低的跨库关联处理方式为所述本次使用的跨库关 联处理方式。如果是性能消耗的成本最低的话,郝么通过该种方式可W降低系统的性能消 耗。如果是时间成本最低的话,郝么通过该种方式可W缩短查询响应时间,用户等待时间 短,用户体验更好。
[0099] 在实际运用中,也可W是在成本低于一预设阔值的处理方式中再根据其它条件进 行选择,例如随机选择,或者按照处理方式的优先级进行选择。
[0100] W下W前述第一种跨库关联处理方式和第二种跨库关联处理方式为例说明送两 种跨库关联处理方式的查询成本计算过程。
[0101] 假设第一种跨库关联处理方式的成本为Cost(方式一),郝么可W采用公式(1)计 算Cost (方式一)。
[010引 Cost (方式 一)=CostRead(T0talR0ws(l_t))+…+CostRead(T0talR0ws(;r_ t))+CostNet巧ows(l_t)+…+Rows(;r_t))+Cost化er_j。in巧ows(l_t),…Rows(;r_t))公式(l)
[0103] 其中,r的取值为大于或等于2的整数。r表示查询条件中所涉及的数据库的数 量 W及编号。在公式(1)中省略了 CostKead(T〇talRows(2_t))至 CostKead(T〇talRows(;r-l_ t))。TotalRows(;r_t)表示表 r 的总记录数。CostKeed(T〇talRows(;r_t))表示读取表 r 的 全部记录的成本。R〇ws(;r_t)表示表r返回满足查询条件的记录数。CostNet(R〇ws(l_t)+… +Rows(;r_t))表示网络传输表1至表r中满足查询条件的记录的成本。Costuwrjeir^Rowsl^L t),…Rows (;r_t))表示应用层关联表1至表r中满足查询条件的记录的成本。
[0104] 假设第二种跨库关联处理方式的成本为Cost(方式二),郝么可W采用公式(2)计 算Cost(方式二)。
[0105] Cost (方式二)=CostRead (TotalRows (l_t))+CostNet (TotalRows (1_ t)) +CostTmp (TotalRows (l_t)) +CostDB」〇in 巧ows (l_t), Rows (;r_t))公式似
[0106] 其中,CostNet(TotalRows(l_t))表示传输表 1 的成本。CostTmp(TotalRows(l_t)) 创建并导入表1的全部记录的临时表的成本。C〇StDBjein(R〇WS(l_t),…Rows(;r_t))为物理 库关联表1和表:1"的成本代价,可^等价于(:〇31:。,^」。1。巧〇巧3(1_0,3〇?3(1'_1:))乘^折算因 子。
[0107] 由W上公式可W看出,统计信息包括N个不同的数据库中与所述查询条件对应的 记录数和每条记录的数据长度。对应的,根据所述统计信息和所述每一种跨库关联处理方 式包含的原子操作项的成本参数计算所述每一种跨库关联处理方式的查询成本,具体包 括:根据所述记录数、所述数据长度和所述原子操作项的成本参数获得所述每一种跨库关 联处理方式包含的每一所述原子操作项的成本;对所述每一种跨库关联处理方式包含的每 一所述原子操作项的成本进行求和获得所述每一种跨库关联处理方式的查询成本。
[0108] 具体来说,所述根据所述记录数、所述数据长度和所述原子操作项的成本参数获 得所述每一种跨库关联处理方式包含的每一所述原子操作项的成本,具体包括;将所述记 录数、所述数据长度和所述原子操作项的成本参数相乘得到的乘积作为所述每一种跨库关 联处理方式包含的每一所述原子操作项的成本。
[0109] W下举两个具体的例子来说明本申请实施例中的数据查询方法的实施过程。
[0110] 第一例,假设接收到的查询条件为查询所有用户与商铺的对应关系,用S化表示 为:select user_name, shop_name from user tl, shop t2where tl. user_id = t2. user- id。
[0111] 获取用户库的统计信息为总记录数为lOOw(万)、user_name的平均数据长度为 20字节W及user_id的平均数据长度为4字节。获取商铺库的统计信息为总记录数为 5000W(万)、shop_name的平均数据长度为20字节W及user_id的平均数据长度为4字 节。关联算法采用哈希连接,其成本为Costhash win(l_t,r_t) = min(Rows(l_t),Rows(;r_ t))*0.01+Max(Rows(l_t),Rows(;r_t))*0.001。其中,min〇 为取最小值操作。Max〇 为取 最大值操作。
[0112] 郝么分别采用公式(1)和公式(2) W及表一中的成本参数计算第一种和第二种跨 库关联处理方式的成本如下:
[0113] Cost (方式一)=(20 + 4) * (100W + 5000W) *0. 3 (数据获 取)+ (20+4) * (lOOw巧OOOw) *0. 4 (网络传输)+4* (100w*0. l+5000w*0. 2)(中间件哈希连接) =37172. 24004W。
[0114] Cost(方式二)=(20+4)*100w*0. 3(数据获取)+ (20+4)*100w*0. 4(网络传 输)+ (20+4)*100w*l. 1(临时表创建及数据导入)+4*(100w*0. l+5000w*0. 2)*0. 5(物理库 哈希连接)=4540w。
[0115] 然后选择成本较低的第二种跨库关联处理方式为本次使用的跨库关联处理方式。 利用第二种跨库关联处理方式进行数据查询。
[0116] 第二例,与第一例不同的是,查询深圳地区的用户与商铺的对应关系,用S化表示 为:select user_name, shop_name from user tl, shop t2where tl. user_id = t2. user- id and tl. zone = ' 深圳' and t2. register_zone =' 深圳'。
[0117] 另外,商铺库的总记录数为lOOw。根据"深圳"的过滤条件,用户库中满足过滤条 件的记录为1000,商铺库中满足过滤条件的记录为5000条。
[0118] 分别采用公式(1)和公式(2) W及表一中的成本参数计算第一种和第二种跨库关 联处理方式的成本如下:
[0119] Cost (方式一)=(20 + 4) * (lOOw + lOOw) *0. 3 (数据获 取)+ (20+4)*(0. lw+0. 5w)*0. 4(网络传输)+4*(0. lw*0. 1+0. 5w*0. 2)(中间件哈希连接) =144. 62w〇
[0120] Cost (方式二)=(20+4) *100w*0. 3 (数据获取)+ (20+4) *100w*0. 4 (网络传 输)+ (20+4) *100w*l. 1 (临时表创建及数据导入)+4* (0. lw*0. 1+0. 5w*0. 2) *0. 5 (物理库哈 希连接)=462. 〇22讯。
[0121] 然后选择成本较低的第一种跨库关联处理方式为本次使用的跨库关联处理方式。 利用第一种跨库关联处理方式进行数据查询。
[0122] 由此可见,在不同的查询条件下,每种跨库关联处理方式的性能消耗也不相同,所 W本申请实施例中通过引入基于成本代价的选择策略,得到更优的跨库关联查询处理方 式,提高了系统跨库关联查询的整体性能。
[0123] 基于同一发明构思,本申请实施例还提供一种数据查询装置,图4所示的装置涉 及到的术语的含义W及具体实现,可W参考前述图3 W及实施例的相关描述。
[0124] 请参考图4所示,该装置包括:接收单元201,用于接收查询请求,查询请求中包括 查询条件;查询条件涉及N个不同的数据库;N为大于或等于2的整数;处理单元202,用于 计算Μ种跨库关联处理方式中每一种跨库关联处理方式的查询成本;其中,每一种跨库关 联处理方式的查询成本为通过每一种跨库关联处理方式在Ν个不同的数据库中进行与查 询条件对应的数据查询的成本;Μ为大于或等于2的整数;根据每一种跨库关联处理方式的 查询成本确定出本次使用的跨库关联处理方式;其中,本次使用的跨库关联处理方式为Μ 种跨库关联处理方式中的一种;查询单元203,用于通过本次使用的跨库关联处理方式在Ν 个不同的数据库中进行与查询条件对应的数据查询。
[0125] 可选的,处理单元202用于获取Ν个不同的数据库的与查询条件对应的统计信息; 根据统计信息和每一种跨库关联处理方式包含的原子操作项的成本参数计算每一种跨库 关联处理方式的成本。
[0126] 可选的,统计信息包括至少两个数据库中与查询条件对应的记录数和每条记录的 数据长度,处理单元202具体用于;根据记录数、数据长度和原子操作项的成本参数获得每 一种跨库关联处理方式包含的每一原子操作项的成本;对每一种跨库关联处理方式包含的 每一原子操作项的成本进行求和获得每一种跨库关联处理方式的成本。
[0127] 可选的,处理单元202具体用于:将记录数、数据长度和原子操作项的成本参数相 乘得到的乘积作为每一种跨库关联处理方式包含的每一原子操作项的成本。
[0128] 可选的,查询单元203具体用于;当本次使用的跨库关联处理方式为第一种跨库 关联处理方式时,从N个不同的数据库中获取与查询条件对应的数据;对数据进行关联操 作。
[0129] 可选的,查询单元203具体用于;当本次使用的跨库关联处理方式为第二种跨库 关联处理方式时,将N个不同数据库中的N-1个数据库中的数据表发送给剩余的一个数据 库;根据数据表建立临时数据表;获取临时数据表和剩余的一个数据库中与查询条件对应 的数据;对数据进行关联操作。
[0130] 前述图2实施例中的数据查询方法中的各种变化方式和具体实例同样适用于本 实施例的数据查询装置,通过前述对数据查询方法的详细描述,本领域技术人员可W清楚 的知道本实施例中数据查询装置的实施方法,所W为了说明书的简洁,在此不再详述。
[0131] 基于同一发明构思,本申请实施例还提供一种电子设备。图5所示的电子设备涉 及到的术语的含义W及具体实现,可W参考前述图3 W及实施例的相关描述。
[0132] 请参考图5所示,该电子设备包括;处理器301、发送器302、接收器303、存储器 304和输入输出(I/O)接口 305。处理器301具体可W是通用的中央处理器(CPU),可W是 特定应用集成电路(英文;Application Specific Integrated Cir州it,简称;ASIC),可W 是一个或多个用于控制程序执行的集成电路。I/O接口 305可W连接到键盘,鼠标,触摸屏 设备,语音激活输入模块,显示屏、摄像头等。存储器304的数量可W是一个或多个。存储 器304可W包括只读存储器(英文;Read化ly Memo巧,简称;ROM)、随机存取存储器(英 文;Random Access Memo巧,简称;RAM)和磁盘存储器。送些存储器、接收器303和发送器 302通过总线与处理器301相连接。接收器303和发送器302用于与外部设备进行网络通 信,具体可W通过W太网、无线接入网、无线局域网等网络与外部设备进行通信。接收器303 和发送器302可W是物理上相互独立的两个元件,也可W是物理上的同一个元件。
[0133] 存储器304中可W存储指令,处理器301可W执行存储器304中存储的指令。
[0134] 具体来说,接收器303,用于接收查询请求,查询请求中包括查询条件;查询条件 涉及N个不同的数据库;N为大于或等于2的整数;处理器301,用于计算Μ种跨库关联处理 方式中每一种跨库关联处理方式的查询成本;其中,每一种跨库关联处理方式的查询成本 为通过每一种跨库关联处理方式在Ν个不同的数据库中进行与查询条件对应的数据查询 的成本;Μ为大于或等于2的整数;根据每一种跨库关联处理方式的查询成本确定出本次使 用的跨库关联处理方式;其中,本次使用的跨库关联处理方式为Μ种跨库关联处理方式中 的一种;处理器301还用于通过本次使用的跨库关联处理方式在Ν个不同的数据库中进行 与查询条件对应的数据查询。
[0135] 可选的,处理器301用于获取Ν个不同的数据库的与查询条件对应的统计信息;根 据统计信息和每一种跨库关联处理方式包含的原子操作项的成本参数计算每一种跨库关 联处理方式的成本。
[0136] 可选的,统计信息包括至少两个数据库中与查询条件对应的记录数和每条记录的 数据长度,处理器301具体用于;根据记录数、数据长度和原子操作项的成本参数获得每一 种跨库关联处理方式包含的每一原子操作项的成本;对每一种跨库关联处理方式包含的每 一原子操作项的成本进行求和获得每一种跨库关联处理方式的成本。
[0137] 可选的,处理器301具体用于:将记录数、数据长度和原子操作项的成本参数相乘 得到的乘积作为每一种跨库关联处理方式包含的每一原子操作项的成本。
[0138] 可选的,处理器301具体用于;当本次使用的跨库关联处理方式为第一种跨库关 联处理方式时,从N个不同的数据库中获取与查询条件对应的数据;对数据进行关联操作。
[0139] 可选的,处理器301具体用于;当本次使用的跨库关联处理方式为第二种跨库关 联处理方式时,将N个不同数据库中的N-1个数据库中的数据表发送给剩余的一个数据库; 根据数据表建立临时数据表;获取临时数据表和剩余的一个数据库中与查询条件对应的数 据;对数据进行关联操作。
[0140] 本申请实施例中的电子设备例如是前述实施例中的中间件。
[0141] 前述图2实施例中的数据查询方法中的各种变化方式和具体实例同样适用于本 实施例的电子设备,通过前述对数据查询方法的详细描述,本领域技术人员可W清楚的知 道本实施例中电子设备的实施方法,所W为了说明书的简洁,在此不再详述。
[0142] 申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0143] 本申请实施例中,在接收到查询请求时,如果查询请求中的查询条件涉及至少两 个不同的数据库,就表示需要进行跨库关联处理,所W就计算多种跨库关联处理方式中每 一种跨库关联处理方式的成本,然后根据每种跨库关联处理方式的成本确定使用哪种跨库 关联处理方式进行数据查询。因此,相较于现有技术中每个系统只固定用一种跨库关联处 理方式,本申请实施例中的方法能够基于成本在多种处理方式中进行选择,所W本申请实 施例中的方法较灵活,而且处理方式也多样化。
[0144] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序 产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实 施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机 可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形 式。
[0145] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程 图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一 流程和/或方框、W及流程图和/或方框图中的流程和/或方框的结合。可提供送些计算 机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理 器W产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生 用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能 的装置。
[0146] 送些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备W特 定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指 令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或 多个方框中指定的功能。
[0147] 送些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计 算机或其他可编程设备上执行一系列操作步骤W产生计算机实现的处理,从而在计算机或 其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图 一个方框或多个方框中指定的功能的步骤。
[014引显然,本领域的技术人员可W对本申请进行各种改动和变型而不脱离本申请的精 神和范围。送样,倘若本申请的送些修改和变型属于本申请权利要求及其等同技术的范围 之内,则本申请也意图包含送些改动和变型在内。
【主权项】
1. 一种数据查询方法,其特征在于,包括: 接收查询请求,所述查询请求中包括查询条件;所述查询条件涉及N个不同的数据库; N为大于或等于2的整数; 计算Μ种跨库关联处理方式中每一种跨库关联处理方式的查询成本;其中,所述每一 种跨库关联处理方式的查询成本为通过所述每一种跨库关联处理方式在所述Ν个不同的 数据库中进行与所述查询条件对应的数据查询的成本;Μ为大于或等于2的整数; 根据所述每一种跨库关联处理方式的查询成本确定出本次使用的跨库关联处理方式; 其中,所述本次使用的跨库关联处理方式为所述Μ种跨库关联处理方式中的一种; 通过所述本次使用的跨库关联处理方式在所述Ν个不同的数据库中进行与所述查询 条件对应的数据查询。2. 如权利要求1所述的方法,其特征在于,所述计算Μ种跨库关联处理方式中每一种跨 库关联处理方式的查询成本,具体包括: 获取所述Ν个不同的数据库的与所述查询条件对应的统计信息; 根据所述统计信息和所述每一种跨库关联处理方式包含的原子操作项的成本参数计 算所述每一种跨库关联处理方式的查询成本。3. 如权利要求2所述的方法,其特征在于,所述统计信息包括所述Ν个不同的数据库中 与所述查询条件对应的记录数和每条记录的数据长度, 所述根据所述统计信息和所述每一种跨库关联处理方式包含的原子操作项的成本参 数计算所述每一种跨库关联处理方式的查询成本,具体包括: 根据所述记录数、所述数据长度和所述原子操作项的成本参数获得所述每一种跨库关 联处理方式包含的每一所述原子操作项的成本; 对所述每一种跨库关联处理方式包含的每一所述原子操作项的成本进行求和获得所 述每一种跨库关联处理方式的查询成本。4. 如权利要求3所述的方法,其特征在于,所述根据所述记录数、所述数据长度和所述 原子操作项的成本参数获得所述每一种跨库关联处理方式包含的每一所述原子操作项的 成本,具体包括: 将所述记录数、所述数据长度和所述原子操作项的成本参数相乘得到的乘积作为所述 每一种跨库关联处理方式包含的每一所述原子操作项的成本。5. 如权利要求1-4任一项所述的方法,其特征在于,当所述本次使用的跨库关联处理 方式为第一种跨库关联处理方式时, 所述使用所述本次使用的跨库关联处理方式在所述Ν个不同的数据库中进行与所述 查询条件对应的数据查询,具体包括: 从所述Ν个不同的数据库中获取与查询条件对应的数据; 对所述数据进行关联操作。6. 如权利要求1-4任一项所述的方法,其特征在于,当所述本次使用的跨库关联处理 方式为第二种跨库关联处理方式时, 所述使用所述本次使用的跨库关联处理方式在所述Ν个不同的数据库中进行与所述 查询条件对应的数据查询,具体包括: 将所述Ν个不同数据库中的Ν-1个数据库中的数据表发送给剩余的一个数据库; 根据所述数据表建立临时数据表; 获取所述临时数据表和所述剩余的一个数据库中与所述查询条件对应的数据; 对所述数据进行关联操作。7. -种数据查询装置,其特征在于,包括: 接收单元,用于接收查询请求,所述查询请求中包括查询条件;所述查询条件涉及N个 不同的数据库;N为大于或等于2的整数; 处理单元,用于计算Μ种跨库关联处理方式中每一种跨库关联处理方式的查询成本; 其中,所述每一种跨库关联处理方式的查询成本为通过所述每一种跨库关联处理方式在所 述Ν个不同的数据库中进行与所述查询条件对应的数据查询的成本;Μ为大于或等于2的 整数;根据所述每一种跨库关联处理方式的查询成本确定出本次使用的跨库关联处理方 式;其中,所述本次使用的跨库关联处理方式为所述Μ种跨库关联处理方式中的一种; 查询单元,用于通过所述本次使用的跨库关联处理方式在所述Ν个不同的数据库中进 行与所述查询条件对应的数据查询。8. 如权利要求7所述的装置,其特征在于,所述处理单元用于获取所述Ν个不同的数据 库的与所述查询条件对应的统计信息;根据所述统计信息和所述每一种跨库关联处理方式 包含的原子操作项的成本参数计算所述每一种跨库关联处理方式的成本。9. 如权利要求8所述的装置,其特征在于,所述统计信息包括所述至少两个数据库中 与所述查询条件对应的记录数和每条记录的数据长度,所述处理单元具体用于:根据所述 记录数、所述数据长度和所述原子操作项的成本参数获得所述每一种跨库关联处理方式包 含的每一所述原子操作项的成本;对所述每一种跨库关联处理方式包含的每一所述原子操 作项的成本进行求和获得所述每一种跨库关联处理方式的成本。10. 如权利要求9所述的装置,其特征在于,所述处理单元具体用于:将所述记录数、所 述数据长度和所述原子操作项的成本参数相乘得到的乘积作为所述每一种跨库关联处理 方式包含的每一所述原子操作项的成本。11. 如权利要求7-10任一项所述的装置,其特征在于,所述查询单元具体用于:当所述 本次使用的跨库关联处理方式为第一种跨库关联处理方式时,从所述Ν个不同的数据库中 获取与查询条件对应的数据;对所述数据进行关联操作。12. 如权利要求7-10任一项所述的装置,其特征在于,所述查询单元具体用于:当所述 本次使用的跨库关联处理方式为第二种跨库关联处理方式时,将所述Ν个不同数据库中的 Ν-1个数据库中的数据表发送给剩余的一个数据库;根据所述数据表建立临时数据表;获 取所述临时数据表和所述剩余的一个数据库中与所述查询条件对应的数据;对所述数据进 行关联操作。
【文档编号】G06F17/30GK105989142SQ201510091427
【公开日】2016年10月5日
【申请日】2015年2月28日
【发明人】朱文琦, 杨宜东, 张庆, 姚理, 朱仲楚
【申请人】华为技术有限公司