基于Hadoop的关系表非冗余键集合识别方法

文档序号:6541439阅读:212来源:国知局
基于Hadoop的关系表非冗余键集合识别方法
【专利摘要】基于Hadoop的关系表非冗余键集合识别方法。包括:提出了一种基于数据修剪和属性修剪的键集合识别算法,并设计出了该算法的分布式解决方案MRKeyFinder。本发明提出的非冗余键集合识别算法,能够为大规模数据集中非冗余键集合信息识别提供一种有效的解决方案。本发明可用于数据建模、数据集成、异常检测、查询优化、建立索引等领域。
【专利说明】基于Hadoop的关系表非冗余键集合识别方法
【技术领域】
[0001]本发明属于数据库【技术领域】,具体涉及一种新型的关系表的非冗余键集合识别技术。
【背景技术】
[0002]随着计算机的普及和网络技术的飞速发展,互联网上出现了海量的数据可供人们利用,关系型数据是其中最主要的数据组织形式之一。在关系数据库中,键集合信息是理解数据库的结构和特征的基础。所谓键,是指给定数据表中可以唯一标识一条数据记录的属性或属性集合。不存在两条数据记录其构成键的所有属性值都相同。键集合信息对数据建模、数据集成、异常检测、查询优化、索引等大量数据库任务具有至关重要的作用。例如,利用键集合信息,在基于成本的查询优化中可以更好地进行选择性估计;利用键集合信息,数据库管理员可以通过创建索引、创建视图等方法来提高数据访问的效率;利用键集合信息,在数据集成方面可以实现自动化处理;利用键集合信息,可以提高数据表检索元组的速度。然而,在现实应用场景中的大型、复杂数据集中,键集合信息往往缺失或者不完整。原因在于:数据库设计者对数据库内在隐含的关系不够了解;出于性能的考虑,数据库设计者没有明确标出键信息;为了设计方便,数据库设计者采用自动递增的方式产生主键,自增主键只具有唯一标识记录的功能,不具有实际意义。在大型、复杂数据集中,通过人工方法确定数据集的键集合不切实际。数据库管理员和开发者迫切需要有效的键集合信息识别方法,辅助完成数据库优化、分析、维护等繁重任务。因此,如何高效自动识别数据集的键集合方法具有重要理论意义和应用价值。
[0003]然而,由于数据库关系表属性数目较多、数据元组数量庞大,数据库关系表的键集合信息识别通常具有较高的复杂性。目前,键集合识别的相关研究工作较少。发现一个非冗余的键是一个NP完全问题,发现所有的非冗余键就更加困难。以前的大部分键识别工作只解决了单属性键的识别问题,并没有解决复合键的识别问题。BruteForce算法是当前大多数商业产品使用的键集合识别方法,但由于CPU和内存容量的限制,该算法只能用于小规模的、属性个数少的数据集。G0RDIAN算法能有效地发现数据集中的所有非冗余的键,但当数据集较大时,该算法无法直接进行处理,需要在执行算法前进行数据采样,缩小要处理的数据规模,这样可能会影响结果的正确性。因此,在大数据集之上高效、准确识别非冗余的键集合信息,是一项非常具有挑战性的研究工作。
[0004]大规模数据集处理通常需要进行大量计算,一种有效的解决方法是采用分布式计算方法。分布式计算是近年提出的一种新型的计算方式,它结合IT技术,充分利用互联网上的计算机的闲置处理能力来实现超级计算和大数据存储,有效地解决大型计算问题。分布式计算的工作原理是将大的计算任务分解为许多小的子任务,然后将这些小的子任务分配给多台计算机进行处理,最终将计算得到的结果进行收集综合而得到大计算任务的结果,从而有效解决大数据集处理的相关问题。
[0005]Hadoop是Apache软件基金会提出的一个开源分布式计算平台,是能够对海量数据进行存储和分析的软件框架。Hadoop利用分布式存储方式来提高读写速度、扩大存储容量,采取MapReduce并行地处理分布式文件系统上的数据以加快数据的处理速度。Hadoop为用户提供了系统底层细节透明的分布式基础架构,用户可以在低廉的硬件设备上部署Hadoop,搭建自己的分布式计算平台。Hadoop集群在存储及计算方面都很强大,用户可以有效地组织计算机资源,非常轻松和方便地完成海量数据的处理。Hadoop的主要特点包括高效性、可靠性、伸缩性及开源性等,用户可以充分利用该平台解决大数据处理的相关问题。

