一种减少数据仓库数据冗余的方法和装置制造方法

文档序号:6493957阅读:795来源:国知局
一种减少数据仓库数据冗余的方法和装置制造方法
【专利摘要】本发明公开了一种减少数据仓库数据冗余的方法和装置,该方法包括:(1)确定待分析的起始表,根据数据仓库的元数据获得所述起始表的多个后续输出表信息;(2)根据各个后续输出表与起始表的关系确定各个后驱输出表的粒度层级信息;(3)计算处于同一粒度层级的两个或者多个后驱输出表之间的相似性,并对相似性较大的两个或者多个后驱输出表进行数据冗余减少处理。该方能够能自动的采集和分析数据表之间的关联关系,确定表与表之间的冗余程度,并据此可以进行后续的数据冗余减少处理,由此具有很好的技术效果。
【专利说明】一种减少数据仓库数据冗余的方法和装置
【技术领域】
[0001]本发明涉及一种减少数据仓库数据冗余的方法,涉及数据仓库系统优化等领域。【背景技术】
[0002]目前,大型的企业级数据仓库系统,经过几年来的建设后,系统中必然会存在大量的冗余数据。比如基于清单上开发的程序会非常多,生成的目标汇总表也会非常多,这些目标汇总表中有些会存在一定的相似性,随着具有相似性的表逐渐累计,这就造成了大量的冗余数据,这些冗余数据,一方面影响统计分析数据的精确性和可靠性,同时也影响着数据库的性能,耗占宝贵的存储资源。
[0003]要解决这个问题有两个环节:发现冗余数据、对冗余进行消除合并。目前主要采取的技术方案基本是:通过有经验的技术人员进行人工分析和处理。
[0004]现有发现和消除冗余数据的技术方案有以下的缺点:
[0005]1、人工处理对人员的经验和知识要求非常高,提高了问题解决的门槛。
[0006]2、发现的冗余数据会因为人的不同而有所不同,准确性难以保障。
[0007]3、难以发现全面的数据冗余问题。
[0008]4、难以给出最优的冗余消除解决方案。

【发明内容】

[0009]本发明所要解决的技术问题是提供一种减少数据仓库数据冗余的方法,该方法能够通过采集和分析数据表之间的关联关系,确定表与表之间的冗余程度,并据此进行数据冗余减少处理,以此达到发现和消除冗余的目的。
[0010]本发明解决上述技术问题所采取的技术方案如下:
[0011]一种减少数据仓库数据冗余的方法,包括:
[0012](I)确定待分析的起始表,根据数据仓库的元数据获得所述起始表的多个后续输出表信息;(2)根据各个后续输出表与起始表的关系确定各个后驱输出表的粒度层级信息;
[0013](3)计算处于同一粒度层级的两个或者多个后驱输出表之间的相似性,并对相似性较大的两个或者多个后驱输出表进行数据冗余减少处理。
[0014]一种减少数据仓库数据冗余的装置,包括:
[0015]输出表计算单元,用于确定待分析的起始表,根据数据仓库的元数据获得所述起始表的多个后续输出表信息;
[0016]粒度层级计算单元,用于根据各个后续输出表与起始表的关系确定各个后驱输出表的粒度层级信息;
[0017]相似度计算单元,用于计算处于同一粒度层级的两个或者多个后驱输出表之间的相似性;
[0018]数据冗余处理单元,用于获取所述处于同一粒度层级的两个或者多个后驱输出表之间的相似性信息,并对相似性较大的两个或者多个后驱输出表进行数据冗余处理。
[0019]本发明采取了上述方案以后,能够根据数据仓库元数据信息来发现数据的流向,找到输入表的生成的输出表,并据此根据输出表计算表的相似性,如果这些表的相似程度高,说明存在冗余数据,可以进行合并,以此达到自动地采集和分析数据表之间的关联关系,确定表与表之间的冗余程度,从而达到自动发现和消除冗余的目的。
[0020]本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
【专利附图】

