大数据系统的数据搜索方法与流程

文档序号:16265542发布日期:2018-12-14 21:53阅读:410来源:国知局

本发明属于计算机和互联网领域,尤其涉及大数据领域,具体的,涉及一种大数据系统的数据搜索方法。



背景技术:

随着计算机和互联网技术的快速发展,我们处在了一个信息爆炸的时代,为了处理大量的信息,出现了大数据的概念。所谓大数据,是指无法在可承受的时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

由于数据的海量特性,人们仅仅凭一己之力很难对这些数据这些分析,但是在以云计算为代表的技术创新大幕的衬托下,这些原本很难收集和使用的数据开始容易被利用起来了,通过各行各业的不断创新,大数据逐步为人类创造更多的价值。

在大数据系统中,海量数据通常分布存储于系统的大量节点中,每个节点可以是一个数据存储服务器,一个云数据中心,或者一个用户客户端等等。这些节点不仅仅在地理上是分散的,而且常常是动态变化的。一方面,节点中存储的数据是在动态变化的,另一方面,节点可能随时加入或离开系统,其本身也是在动态变化的。为了维护这些动态变化的节点,现有技术中的一种常见方法是使用一台中心服务器,由这台中心服务器来管理各个节点,当需要在系统中搜索一份数据文件时,也向该中心服务器进行查询,从该中心服务器获取存储该数据文件的节点。

但是,这种依赖中心服务器的数据搜索方法具有很大的缺陷:第一,一旦该中心服务器出现故障,将导致整个系统崩溃,为此必须花费大量成本来建立一个冗余的容灾系统;第二,即使中心服务器不出现故障,大数据系统中大量的数据搜索请求也会给中心服务器带来极大的压力,同时会给中心服务器的网络带宽提出很高的要求,因此需要购买高性能的中心服务器或服务器集群,并且购买大量的网络带宽,这都需要很高的成本。



技术实现要素:

为了解决现有技术中的上述问题,本发明提出了如下技术方案:

一种大数据系统的数据搜索方法,该方法包括数据传播过程和数据搜索过程,其中,数据传播过程的具体步骤如下:

1)大数据系统中的每个节点定期向所有邻居节点发送自身数据的数据传播消息,该数据传播消息中包括节点自身的数据文件索引表、消息标识符和初始传播长度Lmax,其中Lmax是一个预先设置的数值;

2)当一个节点Y接收到一个数据传播消息时,其根据其中的消息标识符B检查是否已经收到过该数据传播消息,如果已经收到过该数据传播消息,则忽略该数据传播消息。如果没有收到过,则将该数据传播消息中携带的数据文件索引表T存储于该节点Y,或更新该节点Y中存储的旧数据文件索引表;

3)该节点Y检查该数据文件索引表T中的所有数据文件哈希值,判断其对应的数据文件是否已存储于节点Y中,如果已存储,则在该数据文件索引表T中删除相应的数据文件哈希值,从而形成一张新的数据文件索引表Tnew;

4)该节点Y获取该数据传播消息中的传播长度L,计算新传播长度Lnew=L-1;如果Lnew=0,则该节点终止该数据传播消息的继续传播;如果Lnew>0,则组装一个新的数据传播消息,该新的数据传播消息包括新的数据文件索引表Tnew、所述消息标识符B和新传播长度Lnew;

5)该节点Y获取当前所有的邻居节点,设其共有K个邻居节点,则该节点Y从中随机选取个邻居节点,再将所述新的数据传播消息发送给所选取的邻居节点。

所述数据搜索过程的具体步骤如下:

1)当一个节点N接收到对一个数据文件的搜索请求时,该搜索请求中携带了该数据文件的哈希值HF,该节点N在自身的数据文件索引表中查找HF,如果查找到,则搜索结束,否则继续后续步骤;

2)该节点N向所有邻居节点发送数据搜索消息,该数据搜索消息中包括该数据文件的哈希值HF、节点N的网络地址AddressN、初始搜索长度Smax,以及搜索消息标识符;其中Smax是一个预先设置的数值;

3)当一个节点X接收到数据搜索消息时,根据该数据搜索消息中的搜索消息标识符ID检查是否已经收到过该数据搜索消息,如果已经收到过,则忽略该数据搜索消息;否则继续后续步骤;

4)该节点X检查其存储的所有数据文件索引表,判断这些数据文件索引表中是否有HF,如果有,则将表中HF对应的节点地址发送给节点N,否则继续后续步骤;

5)该节点X计算新的搜索长度Snew=S-1,如果Snew=0,则该节点X不再继续传播该数据搜索消息;如果Snew>0,则该节点组装一个新的数据搜索消息,所述新的数据搜索消息包括该数据文件的哈希值HF、节点N的网络地址AddressN、新的搜索长度Snew,以及搜索消息标识符ID;

6)该节点X获取当前所有的邻居节点,假设其共有M个邻居节点,则该节点X从中随机选择个邻居节点,再将所述新的数据搜索消息发送给所选择的邻居节点。

其中,每个节点上存储的每份数据文件用一个二元组表示,即对于节点N上的数据文件D,其可以表示为<HD,AddressN>,其中HD表示该数据文件D的哈希值,AddressN表示存储该数据文件的节点N的网络地址。

其中,所述数据文件索引表由所述二元组组成,节点自身的数据文件索引表只包括节点自身所存储的数据文件的二元组。

进一步地,数据传播消息中的消息标识符是一个随机数。

进一步地,数据搜索消息中的消息标识符是一个随机数。

进一步地,初始搜索长度Smax与初始传播长度Lmax相同。

本发明的有益效果是:该种大数据系统的数据搜索方法,在由节点网络组成的大数据系统中,在有限的搜索时间内,提高了数据搜索的成功率,并且对网络和各个节点的资源占用较低,从而得到了一个高效且高成功率的数据搜索方法。该方法包括数据传播过程和数据搜索过程,该数据传播过程将节点的数据索引传播到一定范围的节点内,而数据搜索过程通过数据搜索消息在节点间的传播,搜索到需要的数据文件。与现有技术相比,该方法在搜索时间基本相同时,可以获得更高的数据搜索成功率,并且对网络和各个节点的资源占用较低。

【附图说明】

此处所说明的附图是用来提供对本发明的进一步理解,构成本申请的一部分,但并不构成对本发明的不当限定,在附图中:

图1是本发明的大数据系统的数据搜索方法的流程示意图。

图2是实施例中数据传播过程的流程示意图。

图3是实施例中数据搜索过程的流程示意图。

【具体实施方式】

下面将结合附图以及具体实施例来详细说明本发明,其中的示意性实施例以及说明仅用来解释本发明,但并不作为对本发明的不当限定。

为了在大数据系统中实现去中心化的数据搜索方法,本发明的大数据系统不设置中心服务器,而是采用自组织的节点网络的形式。所谓节点网络,指的是各个节点都只和若干个邻居节点相连,从而所有节点组织成了一张巨大的网络,该网络实际上是一张图,由每个节点和节点之间相连的边组成。节点可以随时加入和退出该网络,当一个节点上线时,它可以自动寻找若干邻居节点,与这些邻居节点连接,从而加入网络。寻找邻居节点的方法可以通过广播,或者通过多个节点列表服务器等等。具体的节点网络组织方法可以采用本领域中任一种公知方法,本发明对此不作限制。本发明关注的是,在节点网络的大数据系统的应用环境下,如何高效的搜索数据。

因为大数据系统中常常存在海量的节点,在数据搜索时,如果每个节点都搜索,搜索的效率就非常低,实际应用中也不太现实。因此大数据系统的数据搜索有两方面的要求:一方面搜索不能太慢,要提高搜索效率,另一方面需要保证数据搜索的成功率。这两方面的要求具有内在的矛盾性,因此需要一定的折衷,即在保证足够成功率的情况下,尽可能减少搜索时间。这就对搜索算法提出了很高的要求。本发明正是基于此提出的一种高效且高成功率的搜索方法。

在大数据环境下,每一份数据文件都存储于一个节点上,并且相同的数据文件可能存储在多个不同的节点上,因此每个节点的每份数据文件可以用一个二元组表示,即对于节点N上的数据文件D,其可以表示为<HD,AddressN>,其中HD表示该数据文件D的哈希值,AddressN表示存储该数据文件的节点N的网络地址。每个节点为其存储的每份数据文件都生成上述二元组,并保存在该节点上,形成一个数据文件的索引表。在增加或删除数据文件时,同样在该索引表中增加或删除相应的二元组。

参见图1,本发明数据搜索方法包括两个基本过程,数据传播过程和数据搜索过程。数据传播过程是第一步,因为在节点网络中没有中心服务器,每个节点需要向外传播其存储的数据索引,才能够让别人搜索到自己的数据,如图2,具体步骤如下:

1)每个节点定期向所有的邻居节点发送自身数据的数据传播消息,该数据传播消息中包括该节点自身的数据文件索引表、消息标识符和传播长度。即数据传播消息可表示为一个三元组:<数据文件索引表,消息标识符,传播长度>。每个消息初始的传播长度(也是最大传播长度)为Lmax,Lmax是一个预先设置的数值,可以根据具体情况设置。

举例而言,假设节点N有K个邻居节点,则节点N定期组装一个数据传播消息,该消息中包括节点N自身的数据文件索引表(即所有存储于节点N的数据文件的前述二元组所组成的索引表)、消息标识符和初始传播长度Lmax。所述消息标识符用来标识该消息,后续可以使用该标识符来识别该消息,所述消息标识符可以是节点N生成的一个随机数。所述传播长度用于控制该消息传播的范围,以免此类消息在网络上无限制传播导致的网络风暴。

2)当一个节点接收到一个来自邻居节点的数据传播消息时,(设该数据传播消息为<T,B,L>,其中T是数据文件索引表,B是消息标识符,L是传播长度),其根据其中的消息标识符检查是否已经收到过该消息,如果已经收到过,则忽略该消息;如果没收到过,则存储该消息中的数据文件索引表T。

据此,每个节点中实际存储了多个数据文件索引表,其中一个是其自身的数据文件索引表,另外还有多个其他节点的数据文件索引表。当节点接收到一个新的数据传播消息时,其可以获取该消息中的数据文件索引表,并且从该数据文件索引表中就可以获知该索引表对应的节点地址,如果节点中已经存储了该节点地址所对应的旧的数据文件索引表,则删除旧表,存储新表,否则就直接存储新表即可。节点通过存储接收到的消息标识符,可以在后续接收过程中辨认是否已经接收过该消息。

3)该节点检查该数据文件索引表T中的所有数据文件哈希值,以及自身数据文件索引表T0中的数据文件哈希值,如果该数据文件索引表T中有数据文件哈希值在自身数据文件索引表T0中存在,则在该数据文件索引表T中删除该数据文件哈希值,从而形成一张新的数据文件索引表Tnew。

这一步骤主要涉及数据文件的传播,其实际含义是:如果数据传播消息的索引的某个数据文件在该节点自身已经存储了,就阻止该索引在该节点之后继续传播。之所以这样,主要考虑到将来搜索数据搜索到该节点时,如果在该节点已经有数据文件,就没必要继续搜索,因此索引的继续传播就不再必要,删除后可以减小数据传播消息的大小,从而降低网络带宽的消耗。

4)该节点将该数据传播消息中的传播长度L减去一,得到新传播长度Lnew,即Lnew=L-1,如果Lnew=0,则说明该节点是该消息传播的最后一个节点,从而该节点不再继续传播该数据传播消息;如果Lnew>0,则该节点组装一个新的数据传播消息<Tnew,B,Lnew>。

这一步骤通过计算传播长度,来判断是否要继续传播该消息,传播长度实际上控制着消息传播的最大节点数目,每通过一个节点,传播长度都要减一,当减到零时,就不再传播,以此控制消息的传播范围。

5)该节点获取当前所有的邻居节点,假设其共有K个邻居节点,则该节点从中随机选择个邻居节点,再将所述新的数据传播消息发送给所选择的邻居节点。

一方面,步骤5是限制传播范围,降低网络带宽占用的另一措施,即:在消息传播过程中,并非是无限制的在邻居节点间传播,而是随着传播的延伸,以一定速率降低邻居节点的传播比例,本发明将该速率与传播长度相联系,以Lnew/Lmax的速率降低传播比例,使传播比例与传播长度相适应,这是在实践中所确定的一种优选的方式。另一方面,步骤5的这一措施是为了后续高效搜索数据做准备。

上述过程是数据搜索的准备过程,通过数据传播消息,将一个节点的数据文件索引传播到一定范围内的节点中。下面将详述具体的数据搜索过程,如图3,具体步骤如下:

1)节点N接收对一个数据文件F的搜索请求,该搜索请求中携带了该数据文件F的哈希值HF,节点N首先在自身的数据文件索引表中查找HF,如果查找到,则搜索结束,否则继续后续步骤。

节点网络的每一个节点都可以接受来自系统服务器或者来自用户客户端的搜索请求,并且,在大数据系统的海量数据里搜索某个数据,该数据的唯一标识只能是该数据的哈希值,从而以该数据的哈希值作为搜索目标,所以搜索请求里需要携带该数据的哈希值。哈希值的来源可以有多种方式,本发明对此不作限制。步骤1首先在该节点自身存储的数据文件里搜索,如果该节点自身就有该数据文件,则算法可以直接结束,否则该节点需要向其他节点搜索该数据文件。

2)节点N向所有邻居节点发送数据搜索消息,该数据搜索消息中包括该数据文件F的哈希值HF,节点N的网络地址AddressN,初始的搜索长度(也是最大搜索长度)Smax,以及搜索消息的标识符ID。

也就是说,该数据搜索消息可以用一个四元组表示:<数据文件的哈希值,初始节点的网络地址,搜索长度,搜索消息的标识符>。哈希值是搜索的目的,初始节点的网络地址是用于后续节点在搜索到结果后通知初始节点,搜索长度则是用于控制搜索的范围,避免搜索节点过多,耗时过长。优选的,Smax=Lmax。搜索消息的标识符是用来标识该数据搜索消息,其可以是节点N生成的一个随机数。

3)当一个节点X接收到数据搜索消息时,(设接收到的数据搜索消息为<HF,AddressN,S,ID>,其中S是搜索长度),其首先通过搜索消息标识符ID检查是否已经收到过该数据搜索消息,如果已经收到过,则忽略该消息。否则继续后续步骤。

4)该节点X检查其存储的所有数据文件索引表(包括节点X自身的数据文件索引表,以及节点X存储的其他节点的数据文件索引表),判断这些数据文件索引表中是否有HF,如果有,则将表中HF对应的节点地址发送给节点N,否则继续后续步骤。

节点X通过判断上述所有数据文件索引表,实际上搜索了多个节点,如果找到,就可以直接将存储该数据文件F的节点告知节点N。如果没找到,则需要继续传播该数据搜索消息。

5)该节点X计算新的搜索长度Snew=S-1,如果Snew=0,则说明该节点X是数据搜索消息传播的最后一个节点,从而该节点X不再继续传播该数据搜索消息;如果Snew>0,则该节点组装一个新的数据搜索消息<HF,AddressN,Snew,ID>。

6)该节点X获取当前所有的邻居节点,假设其共有M个邻居节点,则该节点X从中随机选择个邻居节点,再将所述新的数据搜索消息发送给所选择的邻居节点。

上述步骤5-6与数据传播的最后两步过程类似,其实质是对应的,之所以不将数据搜索消息传播到所有邻居节点,而是每次降低传播比例,一方面是为了降低网络带宽消耗,降低各个节点的资源占用,另一方面就是为了与数据传播过程匹配,两者通过类似的过程,配合提供了高效且资源占用少的数据搜索方法。数据搜索消息在节点之间不断传播,在有限的搜索时间和范围里,可以并行搜索大量节点的数据文件索引表。通过实际系统的测试和验证,与现有技术比较,本发明在搜索时间基本相同的情况下,提高了数据搜索的成功率。

以上所述仅是本发明的较佳实施方式,故凡依本发明专利申请范围所述的构造、特征及原理所做的等效变化或修饰,均包括于本发明专利申请范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1