【发明内容】

[0006]本发明的目的是解决在大数据集之上如何高效、准确识别非冗余的键集合信息的问题,提出一种基于Hadoop的关系表非冗余键集合识别方法。
[0007]本发明针对现有技术中的问题,创新性的在成熟的BruteForce算法的基础上提出了属性剪枝和数据剪枝策略,极大提高了算法的运行效率;提出了一种基于Hadoop的键集合识别方案,实现了基于Hadoop的键集合识别算法;最终本发明能够高效地得出关系表中所有的非冗余键集合。
[0008]本发明提出的基于Hadoop的关系表非冗余键集合识别方法,包括如下步骤:
第1、识别数据中的键集合
第1.1、使用投影统计方法判断一个属性集合是否是键,
定义1:键:键是数据表中唯一标识一条数据记录的属性或属性集合;在数据表中,不存在两条数据记录构成键的所有属性值都相同;
第1.1.1、投影操作:将数据表在属性集合K进行投影得到数据集合S ;
第1.1.2、统计操作:统计投影后集合S中每一条数据在S中出现的次数,如果每一条数据都只出现过一次,则说明属性集合K是键,否则,K不是键;
第1.2、对冗余的属性集进行修剪,
定义2:冗余键:除了包含键的所有属性之外,还含有关系中的其它属性的属性集合;第1.2.1、基于启发式规则:如果一个属性集合是某个键的超集,那么这个属性集合是一个冗余键;根据该启发式规则可以对需要进行键判别的属性集合进行修剪,避免对冗余键的投影统计操作;
第1.2.2、对于键所组成的集合KeySet中的每一个非冗余键如果待判定属性集合CandidateKey包含任意一个则说明CandidateKey是冗余的键;
第1.3、对数据集进行修剪,
在对某一个CandidateKey判别结束后,可以先对数据集进行修剪,去除数据表中执行投影统计操作后统计结果count域为I的数据记录,从而可以降低数据集的规模,降低键识别过程中的计算代价;
第2、基于Hadoop的键集合识别算法
含数据修剪的分布式非冗余键集合识别算法:MRPKeyFinder ;该算法的主要内容是:在属性集修剪操作及数据集合修剪操作的基础之上,基于Hadoop平台同时对属性集合树中每一个节点的子节点进行键判别;
定义3:属性集合树:一种用于表示属性集合之间包含关系的树形结构。
[0009]属性集合树中的每一个节点都是关系表中的属性所组成的集合,树中每一个节点所表示的集合都是这个节点的子节点表示的集合的子集,位于同一层的节点所表示的集合具有相同的阶数,即集合具有相同的元素数;属性集合树的事例见附图2 ;
本发明主要利用属性集修剪操作及数据修剪操作对BruteForce算法进行改进,并在此基础上提出了分布的式键集合识别算法MRPKeyFinder ;由于将数据集在属性集合K上进行投影的计算过程中,数据集中的每一条记录在K上进行投影的过程是相互独立、互不影响的,所以可以将数据集的投影过程并行执行;因此,MRKeyFinder将属性集合树中同一层的属性集合的判别过程并行执行,从而可以在不影响程序正确性的基础上很大程度上提高程序的执行效率;
第2.1、键判别算法MRPCheckKey用来验证一个属性集合是否是键。MRPCheckKey采用KeyValueTextInputFormat的作业输入方式,key与value以“ | ”作为分隔符;该算法由一个Mapper类和一个Reducer类组成;
第2.1.UMapper类根据传入的属性列表,对输入数据进行投影:在Map任务中解析出AttrList,对于AttrList中的每一个Jiir,根据传入的〈key, value〉及Jiir拼接出输出的key,将输出的value设置为输入的value,输出到Reduce ;
第2.1.2、Reducer类对投影记录进行分组聚集,并根据聚集结果进行相应的输出:在Reduce中,对于传入的〈key, value-list〉,如果value-list不止含有一个value,则遍历value-list,对于value-list的每一个将〈key,输出到与该key对应的文件
中;
第2.2, MRPKeyFinder算法中定义如下数据结构用以保存上下文信息:
【权利要求】
1.基于Hadoop的关系表非冗余键集合识别方法,其特征在于该方法包括如下步骤: 第1、识别数据中的键集合 第1.1、使用投影统计方法判断一个属性集合是否是键, 定义1:键:键是数据表中唯一标识一条数据记录的属性或属性集合;在数据表中,不存在两条数据记录构成键的所有属性值都相同; 第1.1.1、投影操作:将数据表在属性集合K进行投影得到数据集合S ; 第1.1.2、统计操作:统计投影后集合S中每一条数据在S中出现的次数,如果每一条数据都只出现过一次,则说明属性集合K是键,否则,K不是键; 第1.2、对冗余的属性集进行修剪, 定义2:冗余键:除了包含键的所有属性之外,还含有关系中的其它属性的属性集合;第1.2.1、基于启发式规则:如果一个属性集合是某个键的超集,那么这个属性集合是一个冗余键;根据启发式规则可以对需要进行键判别的属性集合进行修剪,避免对冗余键的投影统计操作; 第1.2.2 、对于键所组成的集合KeySet中的每一个非冗余键如果待判定属性集合CandidateKey包含任意一个则说明CandidateKey是冗余的键; 第1.3、对数据集进行修剪, 在对某一个CandidateKey判别结束后,可以先对数据集进行修剪,去除数据表中执行投影统计操作后统计结果count域为I的数据记录,从而可以降低数据集的规模,降低键识别过程中的计算代价; 第2、基于Hadoop的键集合识别算法 含数据修剪的分布式非冗余键集合识别算法:MRPKeyFinder ;该算法的主要内容是:在属性集修剪操作及数据集合修剪操作的基础之上,基于Hadoop平台同时对属性集合树中每一个节点的子节点进行键判别; 定义3:属性集合树:一种用于表示属性集合之间包含关系的树形结构; 属性集合树中的每一个节点都是关系表中的属性所组成的集合,树中每一个节点所表示的集合都是这个节点的子节点表示的集合的子集,位于同一层的节点所表示的集合具有相同的阶数,即集合具有相同的元素数; 本发明主要利用属性集修剪操作及数据修剪操作对BruteForce算法进行改进,并在此基础上提出了分布式键集合识别算法MRPKeyFinder ;由于将数据集在属性集合K上进行投影的计算过程中,数据集中的每一条记录在K上进行投影的过程是相互独立、互不影响的,所以可以将数据集的投影过程并行执行;因此,MRKeyFinder将属性集合树中同一层的属性集合的判别过程并行执行,从而可以在不影响程序正确性的基础上很大程度上提高程序的执行效率; 第2.1、键判别算法MRPCheckKey用来验证一个属性集合是否是键;MRPCheCkKey采用KeyValueTextInputFormat的作业输入方式,key与value以“ | ”作为分隔符;该算法由一个Mapper类和一个Reducer类组成; 第2.1.UMapper类根据传入的属性列表,对输入数据进行投影:在Map任务中解析出AttrList,对于AttrList中的每一个Jiir,根据传入的〈key, value〉及Jiir拼接出输出的key,将输出的value设置为输入的value,输出到Reduce ;第2.1.2、Reducer类对投影记录进行分组聚集,并根据聚集结果进行相应的输出:在Reduce中,对于传入的〈key, value_list>,如果value-list不止含有一个value,则遍历value-list,对于value-list的每一个将〈key,输出到与该key对应的文件中; 第2.2, MRPKeyFinder算法中定义如下数据结构用以保存上下文信息:
【文档编号】G06F17/30GK103853844SQ201410110441
【公开日】2014年6月11日 申请日期:2014年3月24日 优先权日:2014年3月24日
【发明者】袁晓洁, 韩术鹏, 蔡祥睿, 莫云音, 温延龙 申请人:南开大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1