著录项信息
专利名称 | 一种数据处理方法及装置 |
申请号 | CN201310409988.2 | 申请日期 | 2013-09-09 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2015-03-18 | 公开/公告号 | CN104424326A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 华为技术有限公司;中国科学院计算技术研究所 | 申请人地址 | 广东省深圳市龙岗区坂田华为总部办公楼
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 华为技术有限公司,中国科学院计算技术研究所 | 当前权利人 | 华为技术有限公司,中国科学院计算技术研究所 |
发明人 | 张子刚;岳银亮;熊劲 |
代理机构 | 北京中博世达专利商标代理有限公司 | 代理人 | 申健 |
摘要
本发明的实施例提供一种数据处理方法及装置,涉及计算机领域,能够减少数据合并的操作流程的时间,降低停等现象出现的概率和时间。包括:将数据合并的操作流程划分为至少两个阶段得到第1阶段至第m阶段,m大于或等于2,每个阶段包括一个或多个子流程;分别为每个阶段建立一个对应的线程得到m个线程;对输入第k线程的数据执行该第k线程对应的阶段中的子流程,并输出处理后数据至第k+1线程,在该第k+1线程对该处理后的数据执行对应阶段的子流程的过程中,对再次输入第k线程的数据再次执行第k线程对应的阶段中的子流程,并输出处理后数据至第k+1线程,直至所有输入第k线程的数据处理完毕。该数据处理方法及装置用于数据处理。
一种数据处理方法及装置\n技术领域\n[0001] 本发明涉及计算机领域,尤其涉及一种数据处理方法及装置。\n背景技术\n[0002] 随着互联网的发展,越来越多的网络服务存储系统采用写优化的数据结构来降低写延迟。例如,LSM-Tree(Log-Structured Merge Tree,日志结构归并树)为一种用来降低写延迟的写优化的数据结构。LSM-Tree通过聚合小粒度、随机更新为大粒度、顺序更新,降低写延迟。但是,LSM-Tree需要后台合并操作来维护合理的数据结构和操作性能。由于每一次数据合并的操作流程需要从磁盘设备等读取数据,对数据解压缩、校验和合并,并将合并后的数据压缩和再次校验,再写回磁盘,整个流程耗费时间较长。在等待数据合并的操作流程完成期间,采用LSM-Tree数据结构的存储系统可能出现停等现象,即无法向位于内存中的组件存储数据,不能服务更新操作。因此,数据合并的操作流程的性能直接影响停等现象出现的频率和时间长短,从而影响存储系统性能。需要说明的是,所述组件为数据结构中逻辑上的组成单元。\n[0003] 现有技术中,当一个组件中的数据存储量大于或等于该组件的阈值,需要从该组件和与该组件相邻的下一个组件分别提取待合并数据执行数据合并的操作流程来对待合并数据进行合并,当待合并数据合并完成后,若该组件的数据存储量还是大于或等于该组件的阈值,则继续执行数据合并的操作流程对待合并数据进行合并,直至每个组件中的数据存储量小于该组件的阈值,每个数据合并的操作流程包括读入、校验、解压缩、合并、压缩、再校验和写出过程。但是,一个数据合并的操作流程由一个线程执行,数据合并的操作流程耗费时间较长,容易出现停等现象。\n发明内容\n[0004] 本发明的实施例提供一种数据处理方法及装置,能够减少数据合并的操作流程的时间,降低停等现象出现的概率和时间。\n[0005] 为达到上述目的,本发明的实施例采用如下技术方案:\n[0006] 第一方面,提供一种数据处理方法,包括:\n[0007] 将数据合并的操作流程划分为至少两个阶段得到第1阶段至第m阶段,所述m大于或等于2,所述每个阶段包括一个或多个子流程;\n[0008] 分别为每个所述阶段建立一个对应的线程得到m个线程;\n[0009] 对输入第k线程的数据执行所述第k线程对应的阶段中的子流程,并输出处理后数据至第k+1线程,在所述第k+1线程对所述处理后的数据执行对应阶段的子流程的过程中,对再次输入所述第k线程的数据再次执行所述第k线程对应的阶段中的子流程,并输出处理后数据至所述第k+1线程,直至所有输入所述第k线程的数据处理完毕,其中,所述第k线程为所述m个线程中任意一个线程。\n[0010] 结合第一方面,在第一种可实现方式中,\n[0011] 所述将数据合并的操作流程划分为至少两个阶段得到第1阶段至第m阶段包括:\n[0012] 将数据合并的操作流程划分为七个阶段得到第1阶段至第7阶段,所述第1阶段至第7阶段分别为读入阶段、校验阶段、解压阶段、合并阶段、压缩阶段、再校验阶段和写出阶段;\n[0013] 所述分别为每个所述阶段建立一个对应的线程得到m个线程包括:\n[0014] 分别为每个所述阶段建立一个线程得到第1线程至第7线程,所述第1线程至第7线程分别为读入线程、校验线程、解压线程、合并线程、压缩线程、再校验线程和写出线程。\n[0015] 结合第一方面或第一种可实现方式,在第二种可实现方式中,所述m个线程中的第k线程包括多个进行并行操作的子线程;\n[0016] 所述对输入第k线程的数据执行所述第k线程对应的阶段中的子流程,并输出处理后数据至第k+1线程,包括:\n[0017] 所述第k线程中的子线程接收输入的数据,对数据执行所述第k线程对应的阶段中的子流程,并输出处理后数据至第k+1线程。\n[0018] 第二方面,提供一种数据处理装置,包括:\n[0019] 划分单元,用于将数据合并的操作流程划分为至少两个阶段得到第1阶段至第m阶段,所述m大于或等于2,所述每个阶段包括一个或多个子流程;\n[0020] 建立单元,用于分别为每个所述阶段建立一个对应的线程得到m个线程;\n[0021] 执行单元,用于对输入第k线程的数据执行所述第k线程对应的阶段中的子流程,并输出处理后数据至第k+1线程,在所述第k+1线程对所述处理后的数据执行对应阶段的子流程的过程中,对再次输入所述第k线程的数据再次执行所述第k线程对应的阶段中的子流程,并输出处理后数据至所述第k+1线程,直至所有输入所述第k线程的数据处理完毕,其中,所述第k线程为所述m个线程中任意一个线程。\n[0022] 结合第二方面,在第一种可实现方式中,\n[0023] 所述划分单元具体用于:\n[0024] 将数据合并的操作流程划分为七个阶段得到第1阶段至第7阶段,所述第1阶段至第7阶段分别为读入阶段、校验阶段、解压阶段、合并阶段、压缩阶段、再校验阶段和写出阶段;\n[0025] 所述建立单元具体用于:\n[0026] 分别为每个所述阶段建立一个线程得到第1线程至第7线程,所述第1线程至第7线程分别为读入线程、校验线程、解压线程、合并线程、压缩线程、再校验线程和写出线程。\n[0027] 结合第二方面或第一种可实现方式,在第二种可实现方式中,所述m个线程中的第k线程包括多个进行并行操作的子线程;\n[0028] 所述执行单元具体用于:\n[0029] 所述第k线程中的子线程接收输入的数据,对数据执行所述第k线程对应的阶段中的子流程,并输出处理后数据至第k+1线程。\n[0030] 第三方面,提供一种数据处理装置,所述数据处理装置包括:\n[0031] 处理器、通信接口、存储器和总线,\n[0032] 其中所述处理器、所述通信接口、所述存储器通过所述总线完成相互间的通信;\n[0033] 所述通信接口,用于接收待合并数据;\n[0034] 所述处理器,用于执行程序;\n[0035] 所述存储器,用于存放程序;\n[0036] 其中所述程序包括:\n[0037] 划分单元,用于将数据合并的操作流程划分为至少两个阶段得到第1阶段至第m阶段,所述m大于或等于2,所述每个阶段包括一个或多个子流程;\n[0038] 建立单元,用于分别为每个所述阶段建立一个对应的线程得到m个线程;\n[0039] 执行单元,用于对输入第k线程的数据执行所述第k线程对应的阶段中的子流程,并输出处理后数据至第k+1线程,在所述第k+1线程对所述处理后的数据执行对应阶段的子流程的过程中,对再次输入所述第k线程的数据再次执行所述第k线程对应的阶段中的子流程,并输出处理后数据至所述第k+1线程,直至所有输入所述第k线程的数据处理完毕,其中,所述第k线程为所述m个线程中任意一个线程。\n[0040] 结合第三方面,在第一种可实现方式中,\n[0041] 所述处理器的划分单元具体用于:\n[0042] 将数据合并的操作流程划分为七个阶段得到第1阶段至第7阶段,所述第1阶段至第7阶段分别为读入阶段、校验阶段、解压阶段、合并阶段、压缩阶段、再校验阶段和写出阶段;\n[0043] 所述处理器的建立单元具体用于:\n[0044] 分别为每个所述阶段建立一个线程得到第1线程至第7线程,所述第1线程至第7线程分别为读入线程、校验线程、解压线程、合并线程、压缩线程、再校验线程和写出线程。\n[0045] 结合第三方面或第一种可实现方式,在第二种可实现方式中,所述m个线程中的第k线程包括多个进行并行操作的子线程;\n[0046] 所述处理器的执行单元具体用于:\n[0047] 所述第k线程中的子线程接收输入的数据,对数据执行所述第k线程对应的阶段中的子流程,并输出处理后数据至第k+1线程。\n[0048] 本发明实施例提供一种数据处理方法及装置,所述数据处理方法,包括:将数据合并的操作流程划分为至少两个阶段得到第1阶段至第m阶段,所述m大于或等于2,所述每个阶段包括一个或多个子流程;分别为每个所述阶段建立一个对应的线程得到m个线程;对输入第k线程的数据执行所述第k线程对应的阶段中的子流程,并输出处理后数据至第k+1线程,在所述第k+1线程对所述处理后的数据执行对应阶段的子流程的过程中,对再次输入所述第k线程的数据再次执行所述第k线程对应的阶段中的子流程,并输出处理后数据至所述第k+1线程,直至所有输入所述第k线程的数据处理完毕,其中,所述第k线程为所述m个线程中任意一个线程。这样一来,由于将数据合并的操作流程划分为至少两个阶段,且分别为每个所述阶段建立一个对应的线程,在进行数据合并操作流程的过程中,使得任意一个线程能够独立地执行需要该线程执行的子流程,实现了各个线程的并行执行,有效减少了数据合并的操作流程的时间,从而降低了停等现象出现的概率和时间。\n附图说明\n[0049] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。\n[0050] 图1为本发明实施例提供的一种数据处理方法流程图;\n[0051] 图2为本发明实施例提供的另一种数据处理方法流程图;\n[0052] 图3为本发明实施例提供的一种数据处理装置结构示意图;\n[0053] 图4为本发明实施例提供的另一种数据处理装置结构示意图。\n具体实施方式\n[0054] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。\n[0055] 本发明实施例提供一种数据处理方法,如图1所示,包括:\n[0056] 步骤101、将数据合并的操作流程划分为至少两个阶段得到第1阶段至第m阶段,所述m大于或等于2,所述每个阶段包括一个或多个子流程。\n[0057] 例如,可以将数据合并的操作流程划分为七个阶段得到第1阶段至第7阶段,所述第1阶段至第7阶段分别为读入阶段、校验阶段、解压阶段、合并阶段、压缩阶段、再校验阶段和写出阶段,所述每个阶段包括一个或多个子流程。其中,读入阶段包括一个或多个读入子流程、校验阶段包括一个或多个校验子流程、解压阶段包括一个或多个解压子流程、合并阶段包括一个或多个合并子流程、压缩阶段包括一个或多个压缩子流程、再校验阶段包括一个或多个再校验子流程和写出阶段包括一个或多个写出子流程。\n[0058] 步骤102、分别为每个所述阶段建立一个对应的线程得到m个线程。\n[0059] 例如,假设每个数据合并的操作流程包括读入阶段、校验阶段、解压阶段、合并阶段、压缩阶段、再校验阶段和写出阶段,分别为每个所述阶段建立一个线程得到第1线程至第7线程,所述第1线程为读入线程,所述第2线程为校验线程、所述第3线程为解压线程、所述第4线程为合并线程、所述第5线程为压缩线程、所述第6线程为再校验线程和所述第7线程为写出线程。\n[0060] 步骤103、对输入第k线程的数据执行所述第k线程对应的阶段中的子流程,并输出处理后数据至第k+1线程,在所述第k+1线程对所述处理后的数据执行对应阶段的子流程的过程中,对再次输入所述第k线程的数据再次执行所述第k线程对应的阶段中的子流程,并输出处理后数据至所述第k+1线程,直至所有输入所述第k线程的数据处理完毕,其中,所述第k线程为所述m个线程中任意一个线程。\n[0061] 需要说明的是,所述m个线程中的第k线程包括多个进行并行操作的子线程;所述对输入第k线程的数据执行所述第k线程对应的阶段中的子流程,并输出处理后数据至第k+\n1线程,包括:所述第k线程中的子线程接收输入的数据,对数据执行所述第k线程对应的阶段中的子流程,并输出处理后数据至第k+1线程。\n[0062] 示例的,若读入线程包括一个子线程时,当读入线程读入待合并数据,则对该待合并数据执行所述读入线程对应的阶段中的读入子流程,将该处理后待合并数据输出至校验线程,则当校验线程中的校验线程接收输入该处理后待合并数据,对该处理后待合并数据执行所述校验线程对应的阶段中的校验子流程,同时,当读入线程中的读入线程再次读入待合并数据时,则再对待合并数据执行所述读入线程对应的阶段中的读入子流程,将再次读入的处理后待合并数据输出至校验线程,直至所有读入线程读入的待合并数据处理完毕。\n[0063] 若读入线程包括两个进行并行操作的子线程,分别为第一读入子线程和第二读入子线程。当读入线程中的第一读入子线程读入第一待合并数据,则对该第一待合并数据执行所述读入线程对应的阶段中的第一读入子流程,将该处理后第一待合并数据输出至校验线程,校验线程中的校验子线程输入该处理后第一待合并数据,对该处理后第一待合并数据执行所述校验线程对应的阶段中的校验子流程,同时,当读入线程中的第一读入子线程读入第一数据时,若读入线程中的第二读入子线程空闲,则读入线程中的第二读入子线程读入第二待合并数据,则对第二待合并数据执行所述读入线程对应的阶段中的第二读入子流程进行处理,将处理后第二待合并数据输出至校验线程,直至所有读入线程读入的待合并数据处理完毕。所述七个阶段中的各个阶段对应的线程包括的子线程个数可以不同。\n[0064] 这样一来,由于将数据合并的操作流程划分为至少两个阶段,且分别为每个所述阶段建立一个对应的线程,在进行数据合并操作流程的过程中,使得任意一个线程能够独立地执行需要该线程执行的子流程,实现了各个线程的并行执行,有效减少了数据合并的操作流程的时间,从而降低了停等现象出现的概率和时间。\n[0065] 本发明实施例提供具体的数据处理方法,以第一组件为例,所述组件为数据结构中逻辑上的组成单元,所述第一组件为所述数据结构中的任意一个逻辑上的组成单元,如图2所示,包括:\n[0066] 步骤201、将数据合并的操作流程划分为七个阶段,所述每个阶段包括一个或多个子流程。\n[0067] 所述数据合并的操作流程划分后得到的七个阶段分别为读入阶段、校验阶段、解压阶段、合并阶段、压缩阶段、再校验阶段和写出阶段。其中,读入阶段包括一个线程或多个读入子流程、校验阶段包括一个或多个校验子流程、解压阶段包括一个或多个解压子流程、合并阶段包括一个或多个合并子流程、压缩阶段包括一个或多个压缩子流程、再校验阶段包括一个或多个再校验子流程和写出阶段包括一个或多个写出子流程。\n[0068] 步骤202、为所述七个阶段中每个阶段分别建立一个线程。\n[0069] 为所述七个阶段中的读入阶段建立读入线程,为校验阶段建立校验线程,为解压阶段建立解压线程,为合并阶段建立合并线程,为压缩阶段建立压缩线程,为再校验阶段建立再校验线程,为写出阶段建立写出线程。特别的,所述七个线程中任意一个线程可以建立多个进行并行操作的子线程,相对于现有技术运用一个线程执行所述数据合并的操作流程,有效减少了每个数据合并的操作流程的执行时间。\n[0070] 需要说明的是,在所有所述线程执行一次数据合并的操作流程时,所述数据合并的操作流程中的每两个相邻线程中,前一个线程的输出结果为后一个线程的输入内容,即所述第1线程至第7线程的每两个相邻的线程中,前一个线程输出的处理后数据作为后一个线程的输入数据。\n[0071] 步骤203、判断第一组件的数据存储量是否大于或等于第一阈值。\n[0072] 检测第一组件的数据存储量,当所述第一组件的数据存储量大于或等于第一阈值,判断需要对所述第一组件和第二组件中的数据进行合并,所述第二组件为与所述第一组件相邻的组件;当所述第一组件的数据存储量小于第一阈值,判断不需要对所述第一组件和第二组件中的数据进行合并,所述第一阈值为第一组件的数据存储量预设阈值。\n[0073] 本发明实施例假设第一组件的数据存储量大于或等于第一阈值,执行步骤204。\n[0074] 步骤204、所述读入线程以预设粒度从外存读入待合并数据。\n[0075] 示例的,当所述第一组件的数据存储量大于或等于所述第一组件的第一阈值,所述读入线程执行读入子流程,即以预设粒度从所述第一组件和与所述第一组件相邻的第二组件中提取待合并数据得到多个读入数据块,分别将所述多个读入数据块输出给所述校验线程。继续检测第一组件的数据存储量,当所述第一组件中的数据存储量还是大于或等于第一阈值,则所述读入线程继续以预设粒度从第一组件和与第一组件相邻的第二组件中提取数据块得到多个读入数据块,再分别将所述多个读入数据块输出给所述校验线程;当所述第一组件中的数据存储量小于第一阈值,判断则不需要对所述第一组件和第二组件中的数据进行合并,所述读入线程停止获得数据块的动作。需要说明的是,所述读入线程每次读入的数据可以包括一个或多个数据块。所述外存可以是磁盘等存储器件,本发明对此不做任何限定。\n[0076] 特别的,假如当所述读入阶段的读入线程包括两个读入子线程,则所述两个读入子线程同时读入待合并数据,对该待合并数据执行所述读入线程对应的阶段中的读入子流程。本发明对此不做任何限定。\n[0077] 所述预设粒度可以大于4KB,但实际应用中,所述预设粒度也可以小于或等于4KB,优选的,可以将所述预设粒度设置为512KB或1MB,采用较大粒度进行数据的读取,充分利用了磁盘等存储设备的性能。\n[0078] 步骤205、所述校验线程对所述读入数据块进行校验。\n[0079] 所述读入线程依次将所述读入数据块输入给所述校验线程,所述校验线程执行校验子流程,即对每个所述读入数据块进行校验,输出校验数据块。\n[0080] 需要说明的是,每个读入数据块携带有原始校验值,所述校验线程首先获取所述读入数据块携带的原始校验值,然后对所述读入数据块进行校验运算得到运算后校验值,将该运算后校验值与所述原始校验值进行比较,根据比较结果判断所述运算后校验值与所述原始校验值是否相等,若所述运算后校验值与所述原始校验值相等,则说明所述校验线程获取的所述读入数据块未被修改或破坏,是正确的数据块,所述校验线程可以将校验过的所述读入数据块作为校验数据块输出给所述解压线程。\n[0081] 步骤206、所述解压线程对所述校验数据块进行解压。\n[0082] 所述校验线程依次将所述校验数据块输入给所述解压线程,所述解压线程执行解压子流程,即对每个所述校验数据块进行解压,输出解压数据块。\n[0083] 步骤207、所述合并线程对所述解压数据块进行合并。\n[0084] 所述解压线程将所述解压数据块依次输入给所述合并线程,所述合并线程执行合并子流程,即对每个所述解压数据块进行比较后合并,输出合并数据块。\n[0085] 具体的,合并线程对所述解压数据块进行比较,将同一份数据中有用数据进行合并,将同一份数据中无用数据进行删除,其中,所述有用数据通常为同一份数据的最新版本的数据,所述无用数据通常为同一份数据中不同版本的数据中版本较低的数据,对所述解压数据块进行合并和删除处理得到合并数据,再将所述合并数据按照顺序写入输出缓存并进行相应索引建立,当所述输出缓存的数据存储量达到输出缓存的阈值则完成一个合并数据块建立,则将所述合并数据块输出给所述压缩线程。特别的,所述输出缓存可以为内存中单个的数据块(data block)的缓存,所述输出缓存的阈值可以是4KB或16KB。\n[0086] 步骤208、所述压缩线程对所述合并数据块进行压缩。\n[0087] 所述合并线程依次将所述合并数据块输入给所述压缩线程,所述压缩线程执行压缩子流程,即对每个所述合并数据块进行压缩,输出压缩数据块。\n[0088] 步骤209、所述再校验线程对所述压缩数据块进行再校验。\n[0089] 所述压缩线程依次将所述压缩数据块输入给所述再校验线程,所述再校验线程执行再校验子流程,即对每个所述压缩数据块进行再校验,输出再校验数据块。\n[0090] 具体的,所述再校验线程首先获取所述压缩数据块,然后对所述压缩数据块进行再校验运算得到所述压缩数据块的校验和,将运算后的压缩数据块作为再校验数据块输出,同时,输出的所述再校验数据块携带有再校验数据块的校验和,所述再校验数据块的校验和与该再校验数据块对应的压缩数据块的校验和相同。\n[0091] 步骤2010、所述写出线程对所述再校验数据块进行写出。\n[0092] 所述再校验线程依次将所述再校验数据块输入给所述写出线程,所述写出线程执行写出子流程,即需要判断接收到的所述再校验数据块的总和是否大于或等于写出阈值,若接收到的所述再校验数据块的总和大于或等于写出阈值,则将接收到的特定数量的再校验数据块进行写出,输出写出数据块,同时将所述特定数量的再校验数据块写出保存到可永久保存的存储设备中,即对所述再校验数据块进行持久化处理,所述可永久保存的存储设备可以是磁盘;若接收到的所述再校验数据块的总和小于写出阈值,则所述写出线程继续接收所述再校验数据块。需要说明的是,当整个数据合并的操作流程结束时,若接收到的所述再校验数据块的总和依然小于写出阈值,也需要对所述再校验数据块进行持久化处理。\n[0093] 每次写出线程完成写出动作,判断是否还有数据需要写出,如果有,则重复上述动作。\n[0094] 需要说明的是,在对第一组件和第二组件中的数据进行合并操作的过程中,读入线程第一次读入的待合并数据经由读入线程、校验线程、解压线程、合并线程、压缩线程、再校验线程和写出线程实现一次数据合并的操作流程,读入线程第二次读入的待合并数据经由读入线程、校验线程、解压线程、合并线程、压缩线程、再校验线程和写出线程再次实现一次数据合并的操作流程,同理,读入线程第n次读入的待合并数据经由读入线程、校验线程、解压线程、合并线程、压缩线程、再校验线程和写出线程再次实现一次数据合并的操作流程,随着数据的持续读入,数据合并的操作流程并行循环进行直至第一组件的数据存储量小于第一阈值才停止,其中,若每个线程包括一个子线程,则数据合并的操作流程相隔一个读入阶段。例如,当解压线程在对第一数据块进行解压的同时,校验线程在对第二数据块进行校验,因此七个线程可以同时进行并行工作,减少了循环进行的数据合并的操作流程所耗费的时间。需要说明的是,由于可以为所述七个阶段中每个阶段的线程分别建立多个进行并行操作的子线程,因此,在实际应用中,每个阶段可能对应多个子线程,因而,在多个读入子线程以不同的先后顺序读入的待合并数据在经由校验子线程、解压子线程处理的过程中,可能出现顺序改变的情况,例如,假设为读入阶段建立一个读入线程,为校验阶段建立两个校验子线程,分别为第一校验子线程和第二校验子线程,为解压阶段建立一个解压线程,为合并阶段建立一个合并线程,为压缩阶段建立一个压缩线程,为再校验阶段建立一个再校验线程,为写出阶段建立一个写出线程。假设读入线程第一次读入的待合并数据的数据量较大,为4个数据块,经由第一校验子线程处理,而读入线程第二次读入的待合并数据的数据量较小,为2个数据块,经由第二校验子线程处理,则第二次读入的待合并数据可能先处理完成,进入解压线程。同理,当为其他阶段建立两个以上子线程也可以出现上述顺序改变的情况,本发明对此不再详述。\n[0095] 由于对不同组件的数据存储量是否大于该组件存储量预设阈值的判断可以是并行执行的,因此,在判断第一组件的数据存储量是否大于或等于第一阈值的同时,也可以判断第二组件的数据存储量是否大于或等于第二阈值,所述第二阈值为第二组件的数据存储量预设阈值,当所述第二组件的数据存储量大于或等于第二阈值,判断得到需要对所述第二组件和第三组件中的数据进行合并,所述第三组件为与所述第二组件相邻的组件,且所述第三组件的存储量预设阈值大于第二阈值。对所述第二组件和第三组件中的数据进行合并的过程可以参考步骤203至步骤2010,本发明对此不再详述。\n[0096] 本发明实施例提供的数据处理方法由于将数据合并的操作流程划分为至少两个阶段,且分别为每个所述阶段建立一个对应的线程,在进行数据合并操作流程的过程中,使得任意一个线程能够独立地执行需要该线程执行的子流程,实现了各个线程的并行执行,有效减少了数据合并的操作流程的时间,从而降低了停等现象出现的概率和时间。同时数据合并操作流程的并行执行充分利用设备的CPU(Central Processing Unit,中央处理器)和IO(Input/Output,输入/输出)设备的并发特性。\n[0097] 本发明实施例提供一种数据处理装置30,如图3所示,包括:\n[0098] 划分单元301,用于将数据合并的操作流程划分为至少两个阶段得到第1阶段至第m阶段,所述m大于或等于2,所述每个阶段包括一个或多个子流程。\n[0099] 建立单元302,用于分别为每个所述阶段建立一个对应的线程得到m个线程。\n[0100] 执行单元303,用于对输入第k线程的数据执行所述第k线程对应的阶段中的子流程,并输出处理后数据至第k+1线程,在所述第k+1线程对所述处理后的数据执行对应阶段的子流程的过程中,对再次输入所述第k线程的数据再次执行所述第k线程对应的阶段中的子流程,并输出处理后数据至所述第k+1线程,直至所有输入所述第k线程的数据处理完毕,其中,所述第k线程为所述m个线程中任意一个线程。\n[0101] 这样一来,由于划分单元将数据合并的操作流程划分为至少两个阶段,且建立单元分别为每个所述阶段建立一个对应的线程,执行单元在进行数据合并操作流程的过程中,使得任意一个线程能够独立地执行需要该线程执行的子流程,实现了各个线程的并行执行,有效减少了循环执行的数据合并的操作流程的时间,从而降低了停等现象出现的概率和时间。\n[0102] 所述划分单元301具体用于:\n[0103] 将数据合并的操作流程划分为七个阶段得到第1阶段至第7阶段,所述第1阶段至第7阶段分别为读入阶段、校验阶段、解压阶段、合并阶段、压缩阶段、再校验阶段和写出阶段。\n[0104] 所述建立单元302具体用于:\n[0105] 分别为每个所述阶段建立一个线程得到第1线程至第7线程,所述第1线程至第7线程分别为读入线程、校验线程、解压线程、合并线程、压缩线程、再校验线程和写出线程。\n[0106] 所述m个线程中的第k线程包括多个进行并行操作的子线程;所述执行单元303具体用于:\n[0107] 所述第k线程中的子线程接收输入的数据,对数据执行所述第k线程对应的阶段中的子流程,并输出处理后数据至第k+1线程。\n[0108] 本发明实施例提供的数据处理装置,由于划分单元将数据合并的操作流程划分为至少两个阶段,且建立单元分别为每个所述阶段建立一个对应的线程,执行单元在进行数据合并操作流程的过程中,使得任意一个线程能够独立地执行需要该线程执行的子流程,实现了各个线程的并行执行,有效减少了循环执行的数据合并的操作流程的时间,从而降低了停等现象出现的概率和时间。\n[0109] 本发明实施例提供一种数据处理装置40,处理器401、通信接口402、存储器403和总线404,如图4所示,包括:\n[0110] 其中,处理器401、通信接口402、存储器403通过总线404完成相互间的通信;\n[0111] 所述通信接口402,用于接收待合并数据;\n[0112] 所述处理器401,用于执行程序4031;\n[0113] 所述存储器403,用于存放程序4031;\n[0114] 其中所述程序4031包括:\n[0115] 划分单元4011,用于将数据合并的操作流程划分为至少两个阶段得到第1阶段至第m阶段,所述m大于或等于2,所述每个阶段包括一个或多个子流程;\n[0116] 建立单元4012,用于分别为每个所述阶段建立一个对应的线程得到m个线程;\n[0117] 执行单元4013,用于对输入第k线程的数据执行所述第k线程对应的阶段中的子流程,并输出处理后数据至第k+1线程,在所述第k+1线程对所述处理后的数据执行对应阶段的子流程的过程中,对再次输入所述第k线程的数据再次执行所述第k线程对应的阶段中的子流程,并输出处理后数据至所述第k+1线程,直至所有输入所述第k线程的数据处理完毕,其中,所述第k线程为所述m个线程中任意一个线程。\n[0118] 所述处理器401的划分单元4011具体用于:\n[0119] 将数据合并的操作流程划分为七个阶段得到第1阶段至第7阶段,所述第1阶段至第7阶段分别为读入阶段、校验阶段、解压阶段、合并阶段、压缩阶段、再校验阶段和写出阶段;\n[0120] 所述处理器401的建立单元4012具体用于:\n[0121] 分别为每个所述阶段建立一个线程得到第1线程至第7线程,所述第1线程至第7线程分别为读入线程、校验线程、解压线程、合并线程、压缩线程、再校验线程和写出线程。\n[0122] 所述m个线程中的第k线程包括多个进行并行操作的子线程;\n[0123] 所述处理器401的执行单元4013具体用于:\n[0124] 所述第k线程中的子线程接收输入的数据,对数据执行所述第k线程对应的阶段中的子流程,并输出处理后数据至第k+1线程。\n[0125] 本发明实施例提供的数据处理装置,由于处理器将数据合并的操作流程划分为至少两个阶段,且分别为每个所述阶段建立一个对应的线程,在进行数据合并操作流程的过程中,使得任意一个线程能够独立地执行需要该线程执行的子流程,实现了各个线程的并行执行,有效减少了数据合并的操作流程的时间,从而降低了停等现象出现的概率和时间。\n[0126] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。\n[0127] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。\n[0128] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。\n[0129] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。\n[0130] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。\n[0131] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
法律信息
- 2021-08-20
未缴年费专利权终止
IPC(主分类): G06F 17/30
专利号: ZL 201310409988.2
申请日: 2013.09.09
授权公告日: 2018.06.15
- 2018-06-15
- 2015-04-15
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201310409988.2
申请日: 2013.09.09
- 2015-03-18
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| | 暂无 |
2012-11-28
| | |
2
| |
2012-12-26
|
2012-08-27
| | |
3
| |
2007-04-18
|
2006-09-26
| | |
4
| |
2012-07-04
|
2010-12-31
| | |
5
| |
2009-03-18
|
2008-11-07
| | |
6
| |
2008-02-13
|
2007-08-28
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |