图结构大数据局部扩散更新算法的制作方法

文档序号:13716986阅读:201来源:国知局
技术领域本发明涉及一种数据处理方法,尤其涉及一种图结构大数据局部扩散更新算法。

背景技术:
在本专利中,图结构指数据结构中的图,具有多个前驱节点(父节点)和多个后继节点(子节点),或者节点的联系是任意。节点由数据域构成,存储节点数据、前驱节点和后继节点指针(地址)。在基于图结构应用(如信息推送、广告投放、市场营销等领域)中,需要经常更新节点数据,数据更新在图结构数据非常重要。更新节点数据,就需要遍历图到欲更新节点。遍历到欲更新节点是数据局部更新的关键技术,遍历图的方法有深度优先搜索方法和广度优先搜索方法。相应地,图的局部更新可以采用基于深度优先搜索方法和广度优先搜索方法。深度优先搜索方法技术要点:从图中某个顶点出发,访问该顶点,依次从该顶点的未被访问的相邻顶点出发深度优先遍历图,直到图中所有和该顶点相通的顶点都被访问到;若图中尚有顶点未被访问,则选取图中一个未曾被访问顶点作为起点,重复上述过程,直至图中所有顶点都被访问为止。广度优先搜索方法技术要点:从图中某个顶点出发,访问该顶点,依次从该顶点的未被访问的相邻顶点出发广度优先遍历图,直到图中所有和该顶点相通的顶点都被访问到;若图中尚有顶点未被访问,则选取图中一个未曾被访问顶点作为起点,重复上述过程,直至图中所有顶点都被访问为止。数据局部更新采用广度优先搜索方法或深度优先搜索方法达到欲更新节点(图中的顶点),不管是广度优先搜索方法还是深度优先搜索方法,都要使用递归算法,将返回函数地址压入堆栈中。在大数据局部数据更新应用(如信息推送、广告投放、市场营销等领域)中,很可能导致堆栈溢出,或者甚至根本不可能完成局部数据更新。

