一种基于查询统计的p2p系统导向搜索方法

文档序号:6587016阅读:277来源:国知局
专利名称:一种基于查询统计的p2p系统导向搜索方法
技术领域
本发明设计一种通用于P2P网络的查询增强方法,该方法独立于底层拓扑结构, 利用历史査询统计和语义分析结果将每次查询请求引导到最可能提供相应信息的结 点上进行。它的使用有效减少查询的网络开销,提高查询成功率,降低通信延迟,并 且几乎不增加额外的维护开销。
背景技术
到目前为止已经有很多经典的查询方法,比如混合式P2P网络下,基于服务器的 查询方式;无结构P2P网络下的洪泛方式、随机走方式、扩展环方式,超结点方式, 等等;结构化P2P模型下基于DHT的数值临近方式、位置临近方式、逐位匹配方式, 等等。但是我们发现在实际应用中各种模型由于自身的缺陷而受到限制,而无结构 P2P网络凭借拓扑结构简单、容错性强等优点成为目前主流的P2P实用系统,但是无 结构对等网络自身的一些缺点限制了其更好的扩展与运行,其中最大的问题就是数据 查询成功率与査询开销的矛盾。传统的洪泛式査询带来的网络开销过大,而低开销的 随机走、扩展环等査询方式又无法保证査询的成功率。
基于以上的观察,本发明提出一种通用于P2P网络的查询增强方法,它基于历史 査询统计和语义分析信息的结果,把每次查询引导到更有效率的结点进行查询,这样 可以尽量避免使用底层网络的查询方法,可以有效的提高查询成功率,降低査询实验, 缓解网络负载,也能进一步提高网络的容错性、健壮性。

发明内容
本发明目的是提出一种通用于P2P网络的査询的增强方法,该方法独立于底层 拓扑结构,利用历史查询统计和语义分析结果将每次查询请求引导到最可能提供相应 信息的结点上进行。为了实现上述目的,本发明的技术方案是
(1) 建立统计导向表(Statistics Guided Table,简称SGT),基于对历史査询统计 和语义分析结果,建立双层结构的"统计导向表"。上层表项只保留最新查询的历史 记录,按照查询的时间排序;下层表项保存响应本次查询或者响应过相似查询的结点 信息(包括IP, Port等)和有利因子(如可用带宽、时延、响应次数等功能评价的 指标)。
(2) 利用统计导向表査询文件, 一旦结点建立统计导向表后,可以按照本次查询 与统计导向表SGT历史查询的语义相关性大小,首先有效的利用统计导向表SGT内 的信息进行査询; 一旦SGT保存的历史记录与本次査询相关性不大,或者使用SGT 无法获得所需结果,会自动启用底层査询策略。第一次提出査询请求时只能使用底层结构 的査询策略,得到响应消息后创建SGT,
(3) 自适应的更新统计导向表,包括主动更新和被动更新两种方法。被动方式发 生在结点转发查询请求后,使用捎带更新(piggybacking)的方式,这种方式不会增 加额外开销。主动更新发生在成功查询后,首先源结点(查询发起者)会利用得到的 回复消息更新自己的SGT,然后主动把自己SGT中与本次査询相关的结点信息发给 目标结点,让目标结点利用这些信息更新它的SGT。
SGT更新方式,对结点进行潜在的聚类,如果当前的SGT与本次查询相关性不 大,直接启用底层查询方法,假设通过某结点获得该资源,这时需要替换掉SGT最 早的查询的相关信息,计算相似度后发现两项的结点查询时很相似,于是合并两项的 结点信息;在未命中的情况下,使用底层查询方式,假设结点R、 S响应该请求,与前一次类似,建立新的査询表项,将最早表项与最相似的查询合并。
本发明与现有技术相比,其有益效果是,本发明提出一种通用于P2P网络的查询
增强方法,它基于历史查询统计和语义分析信息的结果,把每次査询引导到更有效率 的结点进行査询,这样可以尽量避免使用底层网络的查询方法。该方法独立于底层拓
扑结构,在无结构P2P网络和结构化P2P网络都能够使用。在维护SGT开销很小的 前提下,可以有效的提高网络整体性能,比如提高査询成功率、缓解网络负载、降 低查询时延等等,也能提高系统的健壮性、容错性。


图l是本发明统计导向表的结构 图2是本发明SGT的主动更新示意图
图3是本发明利用SGT多次迭代查询的性能对比图,其中(a)成功率、(b)平 均时延、(c)平均消息数
图4是本发明维护SGT的开销
图5是本发明结点动态变化时系统的成功率的变化
具体实施例方式
本发明可分为3个阶段建立统计导向表、利用统计导向表查询的算法、自适应 更新统计导向表的算法。
最后会提供部分模拟实验结果。 阶段l:建立统计导向表
为了下面文章和算法叙述的方便,首先给出一些符号的意义,如表1所示。
表l符号表符号意乂
尺SGT第一层,保存历史査询的次数
〃SGT第二层,与査询相关的结点数
查询时,选择相关的历史査询的个数
査询时,选择相关的结点个数
在历史査询信息中,第/项査询记录
本次査询《和0,次的相似度;
査询相似度l萄值,衡量是否使用SGT
更新相似度阈值,衡量是否合并SGT
SOT—/;o戸査询时,利用SGT迭代査询的次数
本文基于两个合理的假设(1)川户共享资源时,很大可能会共享相关的资源。(2)用户在 相对集中时间内请求资源,带有一定的偏好。第一个假设与文献[18中描述的兴趣局部现象类似。 第二个假设是对用户行为分析的结果,用户在相对集中的时间内请求网络资源会有比较明确的目
的性。基于此,本文引入一种基于历史杳询统计和语义分析的统计导向表(Statistics Guided Table, 简称SGT),如图1所示。SGT分为2层,上层表项只保留最新《次查询的历史记录(图中《=3), 按照查询的时间排序;下层每一个表项都对应的保存一组M项的记录(图中^/=2),记录响应本 次査询或者响应过相似查询的结点信息(包括IP, Port等)和有利因子(如可用带宽、时延、 响应次数等)。可以看出上层表项相当底层结点信息的目录或者分类标准。从下面的介绍的查询 策略和更新策略中可以体现这种结构的优势。
在计算语义相似度的方面,在信息检索领域涌现出很多技术,这里我们启发性的选择比较流 行的向量空间模型(vector space model, VSM)和潜在语义索引(latent semantic indexing, LSI) 技术128。即将查询条件转化为向量表示。在计算两次杏询的相似程度时候,我们转化为计算它们
的向量的余弦值,利用如下公式<formula>formula see original document page 6</formula>
其中4是查询q的向量。 阶段2:利用统计导向表查询的算法
当结点初次进入P2P网络时没有任何历史査询记录,第一次提出査询请求时只能使用底层结 构的査询策略,得到响应消息后创建SGT,之后按照算法1来进行査询。 算法l SGT的査询算法
<formula>formula see original document page 6</formula>
1. 从SGT中最相关的&个历史记录下,选出有 利因子最大的A^个结点发送齐询请求;
2. 等待一段时间,收集冋复消息 if有结点响应 //SGT命中情况
建立连接,获取资源; else 〃SGT脱耙情况
启用底层査询方法, else 〃SGT与査询相关性不高
直接启用底层査询方法; 可以看出这种搜索方法是一种松散的增强方法,而SGT对系统贡献的大小取决于SGT的命中 率,在模拟实验中显示SGT命中率很高,尤其是在利用SGT迭代多次(SGr—被设置成2、 3、 4)时。算法1描述的是SGr—to戸为1时使用SGT査询的过程,多次迭代SGT的方法与之类似。 阶段3:自适应更新统计—导向表的算法
为了提高SGT的命中率并降低维护SGT的开销,我们使用主动、被动相结合的更新方式。被 动方式发生在结点转发查询请求后,使用捎带更新(piggybacking)的方式,这种方式不会增加额 外开销。主动更新发生在成功査询后,首先源结点(查询发起者)会利用得到的回复消息更新自 己的SGT,然后主动把自己SGT中与本次杳询相关的结点信息发给目标结点,让目标结点利用 这些信息更新它的SGT,这样目标结点会了解更多这类文件的信息,这也是一种激励政策(分享 的资源越多,自己获得相关资源的可能性越大),另一方面,这种主动更新使得SGT可以得到更 远处相关结点的信息,扩大自己覆盖范围,提高SGT命中率。维护开销仅在这个时候产生,不过 这个开销很小,因为是单次单向的。利用这种被动和主动方式相结合的方式可以很好的提高SGT 的使用效率。
下面的算法是被动和主动更新SGT的方法,值得注意的是被动更新仅仅发生在SGT的第二层, 只需要按照有利因子排序,添加或者替换掉指向某个历史杏询的结点;而主动更新时,SGT两层 都要进行变化,首先需耍合并(或者删除)第一层中的历史査询信息,然后合并(或者替换)相 关历史査询的结点信息。
算法2 SGT的被动更新算法
〃中间结点转发査询q后进行
I .找出与查询《最相似的査询2 ,设最大相似度为S/wmax II. if57w薩2 4
把査询^的源结点信息整合到0^ 所指向的结点列表中, else
忽略本次查询《信息算法3 SGT的主动更新算法 〃源结点成功获得资源后进行
I. 更新自己的SGT
if结果是使用SGT获得的
1. 用本次查询《替换最相似的査询内容2
2. 合并响应本次査询的结点与原来g^^指向的结点信息,
3. 重新按时间顺序对SGT中上层的历史査询信息排序; else
.找出与最早查询2/最相似度历史杏询0^,相似度为&>^
if &' 7臓> rM 合并2/和& 相关的结点
2. 删除込的査询信息和结点信息
3. 用本次査询条件《和响应结点信息,创建新表项。按时间顺序 加入到原有导向表中
II. 通知目的结点更新它的SGT
1. 将与本次査询最相关的A^个结点信息,发送给目的结点;
2. 目的结点按照被动更新的方式更新它的SGT
这种SGT更新方式可以对结点兴趣进行潜在的聚类,如图2所示。假设源结点X当前的SGT 如图2(a)所示,然后开始杳询"屯影",此时它的SGT与本次杏询相关性不火,H接启用底层 査询方法,假设通过结点F获得该资源,这时需耍替换掉SGT最早的査询的相关信息,计算相似 度后发现"女歌手l"与"女歌手3"很相似,于是合并两项的结点信息,如图2(b);假设这之 后结点X继续查询"电影2",因为SGT有相似杳询,所以首先使用SGT,在未命中的情况下, 被迫使用底层査询方式,假设结点R、 S响应该请求,与前一次类似,建立新的表项"电影2", 将最早表项与最相似的查询合并,如图2(c)所示;然后,结点X继续査找"书籍1",因为导向表 内容不相关,直接通过底层方法获得资源后,更新SGT会试图将最早历史查询合并到后面表项, 但是因为与其它査询相关性不高,于是直接删除该项,创建新的表项加入SGT,如图2(d)所示。
从图2可以看出,这种替换策略还可以按时间优先原则来调整聚类的粒度,离现在时间越接 近的历史査询信息越丰富,这是"统计导向表"的另一个优势。 模拟实验结果
图3是利用SGT迭代多次査询时,系统各方面性能的情况,依然从査询成功率、査询时延、 系统负载这几方面分析。用SGr—/rap表示迭代杳询的次数,SGr—to;w= 1是图3讨论过的情况。 从图5中可以看出多次使用SGT可以进一步提高系统的性能,如图3(a),当《 r—Ao/w=3或4 B寸, 奔询成功率比Gnutella增加近270%,使得查询成功率从0.088%提高32%。图3(b)显示随着迭代 SGT的次数增加,杳询时延会进一步降低到78%;但是从图3(c)可以看出当SGr—力0戸=4时,系 统运行一段时间后负载会随着杏询次数增加而增加。原冈在于当使用SGT迭代齊询次数过多,会 导致过多的结点参与到査询中,产生类似洪泛的效果。所以并不是使用SGT迭代的次数越多对系 统性能改善的作用越大。综合从这几张图中可以看出SGrj70p5=3对系统的整体改善达到最优, 此时杳询成功率比Gnutella提高了近270%;平均时延降低近78%,而系统负载也会降低近32%。
图4描述的是维护SGT所需的开销。我们分别模拟了 SGr—to戸为1、 2、 3时维护SGT消息 数占整体消息数的比例情况。实际上维护SGT的开销是非常小的,还不到0.04%。这和我们在设 计SGT算法的目标相一致。
图5是在是在动态环境下利用SGT迭代査询1次、2次、3次时与Gnutella在査询成功率方 面的对比。实验过程中,首先在系统运行稳定情况下依次让10%、 30%、 50%的结点崩溃,分别执行10000次査询;接着让崩溃的结点重新加入系统,再分别执行10000次査询。从图中可以看 出SGT的使用对系统健壮性、容错性能有所提高,在50%结点崩溃时,Gnutella的查询成功率已 经下降到1%以下;使用SGT后(在SGrj2op^3时)査询成功率可以保证在11%左右,仍然比 稳定状态下的Gnutella要高近20%。从图中我们也可以看出,当崩溃的结点重新加入系统后,SGT 的使用可以帮助系统很快恢复到之前的稳定状态。II通知目的结点更新它的SGT
1. 将与本次査询最相关的Mq个结点信息,发送给目的结点;
2. 目的结点按照被动更新的方式更新它的SGT 这种SGT更新方式可以对结点兴趣进行潜在的聚类,如图2所示。假设源结点X当前的
SGT如图2(a)所示,然后开始査询"电影l",此时它的SGT与本次査询相关性不大,直接启 用底层査询方法,假设通过结点F获得该资源,这时需要替换掉SGT最早的査询的相关信息, 计算相似度后发现"女歌手l"与"女歌手3"很相似,于是合并两项的结点信息,如图 2(b);假设这之后结点X继续査询"电影2",因为SGT有相似査询,所以首先使用SGT,在未 命中的情况下,被迫使用底层査询方式,假设结点R、 S响应该请求,与前一次类似,建立新 的表项"电影2",将最早表项与最相似的査询合并,如图2(c)所示;然后,结点X继续査找 "书籍l",因为导向表内容不相关,直接通过底层方法获得资源后,更新SGT会试图将最早 历史査询合并到后面表项,但是因为与其它査询相关性不高,于是直接删除该项,创建新的 表项加入SGT,如图2(d)所示。
从图2可以看出,这种替换策略还可以按时间优先原则来调整聚类的粒度,离现在时间 越接近的历史査询信息越丰富,这是"统计导向表"的另一个优势。 模拟实验结果
图3是利用SGT迭代多次査询时,系统各方面性能的情况,依然从査询成功率、査询时 延、系统负载这几方面分析。用SGT—hops表示迭代査询的次数,SGT—hops = l是图3讨论过 的情况。从图5中可以看出多次使用SGT可以进一步提高系统的性能,如图3(a),当 SGT—hops二3或4时,査询成功率比Gnutella增加近270。/。,使得査询成功率从O. 088%提高32%。 图3 (b)显示随着迭代SGT的次数增加,査询时延会进一步降低到78%;但是从图3 (c)可以看出 当SGT—hop^4时,系统运行一段时间后负载会随着査询次数增加而增加。原因在于当使用 SGT迭代査询次数过多,会导致过多的结点参与到査询中,产生类似洪泛的效果。所以并不 是使用SGT迭代的次数越多对系统性能改善的作用越大。综合从这几张图中可以看出 SGT—hops二3对系统的整体改善达到最优,此时査询成功率比Gnutella提高了近270。/。;平均时 延降低近78%,而系统负载也会降低近32%。
图4描述的是维护SGT所需的开销。我们分别模拟了SGT—hops为l、 2、 3时维护SGT消息 数占整体消息数的比例情况。实际上维护SGT的开销是非常小的,还不到0.04%。这和我们在 设计SGT算法的目标相一致。
图5是在是在动态环境下利用SGT迭代査询1次、2次、3次时与Gnutella在査询成功率方面的对比。实验过程中,首先在系统运行稳定情况下依次让10%、 30%、 50%的结点崩溃,分 别执行10000次査询;接着让崩溃的结点重新加入系统,再分别执行10000次査询。从图中可 以看出SGT的使用对系统健壮性、容错性能有所提高,在50%结点崩渍时,Gnutella的査询成 功率已经下降到1%以下;使用SGT后(在SGT—hops二3时)査询成功率可以保证在11%左右,仍 然比稳定状态下的Gnute 11 a要高近20%。从图中我们也可以看出,当崩渍的结点重新加入系 统后,SGT的使用可以帮助系统很快恢复到之前的稳定状态。
权利要求
1、一种基于查询统计的P2P系统导向搜索方法,其特征是步骤是(1)建立统计导向表(SGT),基于对历史查询统计和语义分析结果,建立双层结构的“统计导向表”;上层表项只保留最新查询的历史记录,按照查询的时间排序;下层表项保存响应本次查询或者响应过相似查询的IP、Port结点信息和可用带宽、时延、响应次数等有利因子;(2)利用统计导向表查询文件,一旦结点建立统计导向表后,按照本次查询与SGT历史查询的语义相关性大小,有效的利用SGT内的信息进行查询;一旦SGT保存的历史记录与本次查询相关性不大,或者使用SGT无法获得所需结果,会自动启用底层查询策略,第一次提出查询请求时只能使用底层结构的查询策略,得到响应消息后创建SGT;(3)自适应的更新统计导向表,包括主动更新和被动更新两种方法。被动方式发生在结点转发查询请求后,使用捎带更新(piggybacking)的方式,这种方式不会增加额外开销;主动更新发生在成功查询后,首先查询发起者即源结点会利用得到的回复消息更新自己的SGT,然后主动把自己SGT中与本次查询相关的结点信息发给目标结点,让目标结点利用这些信息更新它的SGT。
2、 根据权利要求1所述的一种基于查询统计的P2P系统导向搜索方法,其特征 是基于对历史查询统计和语义分析的结果建立"统计导向表"(Statistics Guided Table, 简称SGT)。 SGT可以对用户的兴趣进行潜在聚类,并在更新的表项的时候,尽量收 集与用户兴趣最相关的结点信息。这样在查询的时候可以充分利用"统计导向表"记 录的结果,更有快、更准确的找到相应的资源,并有效减少查询引进的开销
3、 根据权利要求1所述的一种基于査询统计的P2P系统导向搜索方法,其特征 是该方法是一种通用与P2P网络的查询方法,它独立于底层覆盖网络,相当于一种 查询的增强方法,也就是说当SGT无法满足査询要求时,系统会自动启用底层的查 询方式,如无结构网络下的洪泛査询方法,结构化网络下的基于DHT的查询方法, 等等。这种增强方法的采用,可以进一步提高原有系统的査询成功率,降低查询时延, 有效缓解网络负载,也能一定程度上提高系统的健壮性、容错性。
4、 根据权利要求1所述的一种基于查询统计的P2P系统导向搜索方法,其特征 是在设计更新统计导线表的算法时,倾向于不增加过多的额外开销的前提下,尽量 使得SGT记录更多有用的信息,所以更新SGT时采用主动、被动两种方式。被动更 新是一种捎带更新方式(piggybacking),这时候完全不引进额外的开销。而主动更新 SGT时,可以对按照用户的潜在兴趣,有选择的替换结点信息,并且在主动更新的时 候,会主动通知目的结点利用自己的SGT更新它的SGT,这也是一种激励政策(分 享的资源越多,自己获得相关资源的可能性越大),另一方面,这种主动更新使得SGT 获得更远处相关结点的信息,扩大覆盖范围,是的SGT的使用更有效率。
5、 根据权利要求4所述的一种基于查询统计的P2P系统导向搜索方法,其特征 是SGT更新方式,对结点进行潜在的聚类,如果当前的SGT与本次査询相关性不 大,直接启用底层查询方法,假设通过某结点获得该资源,这时需要替换掉SGT最 早的查询的相关信息,计算相似度后发现两项的结点査询时很相似,于是合并两项的 结点信息;在未命中的情况下,使用底层查询方式,假设结点R、 S响应该请求,与 前一次类似,建立新的査询表项,将最早表项与最相似的查询合并。,也能一定程度上提高系统的健壮性、容错性。4.根据权利要求1所述的一种基于査询统计的P2P系统导向搜索方法 ,其特征是在设计更新统计导线表的算法时,倾向于不增加过多的额外开销的前提下,尽 量使得SGT记录更多有用的信息,所以更新SGT时采用主动、被动两种方式。被动更新是一种 捎带更新方式(piggybacking),这时候完全不引进额外的开销。而主动更新SGT时,可以 对按照用户的潜在兴趣,有选择的替换结点信息,并且在主动更新的时候,会主动通知目的 结点利用自己的SGT更新它的SGT,这也是一种激励政策(分享的资源越多,自己获得相关资 源的可能性越大),另一方面,这种主动更新使得SGT获得更远处相关结点的信息,扩大覆 盖范围,是的SGT的使用更有效率。5.根据权利要求4所述的一种基于査询统计的P2P系统导向搜索方法 ,其特征是SGT更新方式,对结点进行潜在的聚类,如果当前的SGT与本次査询相关性不大 ,直接启用底层査询方法,假设通过某结点获得该资源,这时需要替换掉SGT最早的査询的 相关信息,计算相似度后发现两项的结点査询时很相似,于是合并两项的结点信息;在未命 中的情况下,使用底层査询方式,假设结点R、 S响应该请求,与前一次类似,建立新的査询 表项,将最早表项与最相似的査询合并。
全文摘要
本发明公开了一种基于查询统计的P2P系统导向搜索方法,其步骤如下(1)建立统计导向表SGT。基于对历史查询统计和语义分析结果,建立双层结构的“统计导向表”。上层表项只保留最新查询的历史记录,按照查询的时间排序;下层表项保存响应本次查询或者响应过相似查询的结点信息和有利因子。(2)利用统计导向表查询文件。结点建立统计导向表后,按照本次查询与SGT历史查询的语义相关性大小,利用SGT内的信息进行查询;如SGT保存的历史记录与本次查询相关性不大,自动启用底层查询策略。(3)自适应的更新统计导向表。包括主动和被动更新两种方法,被动方式发生在结点转发查询请求后。
文档编号G06F17/30GK101685470SQ20091030228
公开日2010年3月31日 申请日期2009年5月14日 优先权日2009年5月14日
发明者于南南, 陈贵海 申请人:南京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1