一种分布式海量数据排重方法及系统技术方案

技术编号:7025386 阅读:481 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供的分布式海量数据排重方法中,预先将数据库中所有数据的HASH值分为若干个HASH值集合并存储到至少两个节点服务器内存中,记录每个所述HASH值集合及其存放的节点服务器地址之间的映射关系;当接收到请求判断当前数据数据是否已存在的判断请求时,先计算当前数据的HASH值,根据预先记录的HASH值集合和节点服务器地址之间的映射关系确定当前数据的HASH值及其应该所处的HASH值集合所对应的节点服务器地址;随后比对判断当前数据的FASH值应该所处的HASH值集合所对应的节点服务器中是否有当前数据的HASH值,若是,则返回“当前数据已存在”的执行结果并结束流程;否则返回“当前数据不存在”的执行结果,并更新当前数据的FASH值应该所处的HASH值集合。

【技术实现步骤摘要】

本专利技术涉及信息处理
,尤其涉及一种分布式海量数据排重方法及系统
技术介绍
随着信息技术的不断发展,各领域的信息存储量也在不断增大,因此在好多领域中都需要对大量的数据进行排查重复数据的工作。例如,在搜索引擎中需要判断哪些网页在系统中已经有收录,或者在电信行业中,需要对上亿条电信话单进行排重工作,以免重复收费等等。以网络信息技术为例,在网络爬虫里,判断一个网址是否被访问过,最常用的方法就是通过数据库来排重,现有的数据库排重方法是根据网址URL计算相应的HASH值,再将计算出的HASH值存于数据库中,存储的同时将此HASH值的字段设置索引或者主键,于是当网络爬虫每抓取一个URL地址前,搜索数据库中是否有此URL地址相应的HASH值即可判断此URL地址在该数据库中是否已经存储过。这种书库排重方法虽然方便,但是效率较低,并且会造成数据库服务器压力过大。为解决上述数据库排重方法效率低的问题,现有的另一种方法就是用内存进行排重。内存排重方法是预先将已访问过的URL地址的HASH值列表以哈希表的方式在服务器内存中存储,则当网络爬虫每抓取一个URL地址前,可根据此URL地址的HASH值判断此URL 地址的HASH值在服务器内存中的哈希表中是否已经存在。此方法比数据库排重方法的数据排重效率高很多,但是当需要排重的数据量比较大时,就需要更大的内存存储空间,因为用哈希表每存储一亿个URL地址信息,大概需要2G的内存空间,存贮几十亿个URL地址可能需要上百GB的内存,这么大的内存需求量在一般的服务器上是无法实现的。综上所述,需要一种不仅具有较高的数据排重效率,还能节省单台服务器内存使用量的数据排重方法及系统。
技术实现思路
本专利技术的目的在于提供一种分布式海量数据排重方法及系统以解决现有的数据排重技术效率低或对服务器内存需求量过大的问题。本专利技术提供的分布式海量数据排重方法及系统能够高效地进行海量数据的排重。为了实现上述目的,本专利技术提供一种分布式海量数据排重方法,执行前预先将数据库中所有数据的哈希HASH值分为若干个HASH值集合并存储到至少两个节点服务器内存中,记录每个所述HASH值集合和存放该HASH值集合的节点服务器地址之间的映射关系;所述分布式海量数据排重方法包括以下步骤步骤一接收用户输入的当前数据并发出“判断当前数据是否已存在于数据库中” 的数据判断请求;步骤二 接受所述数据判断请求并计算所述当前数据的HASH值;步骤三根据所述预先记录的所述HASH值集合和节点服务器地址之间的映射关系,确定所述当前数据的HASH值及其应该所处的HASH值集合所对应的节点服务器地址;步骤四比对判断所述当前数据的FASH值应该所处的HASH值集合所对应的节点服务器中是否有当前数据的HASH值,若是,则滤去所述当前数据,同时返回“当前数据已存在”的数据判断请求执行结果,结束流程;否则,继续执行步骤五;步骤五返回“当前数据不存在”的数据判断请求执行结果,并请求更新所述当前数据的FASH值应该所处的HASH值集合;步骤六接受所述更新请求,将所述当前数据的HASH值插入至所述当前数据的 FASH值应该所处的HASH值集合中,同时将所述当前数据的HASH值插入至所述数据库中,结束流程。所述预先将数据库中所有数据的哈希HASH值分为若干个HASH值集合并存储到至少两个节点服务器内存中,包括以HASH值的起始16进制字符为划分依据,将所述数据库中所有数据的HASH值平分成2n个HASH值集合;将所述2n个HASH值集合随机分为M份后分别存入M个节点服务器的内存中;其中,所述η为自然数,所述M为已有节点服务器的数量,M取值为大于等于2的正整数。当所述2η能被所述M整除时,将所述2η个HASH值集合随机平分为M等份后分别存入M个节点服务器的内存中。当所述2n不能被所述M整除时,将所述2n个HASH值集合随机分为M份后分别存入M个节点服务器的内存中,其中,所述Μ个节点服务器中有m个节点服务器的内存中分别存储了(N2+N1)个HASH值集合,有(M-Nl)个节点服务器的内存中分别存储了 N2个HASH 值集合,所述m为2n除以M所得的余数,所述N2为2n除以M所得的商。上述方法中,每增加一个所述节点服务器,从所述每个已有节点服务器的内存中转移规定数量的HASH值集合至所述增加的节点服务器的内存中存储,并更新各节点服务器和各HASH值集合之间的映射关系记录。本专利技术还提供一种分布式海量数据排重系统,包括初始化模块、系统排重接口模块、分布式服务器节点控制模块、分布式服务器节点应用接口模块、数据排重比对模块、排重集合更新模块、数据库和至少两个节点服务器;所述初始化模块根据所述分布式服务器节点应用接口模块发出的初始化数据请求,预先将所述数据库中所有数据的哈希HASH值分为若干个HASH值集合并存储到所述至少两个节点服务器的内存中,并通知所述分布式服务器节点控制模块预先记录每个所述HASH值集合和存放该HASH值集合的节点服务器地址之间的映射关系;所述系统排重接口模块用于接收用户输入的当前数据并发出“判断当前数据是否已存在于数据库中”的数据判断请求,向用户返回该数据判断请求的执行结果; 所述分布式服务器节点控制模块用于记录所述数据库中的每个HASH值集合和存放该HASH 值集合的节点服务器地址之间的映射关系;当收到所述系统排重接口模块提出的所述数据判断请求时,所述分布式服务器节点控制模块计算所述当前数据的FASH值,并根据所述预先记录的HASH值集合和节点服务器的地址之间的映射关系确定所述当前数据的HASH值及其应该所处的HASH值集合所对应的节点服务器地址,将所述数据判断请求、当前数据的 HASH值及其应该所处的HASH值集合所对应的节点服务器地址发送给所述分布式服务器节点应用接口模块;所述分布式服务器节点应用接口模块用于接受所述数据判断请求,向所述数据排重比对模块发送FASH值比对请求、所述当前数据的FASH值及其应该所处的HASH值集合所对应的节点服务器地址;所述数据排重比对模块接受所述FASH值比对请求,比对判断所述当前数据的FASH值是否已存在当前指明地址的节点服务器内存的相应HASH值集合中;若是,则顺序通过所述分布式服务器节点应用接口模块和所述分布式服务器节点控制模块向所述系统排重接口模块返回“当前数据已存在”的所述数据判断请求的执行结果; 否则,顺序通过所述分布式服务器节点应用接口模块和所述分布式服务器节点控制模块向所述系统排重接口模块返回“当前数据不存在”的所述数据判断请求的执行结果,同时向所述排重集合更新模块发出HASH值集合更新请求;所述排重集合更新模块用于接受所述 FASH值集合更新请求,将所述当前数据的HASH值插入至所述当前指明地址的节点服务器内存的相应HASH值集合中,同时将该HASH值插入至所述数据库中。所述初始化模块根据所述分布式服务器节点应用接口模块发出的初始化数据请求,预先读取所述数据库中的所有HASH值,并以HASH值的起始16进制字符为划分依据,将所述数据库中的所有HASH值分成2n个HASH值集合,并将所述2n个HASH值集合随机分成 M份后分别存入M个节点服务器的内存中;其中,η为自然数,所述M为已有节点服本文档来自技高网
...

【技术保护点】
1.一种分布式海量数据排重方法,其特征在于,预先将数据库中所有数据的哈希HASH值分为若干个HASH值集合并存储到至少两个节点服务器内存中,记录每个所述HASH值集合和存放该HASH值集合的节点服务器地址之间的映射关系;所述分布式海量数据排重方法包括以下步骤:步骤一:接收用户输入的当前数据并发出“判断当前数据是否已存在于数据库中”的数据判断请求;步骤二:接受所述数据判断请求并计算所述当前数据的HASH值;步骤三:根据所述预先记录的所述HASH值集合和节点服务器地址之间的映射关系,确定所述当前数据的HASH值及其应该所处的HASH值集合所对应的节点服务器地址;步骤四:比对判断所述当前数据的FASH值应该所处的HASH值集合所对应的节点服务器中是否有当前数据的HASH值,若是,则滤去所述当前数据,同时返回“当前数据已存在”的数据判断请求执行结果,结束流程;否则,继续执行步骤五;步骤五:返回“当前数据不存在”的数据判断请求执行结果,并请求更新所述当前数据的FASH值应该所处的HASH值集合;步骤六:接受所述更新请求,将所述当前数据的HASH值插入至所述当前数据的FASH值应该所处的HASH值集合中,同时将所述当前数据的HASH值插入至所述数据库中,结束流程。...

【技术特征摘要】

【专利技术属性】
技术研发人员:陈志飞罗佳栾江霞
申请(专利权)人:厦门市美亚柏科信息股份有限公司
类型:发明
国别省市:92

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1