一种基于众包的skyline-join查询处理方法与流程

文档序号:21630691发布日期:2020-07-29 02:39阅读:163来源:国知局
本发明属于数据库领域,特别涉及一种skyline-join查询处理方法设计,具体涉及一种面向众包的skyline-join查询处理方法设计。
背景技术
::随着数据库技术的不断发展,数据库中可以存储和处理的数据量日益增加,如何从海量数据中挖掘出人们感兴趣的信息是数据库研究领域的重要问题之一。skyline-join查询可以根据用户定义,筛选出用户最感兴趣的数据集合。skyline-join查询已成为数据库研究领域的重点课题之一,并取得了丰富的研究成果。skyline-join查询作为多目标决策的重要手段,在人们日常生活中有着非常广泛的作用。为了使skyline-join查询能更加灵活地应用在不同场景中,人们对skyline-join查询进行了扩展,许多skyline-join扩展查询被相继提出。本文从用户需求着手进行分析,就skyline-join的各种扩展查询问题进行了深入研究,针对不同的应用场景,提出了高效的有针对性的解决方案,有效满足了人们的实际需求。传统的skyline-join查询仅适用于完整数据库,而在诸多实际应用中经常会出现缺失属性值的情况,即在非完整数据库中处理skyline-join查询。现有的不完整数据集上skyline-join查询算法大多基于概率或基于打分填补的方式进行处理,处理效果有待提高。为了更加真实地反映现实情况,更以用户为中心,本发明提出了一种基于众包方法解决不完整数据的skyline-join查询处理方法。主要思想是在某些属性中元组的值未知时,利用众包方法来推断元组之间的成对偏好。具体而言,提出的解决方案考虑了现有的使用众包的算法中两个关键因素即通过使用支配集来最小化识别众包skyline-join的货币成本和通过减少等待时间的轮数并行处理向众包平台提出的问题。因此,设计一种基于众包的skyline-join查询处理方法,并且在该平台上处理数据属性值缺失的情况。技术实现要素:为克服相关技术中存在的问题,本发明提供一种基于众包的skyline-join查询处理方法,能够有效地处理数据属性值缺失情况下的skyline-join查询。为了实现上述目的,本发明创造采用的技术方案为:一种基于众包的skyline-join查询处理方法,其步骤为:1)在数据不缺失的数据表内对数据进行过滤,根据数据属性,过滤掉各个属性内被支配的数据元组;2)针对数据属性值缺失的数据表,在不同的属性上,先根据数据属性值缺失的数据表的已知属性建立偏好树局部索引,根据局部索引对不同属性内的元组进行过滤;3)根据步骤1)和步骤2)中数据不缺失的数据表和包含属性缺失的数据表的所有已知属性建立全局索引,在前两步的基础上进行全局过滤,返回最终结果。所述的步骤2)中具体方法为:21)构建局部索引t222)局部过滤算法查询处理从偏好树的根节点开始,通过数据不缺失的数据表的已知属性建的偏好关系进行众包查询,并对偏好树进行更新,返回查询结果,利用众包的过滤步骤如下:22-a)判断元祖是否全部被遍历过,若是算法结束,否则判断这一轮是否还有可遍历的元组;22-b1)若这一轮是没有可遍历的元组,返回步骤22-a);22-b2)若有可遍历的元组,则判断元祖是否在第一层;22-b2-c1)若元组是第一层元组,则保留t2中,返回步骤22-a);22-b2-c2)若元组不是第一层元组,则判断元组是否只有一个父节点;22-c2-d1)如果只有一个父节点,则在t2中查询在缺失维度上偏好关系是否存在;22-c2-d2)如果存在多个父节点,则查询父节点在缺失维度上支配关系是否存在;22-d1-e1)如果步骤22-d1)中缺失维度上偏好关系存在,则判断未知维度和已知纬度的支配关系是否一致;22-d1-e2)如果步骤22-d1)中缺失维度上偏好关系不存在,则在元组间的未知属性上众包并更新t2,返回步骤22-a);22-e1-f1)如果22-d1-e1)中未知维度和已知纬度的支配关系一致,则在t2上删除下层元组,返回步骤22-a);22-e1-f2)如果22-e1-f1)中未知维度和已知纬度的支配关系一致,则将其保留在t2中,返回步骤22-a);22-d2-e1)如果22-c-d2)中缺失维度上支配关系存在,则将在未知维度上被支配的父节点与之的边断开,返回步骤22-a);22-d2-e2)如果22-c-d2)中缺失维度上支配关系不存在,则在父节点的缺失维度上众包,并更新t2,返回步骤22-a)。所述的步骤3)中,具体方法为:31)构建全局索引:在全局上建立偏好索引,根据步骤1)和步骤2)的返回结果,将两个表的元组按照相同的属性进行连接,并在数据不缺失的数据表和包含属性缺失的数据表的已知属性上建立skyline层次索引,即全局索引t3;32)全局过滤算法:查询处理从全局偏好树的根节点开始,通过完整数据表的已知属性和包含属性缺失的数据表的已知属性的偏好关系进行众包查询,并对偏好树进行更新,返回查询结果,利用众包的过滤步骤如下:33-a)判断元祖是否全部被遍历过,若是算法结束,否则判断这一轮是否还有可遍历的元组;32-b1)若这一轮是没有有可遍历的元组,返回步骤32-a);32-b2)若还有可便利的元组,判断元祖是否在第一层,若元组在第一层,则保存在t3中;否则判断元组是否只有一个父节点;32-c1)若有一个父节点,则查询父子间的属性是否一致;32-c2)若存在多个父节点,则判断父节点之间的属性是否相同;32-c1-d1)若32-c1)中父子间的属性一致,则保存在t3中,返回步骤32-a);32-c1-d2)若32-c1)中父子间的属性不一致,查询链接之后的元组在未知属性上的支配关系是否存在;32-d2-e1)若32-c1-d2)中元组在未知属性上的支配关系存在,判断未知维度和已知纬度的支配关系是否一致;32-d2-e2)若32-c1-d2)中元组在未知属性上的支配关系不存在,则众包并更新t3;32-f1-e1)若32-d2-e1)中未知维度和已知纬度的支配关系一致,将元组从t3中删除,返回步骤32-a);32-f2-e1)若32-d2-e1)中未知维度和已知纬度的支配关系不一致,将元组保存在t3中,返回步骤32-a);32-c2-d1)若32-c2)中父节点之间的属性相同,则判断父节点链接数据缺失表的元组是否相同;32-c2-d2)若32-c2)中父节点之间的属性不同,则在未知属性上众包并更新t3,返回步骤32-a);32-c2-d1-e1)若32-c2-d1)中父节点链接数据缺失表的元组相同,在未知维度上被支配的父节点与之的便断开,更新t3,返回步骤32-b2);32-c2-d1-e2)若32-c2-d1)中父节点链接数据缺失表的元组不同,断掉在未知维度上较弱的一方与其之间的边即支配关系,更新t3,返回步骤32-b2);最终,在t3中的元组即为最终查新结果。本发明创造的有益效果为:传统的基于数据缺失的skyline-join查询算法都是基于概率的或基于打分填补方式的;基于概率的算法效率较高,但返回的结果与人们期望的往往存在较大差距;相对于基于概率的算法,基于打分填补的算法更贴近于人们期望的结果,但打分的方式往往缺少整体性,存在差异性,本发明提出的基于众包的skyline-join查询算法,通过两两比较的方式提供给用户更有参考价值的结果,更能真实反映现实情况,更以用户为中心。并通过建立局部索引和全局索引,利用全局和局部过滤算法减少众包代价和时间延迟,使得众包代价和时间延迟大大提高,并能更真实有效的返回最终结果。附图说明图1a已知表内数据;图1b已知表内数据过滤结果;图2部分属性缺失的数据表;图3a已知属性上的偏好;图3b属性a上的t2;图3c属性a上的返回结果表述图;图4全局索引t3;图5最终结果表述图;图6基数变化对crowdsourcing代价的影响曲线图;图7已知表维度数量变化对crowdsourcing代价的影响曲线图;图8缺失维度数量变化对crowdsourcing代价的影响曲线图;图9未知表维度数量变化对crowdsourcing代价的影响曲线图;图10基数变化对crowdsourcing延迟的影响曲线图;图11维度数量变化对crowdsourcing延迟的影响曲线图;图12不同数据集上的众包代价的比较;图13不同数据集上的时间延迟的比较。具体实施方式1)在数据不缺失的数据表内对数据进行过滤,根据数据属性,过滤掉各个属性内被支配的数据元组;2)针对数据属性值缺失的数据表,在不同的属性上,先根据数据属性值缺失的数据表的已知属性建立偏好树局部索引,根据局部索引对不同属性内的元组进行过滤;3)根据步骤1)和步骤2)中数据不缺失的数据表和包含属性缺失的数据表的所有已知属性建立全局索引,在前两步的基础上进行全局过滤,返回最终结果。所述的步骤2)中具体方法为:21)构建局部索引t222)局部过滤算法查询处理从偏好树的根节点开始,通过数据不缺失的数据表已知属性建的偏好关系进行众包查询,并对偏好树进行更新,返回查询结果,利用众包的过滤步骤如下:22-a)判断元祖是否全部被遍历过,若是算法结束,否则判断这一轮是否还有可遍历的元组;22-b1)若这一轮是没有有可遍历的元组,返回步骤22-a);22-b2)若有可遍历的元组,则判断元祖是否在第一层;22-b2-c1)若元组是第一层元组,则保留t2中,返回步骤22-a);22-b2-c2)若元组不是第一层元组,则判断元组是否只有一个父节点;22-c2-d1)如果只有一个父节点,则在t2中查询在缺失维度上偏好关系是否存在;22-c2-d2)如果存在多个父节点,则查询父节点在缺失维度上支配关系是否存在;22-d1-e1)如果步骤22-d1)中缺失维度上偏好关系存在,则判断未知维度和已知纬度的支配关系是否一致;22-d1-e2)如果步骤22-d1)中缺失维度上偏好关系不存在,则在元组间的未知属性上众包并更新t2,返回步骤22-a);22-e1-f1)如果22-d1-e1)中未知维度和已知纬度的支配关系一致,则在t2上删除下层元组,返回步骤22-a);22-e1-f2)如果22-e1-f1)中未知维度和已知纬度的支配关系一致,则将其保留在t2中,返回步骤22-a);22-d2-e1)如果22-c-d2)中缺失维度上支配关系存在,则将在未知维度上被支配的父节点与之的边断开,返回步骤22-a);22-d2-e2)如果22-c-d2)中缺失维度上支配关系不存在,则在父节点的缺失维度上众包,并更新t2,返回步骤22-a)。所述的步骤3)中,具体方法为:31)构建全局索引:在全局上建立偏好索引,根据步骤1)和步骤2)的返回结果,将两个表的元组按照相同的属性进行连接,并在数据不缺失的数据表和包含属性缺失的数据表的已知属性上建立skyline层次索引,即全局索引t3;32)全局过滤算法:查询处理从全局偏好树的根节点开始,通过完整数据表的已知属性和包含属性缺失的数据表的已知属性的偏好关系进行众包查询,并对偏好树进行更新,返回查询结果,利用众包的过滤步骤如下:34-a)判断元祖是否全部被遍历过,若是算法结束,否则判断这一轮是否还有可遍历的元组;32-b1)若这一轮是没有有可遍历的元组,返回步骤32-a);32-b2)若还有可便利的元组,判断元祖是否在第一层,若元组在第一层,则保存在t3中;否则判断元组是否只有一个父节点;32-c1)若有一个父节点,则查询父子间的属性是否一致;32-c2)若存在多个父节点,则判断父节点之间的属性是否相同;32-c1-d1)若32-c1)中父子间的属性一致,则保存在t3中,返回步骤32-a);32-c1-d2)若32-c1)中父子间的属性不一致,查询链接之后的元组在未知属性上的支配关系是否存在;32-d2-e1)若32-c1-d2)中元组在未知属性上的支配关系存在,判断未知维度和已知纬度的支配关系是否一致;32-d2-e2)若32-c1-d2)中元组在未知属性上的支配关系不存在,则众包并更新t3;32-f1-e1)若32-d2-e1)中未知维度和已知纬度的支配关系一致,将元组从t3中删除,返回步骤32-a);32-f2-e1)若32-d2-e1)中未知维度和已知纬度的支配关系不一致,将元组保存在t3中,返回步骤32-a);32-c2-d1)若32-c2)中父节点之间的属性相同,则判断父节点链接数据缺失表的元组是否相同;32-c2-d2)若32-c2)中父节点之间的属性不同,则在未知属性上众包并更新t3,返回步骤32-a);32-c2-d1-e1)若32-c2-d1)中父节点链接数据缺失表的元组相同,在未知维度上被支配的父节点与之的便断开,更新t3,返回步骤32-b2);32-c2-d1-e2)若32-c2-d1)中父节点链接数据缺失表的元组不同,断掉在未知维度上较弱的一方与其之间的边即支配关系,更新t3,返回步骤32-b2);最终,在t3中的元组即为最终查新结果。实施例1:结合附图对本发明做进一步描述:为了测试本发明查询处理方法性能,作为本发明的一个实例,针对两个关键因素验证了本发明的算法:众包代价和时间延迟。由于众包部分的运行时间比在机器部分生成问题慢的多,因此专注于评估延迟的轮次数。实验由java语言实现,并在intelpentium(r)cpu(r)g32203.00ghz处理器,16gb主存储器的计算机上进行,重复每个实验10次并计算平均结果。算法的测试数据由合成数据集和真实数据集构成,考察两个数据集r1和r2在进行多对多连接操作后的skyline查询问题。表1总结了合成数据集的参数设置。表1合成数据集参数设置parametersvaluedefaultcardinalityn2k,4k,6k,8k,10k4k|attributeofr1|1,2,3,42|knownattributeofr2|1,2,32|unknownattributeofr2|1,2,31对于真实数据集,我们使用两个真实数据集来验证我们提出的psjcrowd和asjcrowd算法。我们从美团选择了北京(https://bj.meituan.com/)和沈阳(https://sy.meituan.com/)两个地方。沈阳和北京分别用s和b表示,b1和b2表示psjcrowd和asjcrowd在北京数据集中的众包情况,同样,s1和s2代表沉阳数据集上psjcrowd和asjcrowd的众包情况。选择500条数据(每个位置10家酒店和50家餐厅),连接属性是两个地方的不同区域。下面结合附图给出本发明的一个实例:在许多应用程序中,用户感兴趣的属性往往来自不同的数据表,当用户去某地旅游,假设用户的需求是“找到价格低星级好旅店,同时需要找到离旅店近,价格便宜同时质量又高的餐厅就餐”,同时,餐厅的质量是用户去过餐厅之后对其的评价,数据缺失。如果知道用户对餐厅的评价,肯定更符合实际情况,但是往往现有的数据库表中并没有这个结果,出现数据库表中某个属性完全缺失的情况。在上述例子中,为了能够提供给用户更有参考价值的结果,往往仅仅根据质量、平均消费等确定的属性不够的,如果能够知道来某个餐厅的用户对餐厅的整体评价,就是性价比,就更能真实反映现实情况,更以用户为中心。针对此类情况,本发明提出基于众包的skyline-join查询方法,过程如下:(1)针对数据完整的数据表,消减过程如下:首先把已知表内的元组根据它们的连接属性分成不同的组,在每个组内使用skyline算法求出skyline结果集,最后,返回所有属性组的skyline结果集。如图1所示,在其四个属性内,根据其价格和星级的属性(均假设其属性值越低越好),过滤掉配置配的元组,返回图1(b)所示的结果。(2)restauranttable如图二所示,为减少众包代价,并减少时间延迟,需要在具有相同属性的元组间进行消减,先利用元组的已知维度(distianceandr-price)建立skyline层结构,如图3(b)所示。在quality属性上,询问过程中建立偏好树t2,以包含属性a的元组为例,消减过程如下:在quality属性上,假定真实的偏好关系如图3(a)所示。第一层的数据元组一定在skyline候选集里,从第二层的元组开始进入消减过程,若元组只被一个元组支配,先检测元组间的支配关系在偏好树中是否已存在,若存在直接执行过滤操作,若不存在,直接进行众包;若被两个及以上的元组支配,只要支配他的元组被遍历过,即可先比较支配他的元组间的优先关系,众包之前先查询优先关系在t2中是否已存在,直至只有一个元组指向它,再众包。只有父亲节点遍历过后,下一轮才能众包,每轮重复以上操作,直至遍历完成。消减之后的结果如图3(c)所示,步骤22)描述了此过滤过程。(3)在本发明的最后一步中,还需建立全局skyline层次索引来进行消减,首先将过滤之后的两张表按照连接属性进行连接,对链接之后的数据表的元祖的所有已知的属性建立skyline层索引结构,如图4所示。在本步骤中消减策略如下:第一层的元组一定在skyline-join结果里,从第二层元组开始遍历,若元组只被一个元组支配,查询连接属性是否相同,若连接属性一致,不用众包,连接之后的元组均为最终结果,若连接属性不一致,直接进行众包;若被两个及以上的元组支配,先检测连接属性是否一致,若一致再检测连接的元组是否为同一个,若为同一个,众包一次即可,若不为同一个,先查询连接的元组优先关系是否已存在,若存在,众包一次即可,若不存在可先比较支配他的元组间的优先关(众包),再进行众包;若属性不一致,可先比较支配他的元组间的优先关系,直至只有一个元组指向它,再进行众包。只有父亲节点遍历过后,下一轮才能众包,每轮重复以上操作,直至遍历完成。最终结果如图5所示。步骤3-2描述了此过程。针对提出的算法来展示本发明的实验结果。分别在众包代价和时间延迟方面展示了算法的性能。然后在真实数据集上评估了本发明的算法。(1)众包代价当支付每个问题固定的奖励金额时,众包代价与向群众提出的问题数量成比例。使用询问的问题数量来衡量中报成本。分为三个阶段:p1(只对r1表过滤),p2(r2过滤),p3(全局过滤)。只执行p1时不影响众包数量,和baseline方法一样,即需将所有元组在未知属性上两两对比。①基数变化对crowdsourcing代价的影响图6描述了基于不同基数的问题数量。很明显p1+p2+p3最大限度的减少了所有参数设置的问题数量。②维度数量变化对crowdsourcing代价的影响图7描述了已知表的属性个数不同时的问题数量。虽然无论属性个数如何变化,baseline都表现出恒定的性能,但随着已知表的属性个数的增加,我们提出的方法会减少问题的数量。这是因为元组间相互支配的关系随着已知表的属性个数的增加而减少。通过实验结果我们发现:p1并不影响众包的问题数量。p1+p2+p3最小化了问题数量,当已知表的属性个数较少时,我们的过滤方法明显减少了问题数量,当已知表的属性个数为2时,p1+p2+p3将基线方法中的问题数量减少了两个数量级。图9描述了未知表已知属性的个数不同时的问题数量。和图7描述的情况类似,但随着未知表已知属性的个数的增加,本发明的方法减少问题的效果更加明显。③缺失维度数量变化对crowdsourcing代价的影响图8描述了未知表中未知属性的个数不同时的问题数量。当未知属性数量超过1时,我们通过一次性询问多个问题来减少问题数量。很容易看出p1+p2+p3在减少问题数量方面还是很有效的。(2)延迟。为了测量延迟,使用了执行算法的总轮数。也分为三个阶段:p1(只对r1表过滤),p2(r2过滤),p3(全局过滤)。只执行p1时不影响众包数量,和基线方法一样,即打分制形式的,每次只询问一个问题。①基数变化对crowdsourcing延迟的影响图10描述了不同基数的的轮数。虽然p1+p2+p3增加了询问轮数,但是问题数量减少了2个数量级,与每个问题众包一次的方式相比,轮数降低了2个数量级。②维度数量变化对crowdsourcing延迟的影响图11描述了已知表的属性个数不同时的的轮数,实验结果表明随着已知属性个数的增加,并行化程度更高。通过实验结果得到,我们提出的算法在众包代价和降低时间延迟方便具有高精度。图12比较了baseline与psjcrowd和asjcrowd之间的众包成本。值得注意的是,psjcrowd和asjcrowd的众包成本为基准方法的1/20。由于实际数据集的基础较小,因此“基线”和我们提出的算法之间的差距要小于在合成数据集上的差距。基准方法需要1000多个问题,而psjcrowd和asjcrowd仅需要50多个问题。图13比较了baseline与psjcrowd和asjcrowd之间的众包时间延迟。基准方法需要50轮,而psjcrowd和asjcrowd仅需要大约10轮。psjcrowd和asjcrowd的时间延迟是基准方法的1/5。在索引中,我们利用元组之间的偏好关系,每轮尽可能多地解决问题,因此大大减少了众包的轮数。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1