数据处理系统和数据处理方法

文档序号:6378025阅读:146来源:国知局

专利名称::数据处理系统和数据处理方法
技术领域
:本发明涉及数据处理
技术领域
,具体而言,涉及一种数据处理系统和一种数据处理方法。
背景技术
:在大型企业中,业务数据增长随着时间的积累变得异常庞大,系统在处理这些数据更显得不堪重负,导致用户处理业务的响应时间会越来越慢,甚至会出现内存不足或者死机的情况。尤其是在企业中,由于受制于生产关系,系统需要处理十分复杂业务逻辑。例如处理每月结算,不同的半成品成本卷积到产品中,或者对产品及下面的半成品、材料等业务数据进行统计查询处理,因为整个业务数据量非常巨大,并且数据层次关系也非常多,所以在利用传统的树遍历算法、广度或者深度遍历算法等处理方式时,每次进行业务运算或者统计的时候,时间比较长,并且维护起来也非常复杂和耗时。此外,如果层次很多的情况下,还可能会导致系统处理异常慢,或者内存溢出。因此,需要一种新的数据处理技术,可以有效优化具有层次结构的大数据的业务处理能力。
发明内容本发明正是基于上述问题,提出了一种新的数据处理技术,可以有效优化具有层次结构的大数据的业务处理能力。有鉴于此,本发明提出了一种数据处理系统,包括分层单元,用于根据待处理的业务数据之间的层级关系,将所述待处理的业务数据分为多个层,其中,每层的业务数据具有相同的层级;数据处理单元,用于将每层的业务数据的层级作为该层的层级,并从最低层级的层开始,依次分别对每层的业务数据进行处理,其中,将低层级的层的处理结果用于上一层级的处理过程;结果获取单元,用于将处于最高层级的层对应的业务数据的处理结果,作为所述待处理的业务数据的最终处理结果。对于具有层级关系的数据,比如树形结构中的数据,往往采用树遍历算法等,但对于数据量较大的情况下,比如对于大数据的处理过程中,若存在的分支众多,则将导致数据处理缓慢,甚至由于内存溢出等导致运算失败。而对于大数据而言,虽然可能存在众多数据分支,但数据间的层级数量是有限的,因而在该技术方案中,通过将待处理的业务数据分层处理,分别对每个层的业务数据进行处理,不必对每条分支进行纵向遍历,并且充分利用了对每层数据的并行处理,提高处理效率。在上述技术方案中,优选地,还包括缓存处理单元,用于设置第一缓存区,在所述第一缓存区中为每层建立缓存临时表,以存储该层的业务数据的处理结果,并用于该层的父级层的业务数据的处理过程。在该技术方案中,为每层数据分别建立对应的缓存临时表,用于保存该层业务数据的处理结果,避免出现数据的混乱。在上述任一技术方案中,优选地,所述缓存处理单元还用于设置第二缓存区,在所述第二缓存区中建立对应关系临时表,以存储所述待处理的业务数据与所述缓存临时表之间的对应关系,以用于在对指定层的业务数据进行处理后,根据所述对应关系将处理结果存储至对应的缓存临时表中。在该技术方案中,在将业务数据进行分层后,其中每一层的业务数据与其他数据之间的对应关系并不变,比如对于原本处于树形结构中的同一分支上的、具有父子关系的业务数据,此时处于不同的层,但通过第二缓存区中的的对应关系临时表进行了关联,以确保数据处理过程的准确性。在上述任一技术方案中,优选地,还包括数据量判断单元,用于判断每层的业务数据的数据量是否大于预设的数据量阈值,其中,在判断结果为是的情况下,所述数据处理单元将该层的业务数据分为多个批次,并分别对每个批次的业务数据进行处理,其中,每个批次的业务数据的数据量小于或等于所述数据量阈值。·在该技术方案中,当数据量较大时,往往容易导致内存溢出等错误的发生,因而通过对数据量的判断,以及在数据量较大的情况下进行分批次处理等,从而避免上述错误等的发生。在上述任一技术方案中,优选地,所述缓存处理单元还用于设置第三缓存区,将每个批次的业务数据的处理结果缓存至所述第三缓存区中,并在该层的所有批次的业务数据都处理结束后,将所述第三缓存区中的所有处理结果存储至对应的缓存临时表中。在该技术方案中,当存在多个批次的业务数据的情况下,通过设置第三缓存区,帮助完成对于该层所有业务数据的处理。根据本发明的又一方面,还提出了一种数据处理方法,包括步骤202,根据待处理的业务数据之间的层级关系,将所述待处理的业务数据分为多个层,其中,每层的业务数据具有相同的层级;步骤204,将每层的业务数据的层级作为该层的层级,并从最低层级的层开始,依次分别对每层的业务数据进行处理,其中,将低层级的层的处理结果用于上一层级的处理过程;步骤206,将处于最高层级的层对应的业务数据的处理结果,作为所述待处理的业务数据的最终处理结果。对于具有层级关系的数据,比如树形结构中的数据,往往采用树遍历算法等,但对于数据量较大的情况下,比如对于大数据的处理过程中,若存在的分支众多,则将导致数据处理缓慢,甚至由于内存溢出等导致运算失败。而对于大数据而言,虽然可能存在众多数据分支,但数据间的层级数量是有限的,因而在该技术方案中,通过将待处理的业务数据分层处理,分别对每个层的业务数据进行处理,不必对每条分支进行纵向遍历,并且充分利用了对每层数据的并行处理,提高处理效率。在上述技术方案中,优选地,所述步骤204还包括设置第一缓存区,在所述第一缓存区中为每层建立缓存临时表,以存储该层的业务数据的处理结果,并用于该层的父级层的业务数据的处理过程。在该技术方案中,为每层数据分别建立对应的缓存临时表,用于保存该层业务数据的处理结果,避免出现数据的混乱。在上述任一技术方案中,优选地,所述步骤204还包括设置第二缓存区,在所述第二缓存区中建立对应关系临时表,以存储所述待处理的业务数据与所述缓存临时表之间的对应关系,以用于在对指定层的业务数据进行处理后,根据所述对应关系将处理结果存储至对应的缓存临时表中。在该技术方案中,在将业务数据进行分层后,其中每一层的业务数据与其他数据之间的对应关系并不变,比如对于原本处于树形结构中的同一分支上的、具有父子关系的业务数据,此时处于不同的层,但通过第二缓存区中的的对应关系临时表进行了关联,以确保数据处理过程的准确性。在上述任一技术方案中,优选地,所述步骤204还包括判断每层的业务数据的数据量是否大于预设的数据量阈值,若大于,则将该层的业务数据分为多个批次,并分别对每个批次的业务数据进行处理,其中,每个批次的业务数据的数据量小于或等于所述数据量阈值。在该技术方案中,当数据量较大时,往往容易导致内存溢出等错误的发生,因而通过对数据量的判断,以及在数据量较大的情况下进行分批次处理等,从而避免上述错误等的发生。在上述任一技术方案中,优选地,所述步骤204还包括设置第三缓存区,将每个批次的业务数据的处理结果缓存至所述第三缓存区中,并在该层的所有批次的业务数据都处理结束后,将所述第三缓存区中的所有处理结果存储至对应的缓存临时表中。在该技术方案中,当存在多个批次的业务数据的情况下,通过设置第三缓存区,帮助完成对于该层所有业务数据的处理。通过以上技术方案,可以有效优化具有层次结构的大数据的业务处理能力。图I示出了根据本发明的实施例的数据处理系统的框图;图2示出了根据本发明的实施例的数据处理方法的流程图;图3示出了根据本发明的实施例的有层次关系大数据的处理装置对大数据进行处理的不意图;图4示出了根据本发明的实施例的对大数据进行处理的具体流程图;图5示出了根据本发明的实施例的有层次关系的大数据的层次结构示意图。具体实施例方式为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。图I示出了根据本发明的实施例的数据处理系统的框图。如图I所示,根据本发明的实施例的数据处理系统100,包括分层单元102,用于根据待处理的业务数据之间的层级关系,将所述待处理的业务数据分为多个层,其中,每层的业务数据具有相同的层级;数据处理单元104,用于将每层的业务数据的层级作为该层的层级,并从最低层级的层开始,依次分别对每层的业务数据进行处理,其中,将低层级的层的处理结果用于上一层级的处理过程;结果获取单元106,用于将处于最高层级的层对应的业务数据的处理结果,作为所述待处理的业务数据的最终处理结果。对于具有层级关系的数据,比如树形结构中的数据,往往采用树遍历算法等,但对于数据量较大的情况下,比如对于大数据的处理过程中,若存在的分支众多,则将导致数据处理缓慢,甚至由于内存溢出等导致运算失败。而对于大数据而言,虽然可能存在众多数据分支,但数据间的层级数量是有限的,因而在该技术方案中,通过将待处理的业务数据分层处理,分别对每个层的业务数据进行处理,不必对每条分支进行纵向遍历,并且充分利用了对每层数据的并行处理,提高处理效率。在上述技术方案中,优选地,还包括缓存处理单元108,用于设置第一缓存区,在所述第一缓存区中为每层建立缓存临时表,以存储该层的业务数据的处理结果,并用于该层的父级层的业务数据的处理过程。在该技术方案中,为每层数据分别建立对应的缓存临时表,用于保存该层业务数据的处理结果,避免出现数据的混乱。在上述任一技术方案中,优选地,所述缓存处理单元108还用于设置第二缓存区,在所述第二缓存区中建立对应关系临时表,以存储所述待处理的业务数据与所述缓存临时表之间的对应关系,以用于在对指定层的业务数据进行处理后,根据所述对应关系将处理结果存储至对应的缓存临时表中。在该技术方案中,在将业务数据进行分层后,其中每一层的业务数据与其他数据之间的对应关系并不变,比如对于原本处于树形结构中的同一分支上的、具有父子关系的业务数据,此时处于不同的层,但通过第二缓存区中的的对应关系临时表进行了关联,以确保数据处理过程的准确性。在上述任一技术方案中,优选地,还包括数据量判断单元110,用于判断每层的业务数据的数据量是否大于预设的数据量阈值,其中,在判断结果为是的情况下,所述数据处理单元104将该层的业务数据分为多个批次,并分别对每个批次的业务数据进行处理,其中,每个批次的业务数据的数据量小于或等于所述数据量阈值。在该技术方案中,当数据量较大时,往往容易导致内存溢出等错误的发生,因而通过对数据量的判断,以及在数据量较大的情况下进行分批次处理等,从而避免上述错误等的发生。在上述任一技术方案中,优选地,所述缓存处理单元108还用于设置第三缓存区,将每个批次的业务数据的处理结果缓存至所述第三缓存区中,并在该层的所有批次的业务数据都处理结束后,将所述第三缓存区中的所有处理结果存储至对应的缓存临时表中。在该技术方案中,当存在多个批次的业务数据的情况下,通过设置第三缓存区,帮助完成对于该层所有业务数据的处理。图2示出了根据本发明的实施例的数据处理方法的流程图。如图2所示,根据本发明的实施例的数据处理方法,包括步骤202,根据待处理的业务数据之间的层级关系,将所述待处理的业务数据分为多个层,其中,每层的业务数据具有相同的层级;步骤204,将每层的业务数据的层级作为该层的层级,并从最低层级的层开始,依次分别对每层的业务数据进行处理,其中,将低层级的层的处理结果用于上一层级的处理过程;步骤206,将处于最高层级的层对应的业务数据的处理结果,作为所述待处理的业务数据的最终处理结果。对于具有层级关系的数据,比如树形结构中的数据,往往采用树遍历算法等,但对于数据量较大的情况下,比如对于大数据的处理过程中,若存在的分支众多,则将导致数据处理缓慢,甚至由于内存溢出等导致运算失败。而对于大数据而言,虽然可能存在众多数据分支,但数据间的层级数量是有限的,因而在该技术方案中,通过将待处理的业务数据分层处理,分别对每个层的业务数据进行处理,不必对每条分支进行纵向遍历,并且充分利用了对每层数据的并行处理,提高处理效率。在上述技术方案中,优选地,所述步骤204还包括设置第一缓存区,在所述第一缓存区中为每层建立缓存临时表,以存储该层的业务数据的处理结果,并用于该层的父级层的业务数据的处理过程。在该技术方案中,为每层数据分别建立对应的缓存临时表,用于保存该层业务数·据的处理结果,避免出现数据的混乱。在上述任一技术方案中,优选地,所述步骤204还包括设置第二缓存区,在所述第二缓存区中建立对应关系临时表,以存储所述待处理的业务数据与所述缓存临时表之间的对应关系,以用于在对指定层的业务数据进行处理后,根据所述对应关系将处理结果存储至对应的缓存临时表中。在该技术方案中,在将业务数据进行分层后,其中每一层的业务数据与其他数据之间的对应关系并不变,比如对于原本处于树形结构中的同一分支上的、具有父子关系的业务数据,此时处于不同的层,但通过第二缓存区中的的对应关系临时表进行了关联,以确保数据处理过程的准确性。在上述任一技术方案中,优选地,所述步骤204还包括判断每层的业务数据的数据量是否大于预设的数据量阈值,若大于,则将该层的业务数据分为多个批次,并分别对每个批次的业务数据进行处理,其中,每个批次的业务数据的数据量小于或等于所述数据量阈值。在该技术方案中,当数据量较大时,往往容易导致内存溢出等错误的发生,因而通过对数据量的判断,以及在数据量较大的情况下进行分批次处理等,从而避免上述错误等的发生。在上述任一技术方案中,优选地,所述步骤204还包括设置第三缓存区,将每个批次的业务数据的处理结果缓存至所述第三缓存区中,并在该层的所有批次的业务数据都处理结束后,将所述第三缓存区中的所有处理结果存储至对应的缓存临时表中。在该技术方案中,当存在多个批次的业务数据的情况下,通过设置第三缓存区,帮助完成对于该层所有业务数据的处理。下面结合图3和图4,对利用基于本发明的数据处理装置对大数据进行处理的过程进行详细描述,其中,图3示出了根据本发明的实施例的数据处理装置对大数据进行处理的示意图;图4示出了根据本发明的实施例的对大数据进行处理的具体流程图。如图3所示,当业务数据为具有层次关系的数据时,特别是具有较为复杂的层次关系的大数据时,通过图中所示的数据处理装置进行处理,从而较之传统的树遍历算法等更为迅速地得到相应的处理结果。该数据处理装置包括层次组装模块、分批处理模块和数据缓存模块,对大数据进行处理的流程如下步骤402,由层次组装模块根据用户的订阅或实时触发操作,将原本呈树结构的业务数据进行重新组装成新的数据结构,包括多个层,每层中的业务数据在原本的树结构中具有相同的层级,比如在图5中,将A分至第一层,将BI、B2……Bn分至第二层,将Cl……分至第三层等等,其中,这里的“新的数据结构”可以采用比如LiSt〈Set〈E>>,从而记录不同层次的业务数据。步骤404,由分批处理模块从层级最低的层开始,依次处理每层的业务数据。这里,由于每个层中的业务数据具有相同的层级,因此,可以直接将业务数据的层级作为其所处层的层级。步骤406,在对每个层的业务数据进行处理时,首先对该层的业务数据的数据量进行判断。由于处理过程所依赖的处理装置的内存空间有限,因而过大的数据量可能导致内存溢出等问题的发生。可以计算得到一个数据量阈值M,则当数据量〉M时,判断数据量过大,需要进入步骤408做进一步的操作后,才能进行处理,当数据量<M时,则可以直接对该业务数据进行处理即可。这里可以采用M=当前内存大小/(处理对象占用的内存大小X10),即当所需要处理的业务数据的占用内存空间大于当前内存的1/10以上时,判定数据量过大。当然,这里的1/10是个经验数值,用户可以根据自己的实际情况,选用不同的判定数值。步骤408,对当前层的业务数据进行分批处理,具体地,可以将该层中的业务数据分为多个批次,其中,每个批次的业务数据的数据量<M,然后分别对每个批次的业务数据进行处理。步骤410,将每个批次得到的处理结果都缓存至一级缓存中,这里的一级缓存可以为内存级缓存,可以得到更快的处理速度。而当每个层处理完成后,需要将得到的对应于该层的所有处理结果同步至二级缓存中,并清空一级缓存,以便继续对下一个层的业务数据进行处理。步骤412,系统还针对每个层分别设置有三级缓存,并通过建立在三级缓存中的临时表来记录对应层的处理结果,以便用于下一层的数据处理过程,或是作为最终的处理结果。为了快速查询到处理结果对应的层以及与其他数据的对应关系,可以设置二级缓存,主要信息为〈值,层缓存表名称,子项主键>,并在二级缓存中存储上述对应关系,具体地,也可以采用临时表的方式。若步骤406时判定数据量过大,则经由步骤408和步骤410对该层的业务数据进行分批处理后,将处理结果由一级缓存同步至二级缓存中。若步骤406时判定数据量不大于预设阈值,则直接处理后,输入至二级缓存中。步骤414,通过在二级缓存中查找对应关系后,将处理结果存储至三级缓存中对应的临时表中。若仍存在更高层级的层,则将该临时表中的数据用户对该更高层级的层的数据处理过程,否则可以作为最终的处理结果输出或进行展现。结合图5所不的产品结构举例场景为对月结成本的结转,需要把材料、半成品成本依次卷积到成品上。首先,抓取需要结转的底层码树形产品结构,把此利用数据转换为具有层次结构的数据结构List〈Set〈String>>。其次,从最底层的层依次开始计算,依次循环每层的材料、半成品成本,当本层待计算材料的数量值〈100000(按照当前内存为4G,物料主键为一个32bit字符计算),增加到待计算的集合List中,当达到100000时,开始分批计算成本,当本批处理结束时,把处理后的数据存储至临时表中,例如Map〈B1,处理结果对象>,并清空处理过的集合数据,再进行读取下一次批数据,直至本层所有数据B1、B2……Bn处理完毕,该层的Set集合为O。最后,把处理的结果放到本层临时表中nLeveltemptable(n为层数),并同步〈值,表,子项>,对应的快速查询缓存临时表信息为〈BI,nLeveltemptable,E>。当处理本层业务数据的时候,当涉及对子层数据进行卷积的时候,例如在处理BI数据的时候,需要用到子项Cl的数据卷积,那么先到〈值,表,子项主键〉临时表,查询到子项主键CI,后查询CI对应的临时表为3LeveItemptabIe,从而查询临时表为3Leveltemptable临时表中E处理后数据结果逻辑,并用于对BI的数据处理过程。以上结合附图详细说明了本发明的技术方案,考虑到相关技术中,对于具有层级结构的数据的处理过程缓慢,因此,本发明提供了一种数据处理装置和一种数据处理方法,可以有效优化具有层次结构的大数据的业务处理能力,从传统广度、深度遍历,转化为分层分批处理数据,并结合多级、多个缓存结构处理各个层次数据,方便统计计算或者大数据量涉及父子关系的数据交互的复杂逻辑运算处理,及其对各层数据、已运算结果的快速定位。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求1.一种数据处理系统,其特征在于,包括分层单元,用于根据待处理的业务数据之间的层级关系,将所述待处理的业务数据分为多个层,其中,每层的业务数据具有相同的层级;数据处理单元,用于将每层的业务数据的层级作为该层的层级,并从最低层级的层开始,依次分别对每层的业务数据进行处理,其中,将低层级的层的处理结果用于上一层级的处理过程;结果获取单元,用于将处于最高层级的层对应的业务数据的处理结果,作为所述待处理的业务数据的最终处理结果。2.根据权利要求I所述的数据处理系统,其特征在于,还包括缓存处理单元,用于设置第一缓存区,在所述第一缓存区中为每层建立缓存临时表,以存储该层的业务数据的处理结果,并用于该层的父级层的业务数据的处理过程。3.根据权利要求2所述的数据处理系统,其特征在于,所述缓存处理单元还用于设置第二缓存区,在所述第二缓存区中建立对应关系临时表,以存储所述待处理的业务数据与所述缓存临时表之间的对应关系,以用于在对指定层的业务数据进行处理后,根据所述对应关系将处理结果存储至对应的缓存临时表中。4.根据权利要求2或3所述的数据处理系统,其特征在于,还包括数据量判断单元,用于判断每层的业务数据的数据量是否大于预设的数据量阈值,其中,在判断结果为是的情况下,所述数据处理单元将该层的业务数据分为多个批次,并分别对每个批次的业务数据进行处理,其中,每个批次的业务数据的数据量小于或等于所述数据量阈值。5.根据权利要求4所述的数据处理系统,其特征在于,所述缓存处理单元还用于设置第三缓存区,将每个批次的业务数据的处理结果缓存至所述第三缓存区中,并在该层的所有批次的业务数据都处理结束后,将所述第三缓存区中的所有处理结果存储至对应的缓存临时表中。6.一种数据处理方法,其特征在于,包括步骤202,根据待处理的业务数据之间的层级关系,将所述待处理的业务数据分为多个层,其中,每层的业务数据具有相同的层级;步骤204,将每层的业务数据的层级作为该层的层级,并从最低层级的层开始,依次分别对每层的业务数据进行处理,其中,将低层级的层的处理结果用于上一层级的处理过程;步骤206,将处于最高层级的层对应的业务数据的处理结果,作为所述待处理的业务数据的最终处理结果。7.根据权利要求6所述的数据处理方法,其特征在于,所述步骤204还包括设置第一缓存区,在所述第一缓存区中为每层建立缓存临时表,以存储该层的业务数据的处理结果,并用于该层的父级层的业务数据的处理过程。8.根据权利要求7所述的数据处理方法,其特征在于,所述步骤204还包括设置第二缓存区,在所述第二缓存区中建立对应关系临时表,以存储所述待处理的业务数据与所述缓存临时表之间的对应关系,以用于在对指定层的业务数据进行处理后,根据所述对应关系将处理结果存储至对应的缓存临时表中。9.根据权利要求7或8所述的数据处理方法,其特征在于,所述步骤204还包括判断每层的业务数据的数据量是否大于预设的数据量阈值,若大于,则将该层的业务数据分为多个批次,并分别对每个批次的业务数据进行处理,其中,每个批次的业务数据的数据量小于或等于所述数据量阈值。10.根据权利要求9所述的数据处理方法,其特征在于,所述步骤204还包括设置第三缓存区,将每个批次的业务数据的处理结果缓存至所述第三缓存区中,并在该层的所有批次的业务数据都处理结束后,将所述第三缓存区中的所有处理结果存储至对应的缓存临时表中。全文摘要本发明提供了一种数据处理系统,包括分层单元,用于根据待处理的业务数据之间的层级关系,将所述待处理的业务数据分为多个层,其中,每层的业务数据具有相同的层级;数据处理单元,用于将每层的业务数据的层级作为该层的层级,并从最低层级的层开始,依次分别对每层的业务数据进行处理,其中,将低层级的层的处理结果用于上一层级的处理过程;结果获取单元,用于将处于最高层级的层对应的业务数据的处理结果,作为所述待处理的业务数据的最终处理结果。本发明还提出了一种数据处理方法。通过本发明的技术方案,可以有效优化具有层次结构的大数据的业务处理能力。文档编号G06F12/08GK102929587SQ20121037079公开日2013年2月13日申请日期2012年9月28日优先权日2012年9月28日发明者李春丽申请人:用友软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1