Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
DATA PROCESSING METHOD AND APPARATUS
Document Type and Number:
WIPO Patent Application WO/2015/188299
Kind Code:
A1
Abstract:
Provided are a data processing method and an apparatus, and the data processing method comprises: determining the number of partitions corresponding to current free programmable memory according to a database execution plan; partitioning the current free programmable memory according to the number of the partitions, to obtain programmable memory partitions corresponding to the number of the partitions; and using the programmable memory partitions to execute relational algebra logical operation corresponding to the database execution plan. Data processing efficiency can be improved.

Inventors:
KE LIANG (CN)
LI HUAIZHOU (CN)
WANG YUHU (CN)
Application Number:
PCT/CN2014/079453
Publication Date:
December 17, 2015
Filing Date:
June 09, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
International Classes:
G06F9/445
Foreign References:
CN1545023A2004-11-10
CN201965621U2011-09-07
US20140032509A12014-01-30
Attorney, Agent or Firm:
CHINABLE IP (CN)
北京弘权知识产权代理事务所(普通合伙) (CN)
Download PDF:
Claims:
权 利 要 求

1、 一种数据处理方法, 其特征在于, 包括:

根据数据库执行计划, 确定当前空闲可编程内存对应的分区数目; 根据所述分区数目, 对所述当前空闲可编程内存进行分区, 获得对应所述分 区数目的可编程内存分区;

利用所述可编程内存分区执行所述数据库执行计划对应的关系代数逻辑运 算。

2、 根据权利要求 1所述的方法, 其特征在于, 所述根据数据库执行计划, 确定当前空闲可编程内存对应的分区数目, 包括:

统计所述空闲可编程内存执行关系代数运算所处理的数据吞吐量与所述空 闲可编程内存大小比例的最优值 op;

根据所述数据库执行计划, 生成执行计划树, 并确定所述数据库执行计划 所需数据量的估计值 rc;

遍历所述执行计划树, 查找所述执行计划树中节点的关系代数运算所需数 据区域与补足区域的比例的最大值 rp, 其中, 所述数据区域指存储关系代数运 算的输入输出数据信息的存储空间, 所述补足区域指存储关系代数运算过程中 的临时数据信息的存储空间;

获取所述空闲可编程内存的数量 mc;

根据所述 op、 所述 rc、 所述 rp和所述 mc, 确定所述当前空闲可编程内存 对应的分区数目。

3、 根据权利要求 2所述的方法, 其特征在于, 所述利用所述可编程内存分 区执行所述数据库执行计划对应的关系代数逻辑运算之前, 还包括:

向所述可编程内存分区刷入关系代数逻辑集合,所述关系代数逻辑集合中包 含所述数据库执行计划对应的关系代数逻辑运算。

4、 根据权利要求 2或 3所述的方法, 其特征在于, 所述利用所述可编程内 存分区执行所述数据库执行计划对应的关系代数逻辑运算, 包括:

根据所述执行计划树,获得所述数据库执行计划对应的关系代数逻辑的执行 序列信息; 根据所述执行序列信息,依次激活所述可编程内存分区内的关系代数逻辑进 行运算。

5、 根据权利要求 4所述的方法, 其特征在于, 所述激活所述可编程内存分 区内的关系代数逻辑进行运算, 包括:

当激活的关系代数逻辑为一元运算符时,则直接获取所述一元运算符对应的 可编程内存分区内的数据进行运算;

当激活的关系代数逻辑为二元运算符,且所述二元运算符对应的两个可编程 内存分区具有相同的执行序列信息时,则所述二元运算符对应的两个可编程内存 分区同步数据寻址信息,由所述两个可编程内存分区中数据量大的一个可编程内 存分区执行当前激活的逻辑运算。

6、 根据权利要求 2所述的方法, 其特征在于, 所述利用所述可编程内存分 区执行所述数据库执行计划对应的关系代数逻辑运算, 包括:

根据所述执行计划树,获得所述数据库执行计划对应的关系代数运算符的逻 辑执行序列信息;

根据所述逻辑执行序列信息, 向所述可编程内存分区发送逻辑指令, 所述逻 辑指令用于驱动所述可编程内存分区进行逻辑运算。 7、 根据权利要求 4或 6所述的方法, 其特征在于, 所述利用所述可编程内 存分区执行所述数据库执行计划对应的关系代数逻辑运算, 还包括:

当所述逻辑执行序列信息对应的所有关系代数逻辑运算执行完毕后,判断是 否对分布于不同可编程内存分区内的运算结果进行聚合操作;

如果需要执行聚合操作, 则激活聚合逻辑运算, 根据分布于所述不同可编程 内存分区内的运算结果生成最终结果。

8、 一种数据处理装置, 其特征在于, 包括:

分区数目确定模块, 用于根据数据库执行计划, 确定当前空闲可编程内存对 应的分区数目;

分区模块, 用于根据所述分区数目, 对所述当前空闲可编程内存进行分区, 获得对应所述分区数目的可编程内存分区;

运算模块,用于利用所述可编程内存分区执行所述数据库执行计划对应的关 系代数逻辑运算。

9、 根据权利要求 8所述的装置, 其特征在于, 所述分区数目确定模块, 包 括:

第一参数单元, 用于统计所述空闲可编程内存执行关系代数运算所处理的 数据吞吐量与所述空闲可编程内存大小比例的最优值 op;

第二参数单元, 用于根据所述数据库执行计划, 生成执行计划树, 并确定 所述数据库执行计划所需数据量的估计值 rc;