技术实现要素:
本发明旨在提供一种图结构大数据局部扩散更新算法,通过将图结构大数据分解描述为大数据实体和实体间联系;采用分布式数据库HBase表存储实体标识和实体间联系;借助队列缓冲相邻实体,通过更新深度控制更新循环,以欲更新开始实体为中心更新相邻实体属性,以完成数据更新。本发明所述的局部为以欲更新开始实体为中心更新深度范围的所有实体。为实现上述目的,本发明采用的技术方案如下:本发明公开的图结构大数据局部扩散更新算法,包括以下步骤:步骤1.分解图结构大数据:将图结构大数据分解为大数据实体和实体间联系;步骤2.存储数据:通过应用分布式数据库HBase表存储大数据实体和实体间联系;步骤3.初始化参数:包括欲更新开始实体标识、欲更新数据及在更新列族中的列成员、更新深度和队列;设置当前更新深度为0,队列为空;步骤4.根据欲更新开始实体标识,搜索欲更新开始实体,将欲更新开始实体插入队列中;当前更新深度达到步骤3初始化的更新深度且队列为空时结束更新;步骤5.更新队首实体对应的HBase表中更新列族的列成员;当队首实体未访问过的相邻实体深度大于更新深度时转到步骤7;步骤6.向队列中添加队首实体的未访问过的相邻实体;步骤7.记录队首实体已被访问和队首实体的当前更新深度,删除队首实体元素;如果同一层相邻实体没有更新完,有以下两种处理方法,两种处理方法任选其一:第一种,判断当前更新深度大于步骤3初始化的更新深度且队列为空是否成立,成立结束更新,否则转到步骤5;第二种,转到步骤5;步骤8.当前更新深度加1;当当前更新深度大于步骤3初始化的更新深度且队列为空时结束更新,不成立则转到步骤5。进一步的,所述步骤1中采用实体属性反映实体间联系,运用实体标识区分不同大数据实体。进一步的,所述步骤1中将全局内能区分每个大数据实体的标识定义为实体标识,所述实体标识与大数据实体一一对应。进一步的,所述实体属性包括联系属性和更新属性,将欲更新的数据或数据域定义为更新属性,将实体间联系定义为联系属性,即用更新属性反映欲更新的数据或数据域,用联系属性反映实体间联系。进一步的,所述实体属性还包括其它属性,其它属性为联系属性、实体标识、更新属性以外的属性。此处的定义使转换关系或数据结构更为简洁,同时使更新属性和联系属性跟HBase表的列成员一致,属于过渡性术语。进一步的,所述步骤2中,所述实体标识转化为记录的行关键字;所述联系属性、更新属性和其它属性分别转化为HBase表的联系列族、更新列族和其它列族;所述欲更新数据或域存储在更新列族的相应列成员中。本发明公开的图结构大数据局部扩散更新算法具有以下特征:第一,采用分布式数据库HBase(HBigdataEntity表)存储图结构大数据实体和大数据实体间联系,理论上HBase数据库存储容量无限大,支持海量的图结构大数据的存储。第二,局部更新中的局部最大范围为给定图的子图,不同子图属于不同局部。局部更新的时间消耗主要在于图的遍历,遍历到欲更新开始实体局部内更新局部范围内所有实体。本发明的算法时间复杂度为O(N),N为以欲更新开始实体构成的子图实体(顶点)数量。如果在计算时间复杂度时将局部扩展到整个图而不是子图,这种情况不属于本发明范畴(是所有实体更新而不是局部更新)内。采用基于深度优先搜索和广度优先搜索算法的局部更新算法时间复杂度为O(N2),即更新局部为距离开始遍历顶点最远子图。本发明比基于深度优先搜索算法和广度优先搜索的局部更新算法更快。第三,基于深度优先搜索和广度优先搜索算法的局部更新算法,因为深度优先搜索或者广度优先搜索算法采用堆栈保存返回地址,在大数据环境下可能无法完成,存在风险。本发明是采用队列缓存实体标识等信息,队列最大长度为同层更新深度相邻实体最大数据量。本算法的空间复杂度也远小于基于深度优先搜索或者广度优先搜索算法的局部更新算法,并且可应用于大数据的局部更新。第四,本发明支持有向图和无向图局部数据更新。对于无向图,在HBigdataEntity表联系列族中分配列成员存储实体的相应相邻实体即可。对于有向图,在HBigdataEntity表联系列族中分配列成员存储实体弧头和弧尾两类列成员,弧头列成员存储指向该实体的联系;弧尾列成员存储指出的实体联系。由于HBase表具有很好的列成员扩展性,很容易动态插入和删除大数据实体间联系。第五,由于数据结构中的线性结构和树结构是图结构的特列,所以本发明也可以应用于大数据实体间联系为线性结构和树结构的领域的局部数据更新。与现有技术相比,本发明具有以下益效果:1.将图结构大数据转换为大数据实体和实体间联系,实体联系属性表达实体间网状联系,将大数据实体和实体间联系存储在HBigdataEntity表中,比基于深度优先搜索和广度优先搜索算法的局部更新算法有更快的速度和更小的空间代价。2.本发明支持有向图和无向图大数据的局部数据更新,容易增加和删除实体间联系,即容易维护实体间联系。附图说明图1是实施例1的流程图;图2是实施例2的流程图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。实施例1如图1所示,本实施例公开的图结构大数据局部扩散更新算法,包括以下步骤:步骤1.分解图结构大数据:将图结构大数据分解为大数据实体和实体间联系。采用实体属性反映实体间联系,运用实体标识区分不同大数据实体。在全局内能区分每个大数据实体的标识定义为实体标识,实体标识与大数据实体具有一一对应关系。根据实体属性功能,实体属性包括联系属性、更新属性和其它属性,其中其它属性用于描述大数据实体的其它性质或特征或特性等,本实施例中其它属性为联系属性、实体标识、更新属性以外的属性。将欲更新的数据(域)定义(组织)为更新属性;大数据中的大数据实体间联系定义为联系属性。联系属性反映图的实体间网状联系,大多数是在创建实体记录时就确定不变,因为实体间的联系是固定的,但也有需要修改的情况。步骤1.完成图结构大数据问题域定义,步骤2完成图结构大数据的存储。步骤2.存储数据:通过应用分布式数据库HBase表存储大数据实体和实体间联系。通过应用分布式数据库HBase表存储大数据实体和实体间的网状联系以存储图结构大数据。大数据实体进一步转化为HBase表的记录;实体标识转化为记录的行关键字;实体联系属性、更新属性和其它属性分别转化为HBase表的联系列族、更新列族和其它列族。将描述实体间网状联系属性存储在联系列族的相应列成员中,本实体的前驱实体用前驱列成员存储(支持多个前驱实体),后继实体用后继成员存储(支持多个后继实体);将欲更新数据(域)存储在更新列族的相应列成员中(支持多个数据同时更新)。为了便于后面描述,本专利将HBase表定义为HBigdataEntity表,根据以上分析建立HBigdataEntity表,该表用于存储联系列族、更新列族和其它列族,行关键字为实体标识。步骤2完成图结构大数据存储,步骤1和2是应用本发明图结构大数据局部更新算法的基础,涉及到以下术语定义:欲更新开始实体、更新深度和队列。欲更新开始实体为输入参数,是局部更新开始的第一个实体。更新深度为输入参数,距离欲更新开始实体的最大深度,欲更新开始实体的深度为0,依次向相邻实体扩散深度计数为1,2,3……。队列是先到先出的数据结构,队列中的第一个元素称为对首元素,相应地,队列中最后一个元素为对尾元素。队列中包括删除对首元素和插入对尾元素操作,在本发明中采用队列存储局部更新实体相关信息,例如实体标识、实体是否被访问过标志和当前更新深度。以下步骤3~8完成图结构大数据局部扩散更新:步骤3.初始化参数:包括欲更新开始实体标识、欲更新数据及在更新列族中的列成员、更新深度和队列;设置当前更新深度为0,队列为空。步骤4.根据欲更新开始实体标识,搜索欲开始更新实体,将欲更新开始实体插入队列中,当当前更新深度大于步骤3初始化的更新深度且队列为空时结束更新。步骤5.更新队首实体对应的HBigdataEntity表中更新列族的列成员,即完成实体的数据更新。当队首实体未访问过的相邻实体深度达到更新深度时转到步骤7。步骤6.判断队首实体未访问过的相邻实体深度是否大于更新深度,如果不成立向队列中添加队首实体的未访问过的相邻实体。步骤7.记录队首实体已被访问和队首实体的当前更新深度,删除队首实体元素。如果同一层相邻实体没有更新完成,则判断当前更新深度大于步骤3初始化的更新深度且队列为空是否成立,若成立结束更新,不成立则转到步骤5。步骤8.当前更新深度加1;当当前更新深度大于步骤3初始化的更新深度且队列为空时结束更新,否则转到步骤5。实施例2本实施例与实施例1的区别在于:步骤7之后,如果同一层相邻实体没有更新完成,则转到步骤5。本发明将图结构大数据分解描述为图结构大数据实体、实体标识和大数据实体间联系;采用HBigdataEntity表存储大数据实体标识(为行关键字)、大数据实体间联系(为联系列族成员)、更新属性(为更新列族成员)和其它属性;借助队列缓冲相邻实体通过更新实体深度控制循环参数,以欲更新开始实体为中心更新相邻实体属性。本发明可应用于信息推送、广告投放、市场营销等领域中,也可应用于线性结构和图结构大数据局部更新领域中,应用范围广。当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1