【附图说明】
[0021]下面结合附图对本发明进行详细的描述,以使得本发明的上述优点更加明确。其中,
[0022]图1是本发明实施例减少数据仓库数据冗余的方法的流程示意图;
[0023]图2是本发明实施例减少数据仓库数据冗余的方法的流程示意图;
[0024]图3是本发明实施例减少数据仓库数据冗余的方法中建立关系链表的流程示意图;
[0025]图4是现有技术中数据仓库中表的示意图;
[0026]图5是经过本发明实施例减少数据仓库数据冗余的方法后的数据仓库中表的示意图;
[0027]图6是本发明实施例减少数据仓库数据冗余的装置的结构示意图。
【具体实施方式】
[0028]以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
[0029]另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0030]具体来说,本发明的原理在于分析数据仓库元数据,以此得到各个数据表(输入表和输出表)之间的关联关系,并最终确定表与表之间的冗余程度,从而达到自动发现和消除冗余的目的。
[0031]如图1所示,是本发明实施例减少数据仓库数据冗余的方法的流程示意图,其包括下列步骤:
[0032]步骤101:确定待分析的起始表,根据数据仓库的元数据获得所述起始表的多个后续输出表信息;
[0033]步骤102::根据 各个后续输出表与起始表的关系确定各个后驱输出表的粒度层级信息;
[0034]步骤103:计算处于同一粒度层级的两个或者多个后驱输出表之间的相似性,其中,当所述两个或者多个后驱输出表之间的相似性较大时,步骤104::对相似性较大的两个或者多个后驱输出表进行数据冗余减少处理。
[0035]具体来说,本发明可以根据数据仓库元数据信息来发现数据的流向,找到输入表的生成的输出表,并由此根据输出表计算表的相似性,如果这些表的相似程度高,说明存在冗余数据,可以进行合并,以此达到自动地采集和分析数据表之间的关联关系,确定表与表之间的冗余程度,从而达到自动发现和消除冗余的目的。
[0036]继续参照实施例对上述方法进行说明,在一个实施例中,所述步骤104中,对相似性较大的两个或者多个后驱输出表进行数据冗余减少处理,可以包括:将两个或者多个相似性较大的后驱输出表合并于一个新表中,并将所述新表作为所述起始表的后驱输出表,即在系统中将上述两个或者多个相似性较大的后驱输出表退出系统,并用新表替换掉上述两个或者多个相似性较大的后驱输出表,以此达到数据冗余减少的目的。
[0037]其中,结合具体的实施例和具体的数据结构对本发明进行详细说明,一般来说,一个数据仓库的表中,其存储着以下的信息:
[0038]存放的表的属性信息,level表示是表的粒度级别;
[0039]fromtab是表从哪些表处理过了的;Groupfield在生成这张表时汇总字段;wherefields是指条件中用到的表和字段。字段:表示表的字段信息,其中fromCols表示这个字段是从哪个哪些表的字段处理过来的。一张表拥有很多个字段信息。
[0040]在数据仓库的元数据中,存在着每张表的表结构信息,生成这张的处理程序和处理脚本,生成这张表的输入表,以及表的字段映射关系,因此,基于所述数据仓库的元数据的上述信息,我们可以通过元数据得知以上表的相关数据处理流程和字段的映射关系。
[0041]如图2所示,是本发明实施例减少数据仓库数据冗余的方法的流程示意图,其主要包括下列的主要步骤:
[0042]步骤201:输入分析的起始表表名和/或业务主键;
[0043]步骤202:查找分析起始表的后续所有表;
[0044]步骤203:计算表的粒度层级;
[0045]步骤204:计算表的相关性;
[0046]步骤205:判断表是否冗余和可合并的;
[0047]步骤206:记录冗余表信息;
[0048]步骤207:输出冗余表和合并建议。
[0049]以下结合上述描述和本发明的基本原理进行详细说明各个步骤201~207,其中,步骤201:输入分析的起始表表名和/或业务主键,具体包括:
[0050]输入起始的分析表和表的主键字段;
[0051]比如要从清单表出发,找后续相关的冗余表信息,因为在数据仓库的模型设计中没有设计物理主键,因此需要输入表的业务主键,具体来说,对于一些表,是没办法通过元数据等技术手段识别逐渐字段,如通过外部接口直接入库到仓库的表,这时需要人工输入主键。
[0052]步骤202:查找分析起始表的后续所有表;
[0053] 具体包括,从兀数据出发,从中查找输入表的后续相关表信息,例如,在一个实施例中,主要根据输入要分析对象,从系统加载所有相关的对象建立关系链表,要包括起始对象后驱的所有对象。
[0054]其中,关系信息:[关系名、输入对象、输出对象、转换规则、类型]
[0055]其中,数据结构:节点关系链表,其中,图3是本发明实施例减少数据仓库数据冗余的方法中建立关系链表的流程示意图;
[0056]具体来说,其主要包括:根据要分析对象,建立关系链表的第一个节点。
[0057]从关系信息中递归查找输入对象为分析对象,建立后续节点,增加到链接表中,后驱节点的兄弟节点表示多个后驱节点。
[0058]计算后驱对象表的字段的属性,后驱的某张表的字段名跟其前驱对象字段不一定一样,如生成数据脚本insert into后驱表名(字段名I,字段明2,...) select fieldl,field2 from前驱表,则后驱表的字段名I的原生字段为前驱表的fieldl字段的原生字段名,以表示字段名的不一样但其内容是一样的对表相似性分析带来影响。
[0059]在判断表相识性时,主要是如何识别后驱表的字段是由前驱表哪些字段而来的,取个名称叫为后驱表字段的原生字段,举一个在移动话费处理中的实例进行说明,其主要有以下2种类型:
[0060]I)后驱表的某个字段是由前驱表直接映射的,如后驱表的号码,费用是前驱表直接简单计算映射过来的。则后驱表的号码,费用的原生字段为前驱表的号码,费用。
[0061]2)后驱表的某个字段是由前驱表若干字段计算而来的,如后驱表的总费用是由前驱表的长途费+本地费两个字段计算出来的,则后驱表的总费用的原生字段为长途费,本地费。
[0062]加载表的字段和用到字段,并根据链表中逐一取后驱表标记为AaftTab查找其对应的处理程序的对应生成数据的sql脚本。
[0063]这里由于,在数据仓库系统中,表不设物理主键,根据sql脚本解析得到表的groupfield字段,做为表的主键字段,根据表生成sql语句中,调用sql解析器得到表在生成过程中用到的字段,为合并算法时所用到。
[0064]步骤203:计算表的粒度层级,输入表的粒度记为1,表示最细粒度的数据,并按广度遍历后驱表,取后驱表的主键字段跟其前驱表做主键集合比较:按广度遍历后续输出表,取后续输出表的主键字段跟其前驱表做主键集合比较,如果所述后续输出表的主键字段集合仅存在于前驱表主键字段集合,则表的粒度=前驱表的粒度+1 ;
[0065]如果后续输出表的主键字段集合存在于多个前驱表主键字段集合中,则取所有前驱表的最大粒度+1。
[0066]步骤204:计算表的相关性,具体包括:
[0067]取后驱的表,做两两之间或者多个之间的比较,并将其结果保存于数组中,数组的结构为[表,比较表,共同主键字段,用到所有的字段],共同的字段是去比较表的主键字段集合的交集,用到的所有字段是比较表用到的字段的并集。
[0068]步骤205:判断表是否冗余和可合并,具体来说,如果表的主键是一样,则此两表可以合并,合并的表新字段为合并表的用到字段的并集合。
[0069]如果表的主键存在包含关系,则优化数据处理流程。将同粒度级别的数据处理进行合并。
[0070]步骤206:计算冗余表信息;[0071]步骤207:输出冗余表和合并建议,比如,在一个实施例中,数据表有些是不能直接合并,因为有时候的冗余是为了性能和调度任务处理及时性考虑的,因此在该实施例中,本发明能够给出几种的合并建议,供人工进一步确认选择,当然,其在合并的时候,可以根据上述实施例所描述的那样,即其可以将两个或者多个相似性较大的后驱输出表合并于一个新表中,并将所述新表作为所述起始表的后驱输出表,即在系统中将上述两个或者多个相似性较大的后驱输出表退出系统,并用新表替换掉上述两个或者多个相似性较大的后驱输出表。
[0072]在一个实施例中,图5是经过本发明实施例减少数据仓库数据冗余的方法后的数据仓库中表的示意图;
[0073]图6是本发明实施例减少数据仓库数据冗余的装置的结构示意图。
[0074]其中,优化前的数据处理,如下图5所示,Tabl从不同角度汇总形成了 tab2,tab3,tab4的表。Tabl作为起始的输入表,数据量比较大需要对表进行三次的表的扫描。
[0075]经过优化以后,如图6所示,其各个表之间的顺序比较有序,从而降低了在以后步骤的中的数据处理计算量,提供了数据仓库的效率。
[0076]总之,本发明可以根据数据仓库元数据信息来发现数据的流向,找到输入表的生成的输出表,并由此根据输出表计算表的相似性,如果这些表的相似程度高,说明存在冗余数据,可以进行合并,以此达到自动地采集和分析数据表之间的关联关系,确定表与表之间的冗余程度,从而达到自动发现和消除冗余的目的。
[0077]如图7所示,根据本发明上述方法实施例的同一构思,本发明还公开了一种减少数据仓库数据冗余的装置,包括:
[0078]输出表计算单元701,用于确定待分析的起始表,根据数据仓库的元数据获得所述起始表的多个后续输出表信息;
[0079]粒度层级计算单元702,用于根据各个后续输出表与起始表的关系确定各个后驱输出表的粒度层级信息;
[0080]相似度计算单元703,用于计算处于同一粒度层级的两个或者多个后驱输出表之间的相似性;
[0081]数据冗余处理单元704,用于获取所述处于同一粒度层级的两个或者多个后驱输出表之间的相似性信息,并对相似性较大的两个或者多个后驱输出表进行数据冗余处理。
[0082]进一步地,所述数据冗余处理单元,用于对相似性较大的两个或者多个后驱输出表进行数据冗余处理,具体包括:
[0083]将所述两个或者多个相似性较大的后驱输出表合并于一个新表中,并将所述新表作为所述起始表的后驱输出表。
[0084]其中,在优选的实施例中,所述输出表计算单元,根据数据仓库的元数据获得所述起始表的多个后续输出表信息,具体包括:
[0085]获取所述兀数据中所述待分析表的表结构信息、生成表的输入表以及表的字段映身寸关系;
[0086]根据所述表结构信息、生成表的输入表以及表的字段映射关系获取所述表的数据处理流程和字段的映射关系,并根据所述数据处理流程和字段的映射关系获得所述待分析表的后驱输出表信息。[0087]并且,所述输出表计算单元,进一步用于获取待分析的起始表和各个后驱输出表业务主键字段信息;
[0088]所述数据冗余处理单元,进一步基于各个后驱输出表的业务主键字段信息进行后驱输出表的合并,具体包括:
[0089]如果两个后驱输出表的主键字段是一样,则对所述两个后驱输出表进行合并,其合并的表新字段为合并表的用到字段的并集合;
[0090]如果各个后驱输出表的业务主键字段存在包含关系,则不进行后续输出表合并。
[0091]并且,所述粒度层级计算单元,用于根据各个后续输出表与起始表的关系确定各个后驱输出表的粒度层级信息,具体包括:
[0092]按广度遍历后续输出表,取后续输出表的主键字段跟其前驱表做主键集合比较,如果所述后续输出表的主键字段集合仅存在于前驱表主键字段集合,则表的粒度=前驱表的粒度+1 ;
[0093]如果后续输出表的主键字段集合存在于多个前驱表主键字段集合中,则取所有前驱表的最大粒度+1。
[0094]总之,本发明装置可以根据数据仓库元数据信息来发现数据的流向,找到输入表的生成的输出表,并由此根据输出表计算表的相似性,如果这些表的相似程度高,说明存在冗余数据,可以进行合并,以此达到自动地采集和分析数据表之间的关联关系,确定表与表之间的冗余程度,从而达到自动发现和消除冗余的目的。
[0095]需要说明的是,对于上述方法实施例而言,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
[0096]本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
[0097]而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0098]最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种减少数据仓库数据冗余的方法,其特征在于,包括: (1)确定待分析的起始表,根据数据仓库的元数据获得所述起始表的多个后续输出表信息; (2)根据各个后续输出表与起始表的关系确定各个后驱输出表的粒度层级信息; (3)计算处于同一粒度层级的两个或者多个后驱输出表之间的相似性,并对相似性较大的两个或者多个后驱输出表进行数据冗余减少处理。
2.根据权利要求1所述的减少数据仓库数据冗余的方法,其特征在于,步骤(3)中,所述对相似性较大的两个或者多个后驱输出表进行数据冗余减少处理,包括: 将所述两个或者多个相似性较大的后驱输出表合并于一个新表中,并将所述新表作为所述起始表的后驱输出表。
3.根据权利要求1所述的减少数据仓库数据冗余的方法,其特征在于,步骤(1)中,根据数据仓库的元数据获得所述起始表的多个后续输出表信息,具体包括: 获取所述兀数据中所述待分析表的表结构信息、生成表的输入表以及表的字段映射关系; 根据所述表结构信息、生成表的输入表以及表的字段映射关系获取所述表的数据处理流程和字段的映射关系 ,并根据所述数据处理流程和字段的映射关系获得所述待分析表的后驱输出表信息。
4.根据权利要求2所述的减少数据仓库数据冗余的方法,其特征在于,步骤(1)中,进一步包括:获取待分析的起始表和各个后驱输出表业务主键字段信息,所述步骤(3)中,进一步包括: 基于各个后驱输出表的业务主键字段信息进行后驱输出表的合并,具体包括:如果两个后驱输出表的主键字段是一样,则对所述两个后驱输出表进行合并,其合并的表新字段为合并表的用到字段的并集合; 如果各个后驱输出表的业务主键字段存在包含关系,则不进行后续输出表合并。
5.根据权利要求1所述的减少数据仓库数据冗余的方法,其特征在于,步骤(2)中,所述根据各个后续输出表与起始表的关系确定各个后驱输出表的粒度层级信息,具体包括: 按广度遍历后续输出表,取后续输出表的主键字段跟其前驱表做主键集合比较,如果所述后续输出表的主键字段集合仅存在于前驱表主键字段集合,则表的粒度=前驱表的粒度+1 ; 如果后续输出表的主键字段集合存在于多个前驱表主键字段集合中,则取所有前驱表的最大粒度+1。
6.一种减少数据仓库数据冗余的装置,其特征在于,包括: 输出表计算单元,用于确定待分析的起始表,根据数据仓库的元数据获得所述起始表的多个后续输出表信息; 粒度层级计算单元,用于根据各个后续输出表与起始表的关系确定各个后驱输出表的粒度层级信息; 相似度计算单元,用于计算处于同一粒度层级的两个或者多个后驱输出表之间的相似性; 数据冗余处理单元,用于获取所述处于同一粒度层级的两个或者多个后驱输出表之间的相似性信息,并对相似性较大的两个或者多个后驱输出表进行数据冗余处理。
7.根据权利要求6所述的减少数据仓库数据冗余的装置,其特征在于,所述数据冗余处理单元,用于对相似性较大的两个或者多个后驱输出表进行数据冗余处理,具体包括: 将所述两个或者多个相似性较大的后驱输出表合并于一个新表中,并将所述新表作为所述起始表的后驱输出表。
8.根据权利要求6所述的减少数据仓库数据冗余的装置,其特征在于,所述输出表计算单元,根据数据仓库的元数据获得所述起始表的多个后续输出表信息,具体包括: 获取所述兀数据中所述待分析表的表结构信息、生成表的输入表以及表的字段映射关系; 根据所述表结构信息、生成表的输入表以及表的字段映射关系获取所述表的数据处理流程和字段的映射关系,并根据所述数据处理流程和字段的映射关系获得所述待分析表的后驱输出表信息。
9.根据权利要求6所述的减少数据仓库数据冗余的装置,其特征在于,所述输出表计算单元,进一步用于获取待分析的起始表和各个后驱输出表业务主键字段信息; 所述数据冗余处理单元,进一步基于各个后驱输出表的业务主键字段信息进行后驱输出表的合并,具体包括: 如果两个后驱输出表的主键字段是一样,则对所述两个后驱输出表进行合并,其合并的表新字段为合并表的用到字段的并集合; 如果各个后驱输出表的业务主键字段存在包含关系,则不进行后续输出表合并。
10.根据权利要求6所述的减少数据仓库数据冗余的装置,其特征在于,所述粒度层级计算单元,用于根据各个后续输出表与起始表的关系确定各个后驱输出表的粒度层级信息,具体包括: 按广度遍历后续输出表,取后续输出表的主键字段跟其前驱表做主键集合比较,如果所述后续输出表的主键字段集合仅存在于前驱表主键字段集合,则表的粒度=前驱表的粒度+1 ; 如果后续输出表的主键字段集合存在于多个前驱表主键字段集合中,则取所有前驱表的最大粒度+1。
【文档编号】G06F17/30GK103902582SQ201210579470
【公开日】2014年7月2日 申请日期:2012年12月27日 优先权日:2012年12月27日
【发明者】颜海涛 申请人:中国移动通信集团湖北有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1