第三参数单元, 用于遍历所述执行计划树, 查找所述执行计划树中节点的 关系代数运算所需数据区域与补足区域的比例的最大值 rp, 其中, 所述数据区 域指存储关系代数运算的输入输出数据信息的存储空间, 所述补足区域指存储 关系代数运算过程中的临时数据信息的存储空间;

第四参数单元, 用于获取所述空闲可编程内存的数量 mc;

数目确定单元, 用于根据所述 op、 所述 rc、 所述 rp和所述 mc, 确定所述当 前空闲可编程内存对应的分区数目。

10、 根据权利要求 9所述的装置, 其特征在于, 还包括:

逻辑刷入模块, 用于向所述可编程内存分区刷入关系代数逻辑集合, 所述关 系代数逻辑集合中包含所述数据库执行计划对应的所述关系代数逻辑运算。

11、 根据权利要求 9或 10所述的装置, 其特征在于, 所述运算模块, 包括: 执行序列获得单元, 用于根据所述执行计划树, 获得所述数据库执行计划对 应的关系代数逻辑的执行序列信息;

逻辑激活单元, 用于根据所述执行序列信息, 依次激活所述可编程内存分区 内的关系代数逻辑进行运算。

12、 根据权利要求 11所述的装置, 其特征在于, 所述逻辑激活单元, 包括: 第一激活子单元, 用于当激活的关系代数逻辑为一元运算符时, 则直接获取 所述一元运算符对应的可编程内存分区内的数据进行运算;

第二激活子单元, 用于当激活的关系代数逻辑为二元运算符, 且所述二元运 算符对应的两个可编程内存分区具有相同的执行序列信息时,则所述二元运算符 对应的两个可编程内存分区同步数据寻址信息,由所述两个可编程内存分区中数 据量大的一个可编程内存分区执行当前激活的逻辑运算。

13、 根据权利要求 9所述的装置, 其特征在于, 所述运算模块, 包括: 执行序列获得单元, 用于根据所述执行计划树, 获得所述数据库执行计划对 应的关系代数逻辑的执行序列信息;

逻辑指令发送单元, 用于根据所述逻辑执行序列信息, 向所述可编程内存分 区发送逻辑指令, 所述逻辑指令用于驱动所述可编程内存分区进行逻辑运算。

14、 根据权利要求 11或 13所述的装置, 其特征在于, 所述运算模块, 还包 括:

聚合判断单元,用于当所述逻辑执行序列信息对应的所有关系代数逻辑运算 执行完毕后, 判断是否对分布于不同分区内的运算结果进行聚合操作;

聚合单元, 用于如果需要执行聚合操作, 则激活聚合逻辑运算, 根据分布于 所述不同可编程内存分区内的运算结果生成最终结果。

15、 一种数据处理装置, 其特征在于, 包括: 处理器、 存储器和总线; 所 述处理器与存储器通过所述总线相互连接; 其中,

所述存储器, 用于存储计算机执行指令;

所述处理器, 用于执行所述存储器存储的所述计算机执行指令, 以使所述数 据处理装置执行如权利要求 1-7任意一项所述的方法。

Description:
一种数据处理方法及装置 技术领域

[01] 本发明涉及计算机技术领域, 特别涉及一种数据处理方法及装置 背景技术

[02] 现有数据处理系统中, 可以将每一个 SPU ( Synergistic Processing Unit, 协处理 器)通过 NIC (Network Interface Card, 网卡)互联到主机上, SPU包括: CPU (Central Processing Unit, 中央处理器)、 内存等配置, SPU后端连接磁盘。 通常, 在 SPU内 部集成作为加速引擎的 FPGA (Field Programmable Gate Array, 现场可编程门阵列) 辅助进行数据选择和压缩等工作。

[03] 一般, FPGA被设置于内存与 CPU之间。 可见, 数据流需要在 CPU、 FPGA和 内存之间流动。 实际应用中, CPU、 FPGA和内存三者的 I/O (Input/Output, 输入 / 输出)带宽往往不一致。 由此, 数据流在 CPU、 FPGA和内存之间的流动可能导致数 据处理效率低下。 发明内容

[04] 本发明的实施例中提供了一种数据处理方法及 装置, 能够提高数据处理效率。 [05] 为了解决上述技术问题, 本发明实施例公开了如下技术方案: [06] 第一方面, 提供一种数据处理方法, 包括:

[07] 根据数据库执行计划, 确定当前空闲可编程内存对应的分区数目; [08] 根据所述分区数目, 对所述当前空闲可编程内存进行分区, 获得对应所述分区 数目的空闲可编程内存分区;

[09] 利用所述空闲可编程内存分区执行所述数据库 执行计划对应的相应关系代数逻 辑运算。

[10] 结合上述第一方面, 在第一实施例中, 所述根据数据库执行计划, 确定当前空 闲可编程内存对应的分区数目, 包括: [11] 统计所述空闲可编程内存执行关系代数运算所 处理的数据吞吐量与所述空闲可 编程内存大小比例的最优值 op;

[12] 根据所述数据库执行计划, 生成执行计划树, 并预估确定所述数据库执行计划 所需数据量的估计值 rc;

[13] 遍历所述执行计划树, 查找所述执行计划树中节点的关系代数运算所 需数据区 域与补足区域的比例的最大值 rp,其中,所述数据区域指存储关系代数运算 输入输 出数据信息的存储空间,所述补足区域指存储 关系代数运算过程中的临时数据信息的 存储空间;

[14] 查看获取所述空闲可编程内存的数量 mc;

[15] 根据所述 op、 所述 rc、 所述 rp和所述 mc之间的映射函数, 确定所述当前空闲 可编程内存对应的分区数目。

[16] 结合上述第一实施例, 在第二实施例中, 所述利用所述空闲可编程内存分区执 行相应所述数据库执行计划对应的关系代数逻 辑运算之前, 还包括:

[17] 向所述空闲可编程内存分区刷入关系代数逻辑 集合, 所述关系代数逻辑集合中 包含所述数据库执行计划对应的所述关系代数 逻辑运算。

[18] 结合上述第一实施例和第二实施例, 在第三实施例中, 所述利用所述空闲可编 程内存分区执行所述数据库执行计划对应的关 系代数相应逻辑运算, 包括:

[19] 根据所述执行计划树, 获得所述数据库执行计划对应的关系代数逻辑 的执行序 列信息;

[20] 根据所述执行序列信息, 依次激活所述可编程内存相应分区内的关系代 数逻辑 进行运算。

[21] 结合上述第三实施例, 在第四实施例中, 所述激活所述可编程内存相应分区内 的关系代数逻辑进行运算, 包括:

[22] 当激活的关系代数逻辑为一元运算符时, 则直接获取所述一元运算符对应的可 编程内存分区内的数据进行运算;

[23] 当激活的关系代数逻辑为二元运算符, 且所述二元运算符对应的两个可编程内 存分区具有相同的执行序列信息时,则所述二 元运算符对应的两个可编程内存分区同 步数据寻址信息,由所述两个可编程内存分区 其中数据量大的一个可编程内存分区执 行当前激活的逻辑运算。

[24] 结合上述第一实施例, 在第五实施例中, 所述利用所述空闲可编程内存分区执 行相应所述数据库执行计划对应的关系代数逻 辑运算, 包括:

[25] 根据所述执行计划树, 获得得到所述数据库执行计划对应的关系代数 运算符的 逻辑执行序列信息;

[26] 根据所述逻辑执行序列信息, 向所述可编程内存相应分区发送逻辑指令, 所述 逻辑指令用于驱动所述可编程内存相应分区进 行逻辑运算。

[27] 结合上述第三和第五实施例, 在第六实施例中, 所述利用所述可编程内存分区 执行所述数据库执行计划对应的关系代数逻辑 运算, 还包括:

[28] 当所述逻辑执行序列信息对应的所有关系代数 逻辑运算执行完毕后, 判断是否 对分布于不同可编程内存分区内的运算结果进 行聚合操作;

[29] 如果需要执行聚合操作, 则激活聚合逻辑运算, 根据分布于所述不同可编程内 存分区内的运算结果生成最终结果。

[30] 第二方面, 提供一种数据处理装置, 包括:

[31] 分区数目确定模块, 用于根据数据库执行计划, 确定当前空闲可编程内存对应 的分区数目;

[32] 分区模块, 用于根据所述分区数目, 对所述当前空闲可编程内存进行分区, 获 得对应所述分区数目的空闲可编程内存分区;

[33] 运算模块, 用于利用所述可编程内存分区执行所述数据库 执行计划对应的关系 代数逻辑运算。

[34] 结合上述第一方面, 在第一实施例中, 所述分区数目确定模块, 包括:

[35] 第一参数单元, 用于统计所述空闲可编程内存执行关系代数运 算所处理的数据 吞吐量与所述空闲可编程内存大小比例的最优 值 op;

[36] 第二参数单元, 用于根据所述数据库执行计划, 生成执行计划树, 并确定预估 所述数据库执行计划所需数据量的估计值 rc;

[37] 第三参数单元, 用于遍历所述执行计划树, 查找所述执行计划树中节点的关系 代数运算所需数据区域与补足区域的比例的最 大值 rp,其中,所述数据区域指存储关 系代数运算的输入输出数据信息的存储空间, 所述补足区域指存储关系代数运算过程 中的临时数据信息的存储空间;

[38] 第四参数单元, 用于获取查看所述空闲可编程内存的数量 mc;

[39] 数目确定单元, 用于根据所述 op、所述 rc、所述 rp和所述 mc之间的映射函数, 确定所述当前空闲可编程内存对应的分区数目 。

[40] 结合上述第一实施例, 在第二实施例中, 还包括:

[41] 逻辑刷入模块, 用于向所述空闲可编程内存分区刷入关系代数 逻辑集合, 所述 关系代数逻辑集合中包含所述数据库执行计划 对应的所述关系代数逻辑运算。

[42] 结合上述第一实施例和第二实施例, 在第三实施例中, 所述运算模块, 包括: [43] 执行序列获得单元, 用于根据所述执行计划树, 获得所述数据库执行计划对应 的关系代数逻辑的执行序列信息;

[44] 逻辑激活单元, 用于根据所述执行序列信息, 依次激活所述可编程内存相应分 区内的关系代数逻辑进行运算。 结合上述第三实施例, 在第四实施例中, 所述逻辑激 活单元, 包括: [45] 第一激活子单元, 用于当激活的关系代数逻辑为一元运算符时, 则直接获取所 述一元运算符对应的可编程内存分区内的数据 进行运算;

[46] 第二激活子单元, 用于当激活的关系代数逻辑为二元运算符, 且所述二元运算 符对应的两个可编程内存分区具有相同的执行 序列信息时,则所述二元运算符对应的 两个可编程内存分区同步数据寻址信息,由所 述两个可编程内存分区其中数据量大的 一个可编程内存分区执行当前激活的逻辑运算 。结合上述第一实施例,在第五实施例 中, 所述运算模块, 包括:

[47] 执行序列获得单元, 用于根据所述执行计划树, 获得所述数据库执行计划对应 的关系代数逻辑的执行序列信息;

[48] 逻辑指令发送单元, 用于根据所述逻辑执行序列信息, 向所述可编程内存相应 分区发送逻辑指令, 所述逻辑指令用于驱动所述可编程内存相应分 区进行逻辑运算。 结合上述第三和第五实施例, 在第六实施例中, 所述运算模块, 还包括:

[49] 聚合判断单元, 用于当所述逻辑执行序列信息对应的所有关系 代数逻辑运算执 行完毕后, 判断是否对分布于不同分区内的运算结果进行 聚合操作; [50] 聚合单元, 用于如果需要执行所述聚合操作, 则激活聚合逻辑运算, 根据分布 于所述不同可编程内存分区内的运算结果生成 最终结果。

[51] 第三方面, 提供一种数据处理装置, 包括: 处理器、 存储器和总线; 所述处理 器与存储器通过所述总线相互连接; 其中, [52] 所述存储器, 用于存储计算机执行指令;

[53] 所述处理器, 用于执行所述存储器存储的所述计算机执行指 令, 以使所述数据 处理装置执行上述数据处理方法。

[54] 本发明实施例中, 根据数据库执行计划对空闲可编程内存进行分 区, 并利用可 编程内存技术, 调度可编程内存分区执行相应逻辑运算。可见 , 所处理的数据无需通 过内存总线传输至处理器进行处理, 而是由内存自身进行数据处理, 从而实现在内存 本地实现数据处理的技术效果。 由于数据在内存本地进行处理,避免数据在处 理器和 内存之间的传输过程, 处理器的 I/O带宽与内存的 I/O带宽是否相同将不会对内存中 所进行的数据处理过程产生影响, 从而, 能够提高数据处理的效率。 附图说明 [55] 为了更清楚地说明本发明实施例或现有技术中 的技术方案, 下面将对实施例或 现有技术描述中所需要使用的附图作简单地介 绍, 显而易见地, 下面描述中的附图仅 仅是本发明的一些实施例,对于本领域普通技 术人员来讲,在不付出创造性劳动性的 前提下, 还可以根据这些附图获得其他的附图。

[56] 图 1为本发明提供的一种数据处理方法实施例的 程示意图;

[57] 图 2为图 1中步骤 101的实现流程示意图;

[58] 图 3为本发明提供的另一种数据处理方法实施例 流程示意图;

[59] 图 4为本发明实施例中可编程内存分区的结构示 图;

[60] 图 5为图 1中步骤 103的实现流程示意图;

[61] 图 6为本发明实施例中一元运算符和二元运算符 示意图;

[62] 图 7为本发明实施例中二元运算符的激活运算过 示意图;

[63] 图 8为图 1中步骤 103的另一种实现流程示意图;

[64] 图 9为本发明提供的一种数据处理装置实施例的 构示意图; [65] 图 10为图 9中分区数目确定模块的结构示意图; [66] 图 11为本发明提供的另一种数据处理装置实施例 结构示意图; [67] 图 12为图 9中运算模块的结构示意图; [68] 图 13为图 12中逻辑激活单元的结构示意图; [69] 图 14为图 9中运算模块的另一种结构示意图;

[70] 图 15为图 12所示实施例基础之上的运算模块的另一种结 示意图; [71] 图 16为图 14所示实施例基础之上的运算模块的另一种结 示意图; [72] 图 17为本发明实施例提供的一种基于计算机系统 现的数据处理装置示意图。 具体实施方式

[73] 为了使本技术领域的人员更好地理解本发明实 施例中的技术方案, 并使本发明 实施例的上述目的、特征和优点能够更加明显 易懂, 下面结合附图对本发明实施例中 技术方案作进一步详细的说明。

[74] 如图 1所示, 为本发明提供的一种数据处理方法实施例, 该方法可以包括以下 执行步骤: [75] 步骤 101、 根据数据库执行计划, 确定当前空闲可编程内存对应的分区数目。

[76] 本发明实施例中, 为了提高数据处理效率, 用作编程计算的内存为系统内的空 闲内存。 具体地, 为内存提供可编程接口, 通过该可编程接口, 为一块空闲内存区域 赋予特定的计算能力。

[77] 上述步骤中, 当操作系统加载数据库应用时, 需要对当前空闲可编程内存进行 分区, 目的是以便后续调用相应的空闲可编程内存分 区执行逻辑运算。此外, 分区数 目需要根据数据库执行计划进行确定。数据库 执行计划是指一条查询语句在数据库系 统中的执行过程或访问路径的描述, 即怎样去完成一个查询任务的详细方案。不同 的 数据库执行计划,所需要的处理能力不同,对 应需要的可编程内存分区的数目也就会 不同。 [78] 步骤 102、根据所述分区数目, 对所述当前空闲可编程内存进行分区, 获得对应 所述分区数目的可编程内存分区。

[79] 该步骤中, 当根据数据库执行计划进行确定出分区数目时 , 即可对空闲可编程 内存进行分区, 获得对应所述分区数目的可编程内存分区。

[80] 步骤 103、利用所述可编程内存分区执行所述数据库 执行计划对应的关系代数逻 辑运算。

[81] 该步骤中, 由于可编程内存分区具有特定的计算能力, 因此, 可以利用该可编 程内存分区执行相应的关系代数逻辑运算。

[82] 本发明实施例中, 根据数据库执行计划对空闲可编程内存进行分 区, 并利用可 编程内存技术, 调度可编程内存分区执行相应逻辑运算。可见 , 所处理的数据无需通 过内存总线传输至处理器进行处理, 而是由内存自身进行数据处理, 从而实现在内存 本地实现数据处理的技术效果。 由于数据在内存本地进行处理,避免数据在处 理器和 内存之间的传输过程, 处理器的 I/O带宽与内存的 I/O带宽是否相同将不会对内存中 所进行的数据处理过程产生影响, 从而, 能够提高数据处理的效率。

[83] 为了便于对本方案的理解, 下面通过具体实施例对上述数据处理方法进行 详细 说明。

[84] 本发明实施例中, 根据数据库执行计划, 确定当前空闲可编程内存对应的分区 数目的实现方式如图 2所示, 包括以下执行步骤:

[85] 步骤 201、统计所述空闲可编程内存执行关系代数运 算所处理的数据吞吐量与所 述空闲可编程内存大小比例的最优值 op;

[86] 这里的统计数据可以依据进行关系代数运算所 处理的数据吞吐量与所使用的空 闲可编程内存大小的历史数据进行统计分析, 确定两者比例的最优值 op。

[87] 步骤 202、 由数据库的解析引擎(SQLparse)根据所述数据库 执行计划, 生成执 行计划树, 并确定所述数据库执行计划所需数据量的估计 值 rc;

[88] 步骤 203、由所述数据库的解析引擎遍历所述执行计 划树,查找所述执行计划树 中节点的关系代数运算所需数据区域与补足区 域的比例的最大值 rp;

[89] 步骤 204、 获取所述空闲可编程内存的数量 mc;

[90] 步骤 205、 根据所述 op、 rc、 rp和 mc, 确定所述当前空闲可编程内存对应的分 区数目。

[91] 此处需要说明的是, 根据所述 op、 rc、 rp和 mc计算分区数目的方法包括但不 限定为 op、 rc、 rp和 mc之间的函数映射关系。决定分区数目的参数 子包括上述 rp、 op、 rc禾 P mc, 分区数 n = f (rp, op, rc, mc), 其中, 分区数 n与 mc成正比例关系, 分区数 n与 rc 、 rp成反比, op通常为一个常量系数。

[92] 在本发明提供的另一个实施例中, 如图 3所示, 在步骤 103之前, 还包括以下 执行步骤: [93] 步骤 104、 向所述可编程内存分区刷入关系代数逻辑集合 。

[94] 该实施例中, 空闲内存为可编程内存, 因此, 可以通过刷入关系代数逻辑集合 的方式, 使得空闲可编程内存分区具有特定的计算能力 , 该过程可以理解为空闲可编 程内存分区的初始化过程。进而,可以利用该 空闲可编程内存分区执行后续相应逻辑 运算, 这里的关系代数逻辑集合中的关系代数逻辑可 以实现关系代数运算符的运算。

[95] 为了便于理解,下面对本发明实施例中的可编 程内存分区结构进行介绍。如图 4 所示, 为该可编程内存分区的结构示意图, 具体包括: 数据区域、 补足区域和逻辑控 制区域。其中, 数据区域用于存储关系代数运算的输入输出数 据信息; 补足区域用于 存储关系代数运算过程中的临时数据信息; 逻辑控制区域为可编程逻辑区域,可以通 过编程接口, 向该逻辑控制区域中刷入运算逻辑, 从而为该内存分区提供计算能力。 [96] 由此, 图 3所示实施例中, 通过向可编程内存分区中的逻辑控制区域刷入 关系 代数逻辑集合, 使得可编程内存分区具有特定的计算能力。

[97] 当可编程内存分区完成初始化过程之后, 即可利用可编程内存分区执行相应逻 辑运算。 图 5所示为该执行阶段的流程, 具体可以包括:

[98] 步骤 105、根据所述执行计划树,获得所述数据库执 行计划对应的关系代数逻辑 的执行序列信息 (task queue);

[99] 步骤 106、根据所述执行序列信息,依次激活所述可 编程内存分区内的关系代数 逻辑进行运算。

[100]该实施例中, 由 sqlparse生成的执行计划树,可以得到相应数据 执行计划的关 系代数逻辑的 task queue, 进而, 根据该 task queue, 来通知 n个可编程内存分区, 激 活相应分区内的关系代数逻辑进行运算。 具体地, 可以根据 task queue中的关系代数 逻辑顺序, 从第一个关系代数逻辑开始执行激活 (active) 操作, 当第一个关系代数 逻辑执行完毕后, 切换至下一个关系代数逻辑并执行激活操作, 直至完成 task queue 中所有的关系代数逻辑运算。

[101]可见, 本发明实施例中, 通过将可编程内存进行分区, 并根据数据库的执行计 划来驱动多个分区同时执行,提供了多个计算 单元同时进行逻辑运算的能力, 从而达 到并行化执行数据库执行计划的技术效果, 大大提高数据处理的效率。

[102]具体应用场景中, 根据关系代数逻辑的参数加入个数, 可以将关系代数逻辑划 分为图 6所示的两类: 一元运算符和二元运算符, 其中, 一元运算符为携带一个参数 的函数, 二元运算符为携带两个参数的函数。 其中, 入参地址表示: 访问该参数的内 存地址; next类型表示: 下一个关系代数逻辑的类型, 为一元运算符或二元运算符。

[103]针对不同的运算符, 激活运算的方式有所不同。 具体为:

[104]当激活的关系代数逻辑为一元运算符时 则直接获取所述一元运算符对应的可 编程内存分区内的数据进行运算;

[105]当激活的关系代数逻辑为二元运算符, 且所述二元运算符对应的两个可编程内 存分区具有相同的执行序列信息时,则所述二 元运算符对应的两个可编程内存分区同 步数据寻址信息,由两个可编程内存中数据量 大的一个可编程内存分区执行当前激活 的逻辑运算, 实现分区之间的协同运算。

[106]下面通过一个具体应用场景, 对进行详细说明。 [107]如图 7所示, 两个可编程内存分区 a和 b拥有相同的执行序列信息, 例如: 同 为 opl~op4, 其中, opl~op3中激活 (active) 的为一元运算符, op4中激活的为二元 运算符。此时, task queue已经执行到 op3,当分区 a执行完 op3时,停止激活 task queue 中的下一逻辑运算 op4, 等待分区 b执行 op3。 当分区 b也执行完 op3, 同样停止激 活 task queue中的下一逻辑运算 op4。 也就是两个分区 a和 b均完成各自 Task queue 中的 op3时, 两个分区等待执行后续执行序列; 接着, 两个分区同步数据寻址信息, 然后由数据量大的一个分区来执行 op4操作。

[108]具体应用中,当 op4操作执行完毕后,需要由执行 op4的分区继续判断 task queue 中是否还存在下一个逻辑操作, 如果有, 则由该分区继续执行下一个逻辑操作, 直至 整个 task queue执行完毕。 [109]上述实施例中, 描述的是在可编程内存完成分区之后, 通过向可编程内存分区 中的逻辑控制区域刷入关系代数逻辑集合,使 得可编程内存分区具有特定计算能力的 实现方式。

[110]实际应用场景中, 是否需要向可编程内存分区中的逻辑控制区域 刷入关系代数 逻辑集合的步骤, 需要根据内存分区中的逻辑控制区域写入逻辑 的速度, 也就是需要 根据内存的性能来决定。具体地, 当分区中的逻辑控制区域写入新指令的速度可 忽略 不计时, 则向其中刷入关系代数逻辑集合的步骤可以省 略; 否则, 当分区中的逻辑控 制区域写入新指令的速度低于一定阈值, 导致影响到整个执行计划的执行效率时, 则 需要该刷入关系代数逻辑集合的步骤。 [111]该种应用场景下, 在无需向分区中的逻辑控制区域刷入关系代数 逻辑集合的情 形下, 实现利用可编程内存分区执行相应逻辑运算的 另一种实现方式如图 8所示, 具 体包括以下执行步骤:

[112]步骤 107、根据所述执行计划树,获得所述数据库执 行计划对应的关系代数运算 符的逻辑执行序列信息;

[113]步骤 108、 根据所述逻辑执行序列信息, 向所述可编程内存分区发送逻辑指令, 所述逻辑指令用于驱动所述可编程内存分区进 行逻辑运算。

[114]该实现方式下, 在得到对应执行计划树的关系代数运算符的逻 辑执行序列信息 之后, 根据当前执行的逻辑执行序列信息, 向相应可编程内存分区发送逻辑指令, 以 驱动相应可编程内存分区进行逻辑运算。 [115]此外, 需要说明的是, 当逻辑执行序列信息对应的所有关系代数逻辑 运算执行 完毕后, 运算结果通常分布在各个可编程内存分区中, 此时, 可以根据实际场景, 判 断是否需要对分布于不同可编程内存分区内的 运算结果进行聚合操作来生成最终的 结果。 如果需要执行聚合操作, 则激活聚合逻辑运算, 根据分布于不同可编程内存分 区内的运算结果生成最终结果。 [116]相应上述数据处理方法实施例, 本发明提供了一种数据处理装置。

[117]如图 9所示, 为本发明提供的一种数据处理装置实施例, 该装置具体可以包括:

[118]分区数目确定模块 901,用于根据数据库执行计划,确定当前空闲 可编程内存对 应的分区数目;

[119]分区模块 902, 用于根据所述分区数目, 对所述当前空闲可编程内存进行分区, 获得对应所述分区数目的可编程内存分区;

[120]运算模块 903,用于利用所述可编程内存分区执行所述数 据库执行计划对应的关 系代数逻辑运算。

[121]该装置实施例中, 为了提高数据处理效率, 用作编程计算的内存为系统内的空 闲内存。 具体地, 为内存提供可编程接口, 通过该可编程接口, 为一块空闲内存区域 赋予特定的计算能力。当操作系统加载数据库 应用时, 需要对当前空闲可编程内存进 行分区, 目的是以便后续调用相应的空闲可编程内存分 区执行逻辑运算。此外, 分区 数目需要根据数据库执行计划进行确定。此处 ,数据库执行计划是指一条查询语句在 数据库系统中的执行过程或访问路径的描述, 即怎样去完成一个查询任务的详细方 案。 不同的数据库执行计划, 所需要的处理能力不同, 对应需要的可编程内存分区的 数目也就会不同。当根据数据库执行计划进行 确定出分区数目时, 即可对空闲可编程 内存进行分区, 获得对应所述分区数目的可编程内存分区。 由于可编程内存分区具有 特定的计算能力, 因此, 可以利用该可编程内存分区执行相应的关系代 数逻辑运算。 [122]本发明实施例中, 根据数据库执行计划对空闲可编程内存进行分 区, 并利用可 编程内存技术, 调度可编程内存分区执行相应逻辑运算。可见 , 所处理的数据无需通 过内存总线传输至处理器进行处理, 而是由内存自身进行数据处理, 从而实现在内存 本地实现数据处理的技术效果。 由于数据在内存本地进行处理,避免数据在处 理器和 内存之间的传输过程, 处理器的 I/O带宽与内存的 I/O带宽是否相同将不会对内存中 所进行的数据处理过程产生影响, 从而, 能够提高数据处理的效率。

[123]在本发明提供的一个实施例中, 提供了分区数目确定模块的一种实现方式, 该 实现方式下, 如图 10所示, 分区数目确定模块具体可以包括:

[124]第一参数单元 1001, 用于统计所述空闲可编程内存执行关系代数运 算所处理的 数据吞吐量与所述空闲可编程内存大小比例的 最优值 op;

[125]第二参数单元 1002, 用于根据所述数据库执行计划, 生成执行计划树, 并确定 所述数据库执行计划所需数据量的估计值 rc;

[126]第三参数单元 1003, 用于遍历所述执行计划树, 查找所述执行计划树中节点的 关系代数运算所需数据区域与补足区域的比例 的最大值 rp,其中,所述数据区域指存 储关系代数运算的输入输出数据信息的存储空 间,所述补足区域指存储关系代数运算 过程中的临时数据信息的存储空间;

[127]第四参数单元 1004, 用于获取所述空闲可编程内存的数量 mc;

[128]数目确定单元 1005, 用于根据所述 op、 所述 rc、 所述 rp和所述 mc, 确定所述 当前空闲可编程内存对应的分区数目。

[129]上述实现方式下, op的统计数据可以依据进行关系代数运算所处 的数据吞吐 量与所使用的空闲可编程内存大小的历史数据 进行统计分析, 确定两者比例的最优 值。

[130]可以通过函数映射关系方式计算分区数 。 决定分区数目的参数因子包括上述 rp、 op、 rc禾口 mc, 分区数 n = f (rp, op, rc, mc), 其中, 分区数 n与 mc成正比例 关系, 分区数 n与 rc 、 rp成反比, op通常为一个常量系数。

[131]在本发明提供的另一个数据处理装置实 例中, 如图 11所示, 还可以包括:

[132]逻辑刷入模块 904, 用于向所述可编程内存分区刷入关系代数逻辑 集合。

[133]该实施例中, 空闲内存为可编程内存, 因此, 可以通过刷入关系代数逻辑集合 的方式, 使得空闲可编程内存分区具有特定的计算能力 , 该过程可以理解为空闲可编 程内存分区的初始化过程。通过向空闲可编程 内存分区中的逻辑控制区域刷入关系代 数逻辑集合, 使得空闲可编程内存分区具有特定的计算能力 。进而, 可以利用该空闲 可编程内存分区执行后续相应逻辑运算,这里 的关系代数逻辑集合中的关系代数逻辑 可以实现关系代数运算符的运算。

[134]基于图 11所示的数据处理装置实施例, 如图 12所示, 其中, 运算模块具体可 以包括:

[135]执行序列获得单元 1201, 用于根据所述执行计划树, 获得所述数据库执行计划 对应的关系代数逻辑的执行序列信息;

[136]逻辑激活单元 1202, 用于根据所述执行序列信息, 依次激活所述可编程内存分 区内的关系代数逻辑进行运算。 [137]该实施例中, 由 sqlparse生成的执行计划树,可以得到相应数据 执行计划的关 系代数逻辑的 task queue, 进而, 根据该 task queue, 来通知 n个可编程内存分区, 激 活相应分区内的关系代数逻辑进行运算。 具体地, 可以根据 task queue中的关系代数 逻辑顺序, 从第一个关系代数逻辑开始执行激活 (active) 操作, 当第一个关系代数 逻辑执行完毕后, 切换至下一个关系代数逻辑并执行激活操作, 直至完成 task queue 中所有的关系代数逻辑运算。

[138]可见, 本发明实施例中, 通过将可编程内存进行分区, 并根据数据库的执行计 划来驱动多个分区同时执行,提供了多个计算 单元同时进行逻辑运算的能力, 从而达 到并行化执行数据库执行计划的技术效果, 大大提高数据处理的效率。

[139]具体应用场景中, 根据关系代数逻辑的参数加入个数, 可以将关系代数逻辑划 分为: 一元运算符和二元运算符。 针对不同的运算符, 激活运算的方式有所不同。 由 此, 如图 13所示, 所述逻辑激活单元, 具体可以包括:

[140]第一激活子单元 1301, 用于当激活的关系代数逻辑为一元运算符时, 则直接获 取所述一元运算符对应的可编程内存分区内的 数据进行运算; [141]第二激活子单元 1302, 用于当激活的关系代数逻辑为二元运算符, 且所述二元 运算符对应的两个可编程内存分区具有相同的 执行序列信息时,则所述二元运算符对 应的两个可编程内存分区同步数据寻址信息, 由所述两个可编程内存分区中数据量大 的一个可编程内存分区执行当前激活的逻辑运 算。

[142]上述运算模块的实施例中, 描述的是在空闲可编程内存完成分区之后, 通过向 可编程内存分区中的逻辑控制区域刷入关系代 数逻辑集合,使得可编程内存分区具有 特定计算能力的实现方式。

[143]实际应用场景中, 是否需要向可编程内存分区中的逻辑控制区域 刷入关系代数 逻辑集合的步骤, 需要根据内存分区中的逻辑控制区域写入逻辑 的速度, 也就是需要 根据内存的性能来决定。具体地, 当分区中的逻辑控制区域写入新指令的速度可 忽略 不计时, 则向其中刷入关系代数逻辑集合的步骤可以省 略; 否则, 当分区中的逻辑控 制区域写入新指令的速度低于一定阈值, 导致影响到整个执行计划的执行效率时, 则 需要该刷入关系代数逻辑集合的步骤。

[144]该种应用场景下, 在无需向分区中的逻辑控制区域刷入关系代数 逻辑集合的情 形下, 运算模块的另一个实施例如图 14所示, 具体可以包括: [145]执行序列获得单元 1401, 用于根据所述执行计划树, 获得所述数据库执行计划 对应的关系代数逻辑的执行序列信息;

[146]逻辑指令发送单元 1402, 用于根据所述逻辑执行序列信息, 向所述可编程内存 分区发送逻辑指令, 所述逻辑指令用于驱动所述可编程内存分区进 行逻辑运算。

[147]该实现方式下, 在得到对应执行计划树的关系代数运算符的逻 辑执行序列信息 之后, 根据当前执行的逻辑执行序列信息, 向相应可编程内存分区发送逻辑指令, 以 驱动相应可编程内存分区进行逻辑运算。

[148]在又一个实施例中, 当逻辑执行序列信息对应的所有关系代数逻辑 运算执行完 毕后, 运算结果通常分布在各个可编程内存分区中, 此时, 可以根据实际场景, 判断 是否需要对分布于不同可编程内存分区内的运 算结果进行聚合操作来生成最终的结 果。 如果需要执行聚合操作, 则激活聚合逻辑运算, 根据分布于不同可编程内存分区 内的运算结果生成最终结果。 由此, 在图 12和图 14所示的实施例基础之上, 如图 15和 16所示, 所述运算模块, 还可以包括:

[149]聚合判断单元 1501, 用于当所述逻辑执行序列信息对应的所有关系 代数逻辑运 算执行完毕后, 判断是否对分布于不同分区内的运算结果进行 聚合操作;

[150]聚合单元 1502, 用于如果需要执行聚合操作, 则激活聚合逻辑运算, 根据分布 于所述不同可编程内存分区内的运算结果生成 最终结果

[151]图 17所示, 本发明还提供了一种基于计算机系统实现的数 据处理装置, 具体实 现中, 该数据处理装置可以包括: 处理器 1701、 存储器 1702和总线 1703 ; 处理器 1701与存储器 1702通过总线 1703相互连接; 其中, 存储器 1702, 用于存储计算机 执行指令; 处理器 1701, 用于执行所述存储器 1702存储的所述计算机执行指令, 根 据数据库执行计划, 确定当前空闲可编程内存对应的分区数目; 根据所述分区数目, 对所述当前空闲可编程内存进行分区, 获得对应所述分区数目的空闲可编程内存分 区; 利用所述空闲可编程内存分区执行相应逻辑运 算。 [152]具体实现中, 上述处理器可以是中央处理器 (central processing unit, CPU)、 专 用集成电路 (applicatl/On-specific integrated circuit, ASIC) 等。 计算机存储介质可存 储有程序,该程序执行时可包括本发明实施例 提供的数据传输的方法的各实施例中的 部分或全部步骤。 所述的存储介质可为磁碟、 光盘、 只读存储记忆体 (Read-Only Memory, ROM) 或随机存储记忆体 (Random Access Memory, RAM) 等。 [153]本领域普通技术人员可以意识到, 结合本文中所公开的实施例描述的各示例的 单元及算法步骤, 能够以电子硬件、 或者计算机软件和电子硬件的结合来实现。这 些 功能究竟以硬件还是软件方式来执行, 取决于技术方案的特定应用和设计约束条件。 专业技术人员可以对每个特定的应用来使用不 同方法来实现所描述的功能,但是这种 实现不应认为超出本发明的范围。 [154]所属领域的技术人员可以清楚地了解到, 为描述的方便和简洁, 上述描述的系 统、装置和单元的具体工作过程, 可以参考前述方法实施例中的对应过程, 在此不再 赘述。

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

[156]所述作为分离部件说明的单元可以是或 也可以不是物理上分开的, 作为单元 显示的部件可以是或者也可以不是物理单元, 即可以位于一个地方, 或者也可以分布 到多个网络单元上。可以根据实际的需要选择 其中的部分或者全部单元来实现本实施 例方案的目的。

[157]另外, 在本发明各个实施例中的各功能单元可以集成 在一个处理单元中, 也可 以是各个单元单独物理存在, 也可以两个或两个以上单元集成在一个单元中 。

[158]所述功能如果以软件功能单元的形式实 并作为独立的产品销售或使用时, 可 以存储在一个计算机可读取存储介质中。基于 这样的理解,本发明的技术方案本质上 或者说对现有技术做出贡献的部分或者该技术 方案的部分可以以软件产品的形式体 现出来, 该计算机软件产品存储在一个存储介质中,包 括若干指令用以使得一台计算 机设备 (可以是个人计算机, 服务器, 或者网络设备等) 或处理器 (processor)执行 本发明各个实施例所述方法的全部或部分步骤 。 而前述的存储介质包括: U盘、移动 硬盘、只读存储器( ROM, Read-Only Memory )、随机存取存储器( RAM, Random Access Memory), 磁碟或者光盘等各种可以存储程序代码的介质 。

[159]以上所述, 仅为本发明的具体实施方式, 但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明揭露 的技术范围内, 可轻易想到变化或替 换, 都应涵盖在本发明的保护范围之内。 因此, 本发明的保护范围应所述以权利要求 的保护范围为准。