[背景技术]
去重的技术很多,最常使用的哈希、Bloom这些去重技术都是把需要去重的内容处理后再进行一一匹配。这种集合处理方式可行,但在海量数据中就显得笨重,而且数量在一定程度的情况下,数据重复率就会加速升高,这样数据去重就没有任何意义。去重过程中还需要考虑已去重的数据如何保存,缓存加载等一系列问题。如果已去重的数据不能保存和缓存加载,则重新启动去重服务器都将是一个新的去重工作开始,对已经处理过的数据又是重复的工作,对数据的准确率无形中降低,这样的去重工作也是没有任何意义,如能保存和缓存加载,那么在启动去重服务时面对海量备份的缓存数据又要怎样加载?这些情况是判别一个去重方法的重要指标,一个好的去重方法最少有四个基本条件:效率高、资源消耗少、缓存输出和缓存加载。
由于互联网具有海量信息并且快速增长,提高搜索引擎的信息采集器的数据采集和更新速度有重要意义。
搜索引擎采集数据时,除了URL需要过滤去重,网页内容去重也同样重要,URL和网页内容都由各种符号组成的字符串,但是字符串长度不可能一致,有很大差异,使用数据库或缓存形式去进行匹配过滤去重,在数据不停增加中势必引起效率越来越低,资源也消耗得越来越多。
为了实现数据快速采集,避免重复采集相同的页面,需要记录已经发现的页面,采集中新发现一个页面,需要判断该页面的URL是否已发现的URL,若不是新发现的URL,则将其丢弃,否则将它放入待采集URL队列。URL检索方法的速度和所占用的内存空间的大小都很重要。如果URL检索方法的速度较慢,就会形成瓶颈,严重影响整个系统的采集速度和可扩展性。在不断增长的海量数据中,检索会因为数据量的越来越庞大,检索速度越来越慢,系统资源消耗也更多,特别在使用HASH这样的算法中,数据量的增长会使数据的碰撞(数据重复)加剧,导致数据误码率上升。数据的长度在效率和资源消耗中是不能忽视的因素,如果每一笔需要去重的数据都是原生数据,那对去重方法来说是致命的,因为没办法预测数据的长度。这时就得需要把数据转换为统一的数据形式,例如HASH,有不少去重方法使用HASH,但是因为碰撞(数据重复)率高,就会使用多种不同的HASH算法组合,把每一笔数据用HASH处理成多个进行去重过滤处理,这样碰撞(数据重复)率降低了,但是效率也跟着降低了,资源消耗也呈相应的几何级增长,而且同时也给已去重的缓存数据的保存和加载增加了难度。
[发明内容]
本发明要解决的技术问题是提供一种能够减少数据重复校验、效率高、资源消耗少的去重方法。
为了解决上述技术问题,本发明采用的技术方案是,一种基于多维点阵数据空间模型的去重方法,包括以下步骤:
101)加载本地缓存数据,根据配置文件所定制的模式建立多维点阵数据空间模型;
102)需要进行去重活动的数据转换为多维点阵数据空间模型所定制的数据格式,并将数据分割成数据点;
103)对转换好格式的数据逐个进行检索;
104)数据检索过程中,检索数据点即是定位数据点在数据模型所对应维面的坐标,检索数据点由数据第1位开始,逐位向下进行,若发现该数据点在数据模型中不存在,则在数据模型中刻画该数据点,同时标识不存在此数据;重复执行检索数据点的过程,直到最后一个数据点检索完成;
105)1个数据遍历数据点完成后,如该数据已标识过不存在,则输出缓存;
106)检索下一个数据,直至全部数据检索完毕。
以上所述的基于多维点阵数据空间模型的去重方法,多维点阵数据空间模型的维面是行和列相等的矩阵,格式化后数据的数据点由对应于所述行和列数字组成的坐标表示;所有格式化后数据的长度相等,多维点阵数据空间模型的维面数量与格式化后数据数据点的数量相同。
以上所述的基于多维点阵数据空间模型的去重方法,所述多维点阵数据空间模型的维面是行和列都等于16的矩阵,格式化后数据的数据点由两个0至F的16位数字组成的坐标表示,每个数据点二进制的长度限定为8的倍数。
以上所述的基于多维点阵数据空间模型的去重方法,数据在格式化过程中需要进行填充,填充后二进制数据的长度为512的整数倍,即N×512+448+64,其中,N为一个非负整数,可以是零;填充的方法如下,在原有数据信息的后面填充至少1个数个或更多的“0”,以满足数据长度等于N×512+448,然后在填充“0”的数据后面附加1个以64位二进制数表示的填充“0”以前的信息长度。
以上所述的基于多维点阵数据空间模型的去重方法,根据预设的时间和/或数据量对数据模型中刻画过的数据痕迹进行备份。
本发明基于多维点阵数据空间模型的去重方法能适合各类数据过滤去重活动,如网页采集时对URL进行去重过滤和网页内容指纹去重,这两种数据的格式完全不一样,而且数据长度差别也很大,但经过数据格式转换后,同一个多维点阵数据空间模型中,可以处理不同的数据去重活动,数据长度差异问题引起的资源消耗严重也得到了解决,而且去重效率高,具有工程应用价值。
[具体实施方式]
本发明的目的是这样实现的,包括步骤:
①将原始数据格式化为符合多维点阵数据空间模型的数据形式,格式化后的数据格式由0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A,B, C, D, E, F这些数字组成,每个数据点二进制的长度限定为8的倍数。因为原始数据是由各种符号组成的字符串,但是字符串长度不可能一致,有很大差异,使用数据库或缓存形式去进行匹配过滤去重,在数据不停增加中势必引起效率越来越低,资源也消耗得越来越多,数据的字符串长度在效率和资源消耗中是相当重要的,如果每笔需要去重的数据都是原生数据,那对去重方法来说是致命的,这时就需要把数据转换为统一的格式,本发明使用MD5算法进行转换,(Message Digest Algorithm MD5中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。MD5算法的文件号为RFC 1321(R.Rivest,MIT Laboratory forComputer Science and RSA Data Security Inc. April 1992)。
在MD5算法中,首先需要对信息进行填充,使二进制数据的位长对512求余的结果等于448。因此,信息的位长(Bits Length)扩展至N×512+448,N为一个非负整数,N可以是零。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后,在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,信息的位长=N×512+448+64=(N+1)×512,即长度恰好是512的整数倍。这样做的目的是为满足后面处理中对信息长度的要求。
②将格式化后的数据进行分割成数据点集合,如“54645678”最终形式是“5|4|6|4|5|6|7|8”。数据在多维数据空间中是以数据痕迹来表示,而数据痕迹就是一条数据线,数据线实际就是由n个数据点组成,那么多维数据空间也就是一个n个维面构成的多维点阵数据空间模型,图1所示的就是数据痕迹在多维数据空间中的表现。
③不管数据空间由多少个维面组成,每一个数据在一个维面中都只有一个对应的数据点,在现实世界角度中,本发明定义当前所处的维面权当是第一维面层,对于已分割的数据来说这第一维面层是初始维面,而数据点集合中第一个数据点在初始维面检索对应的坐标位置,这检索坐标过程中,在检索到坐标的同时就在这维面上刻画了这个数据点。
④同样的过程,余下的数据点按顺序去检索多维点阵数据空间模型所对应的坐标位置,直到最后一个数据点处理完成;
⑤在多维点阵数据空间模型检索数据点坐标时,所检索过的数据点串连起来则形成当前数据的数据痕迹,这样一个新的数据就已经刻画到多维点阵数据空间模型中,图2所示的即完整数据在多维数据空间中数据痕迹的表现。
⑥数据检索工作的过程中,任意一个数据都经过这样的刻画,与其他存在的数据没有任何关系,也不会因为其他数据的存在而影响工作效率,几个数据点的检索所需花费时间是微秒级,一个数据在1万个数据和1000万个中检索的过程和效率是一样的。因为在多维点阵数据空间模型中数据点是可共享的,所需消耗的资源会根据数据量的增多而逐渐稳定。
⑦根据多维点阵数据空间模型中数据痕迹的数量分布,当达到一定量时,进行数据痕迹备份,这过程是单独进行,不影响数据过滤器(多维点阵数据空间模型)的工作,备份过程的调节参数包括:数据量大小和/或时间设置。
本发明利用多维点阵数据空间模型进行数据检索和去重的实现流程如图3所示,
①去重服务启动时,首先加载本地缓存数据,缓存数据加载完成前,去重活动不能进行处理,服务接口为关闭状态;
②缓存数据加载完成的同时,多维点阵数据空间模型也根据配置文件所定制的模式也建立完成,此时去重服务可以正常工作,服务接口为打开状态;
③任何需要进行去重活动的数据都要转换为多维点阵数据空间模型所定制的数据格式,经过数据转换后,对数据进行分割。
④检索数据点实际是定位数据点所对应维面的坐标,维面中的每个坐标点都有一个标识,若某坐标点已发生过检索处理,该坐标点已刻画过;
⑤遍历数据点由第一位开始,若数据点不存在则刻画数据点,同时标识不存在当前该数据,重复执行该过程,直到最后一个数据点检索完成;
⑥遍历数据点完成后,数据整理有两个活动,一是根椐标识返回相应的检索结果,二是输出缓存,只有当标识为不存在情况下才输出缓存,这两个活动异步进行,直至检索活动结束。
本发明与现有技术相比具有如下优点:
本发明通过对多维点阵数据空间模型的数据进行预处理,数据格式的统一,而且数据长度一致,假设长度为8,进行数据检索时,数据分割成各个数据点,形成数据点集合,则集合的大小为8,每一笔的数据检索都是检索8次数据点的坐标,不管多维点阵数据空间模型中已存在多少笔数据,它的处理时间都是固定的,在一台配置为CPU i5 2.6GHz,内存2G的普通PC机上的处理速度是200微秒,检索效率相对于排查式检索方式大为提高。
本发明将原生数据通过数据格式转换后,再进行分割成数据点集合,假设数据格式长度为8,那么多维点阵数据空间模型有8个维面,每一个维面中任一数据点都有,且只有一个坐标,则这个数据点是可共享的,不论这一个数据点经过多少次检索,也都只会刻画一次,这也再次证明了检索时间不会改变,效率也不会因为数据量的大小而受影响,而且数据点共享的解决方案中更解决了去重工程中资源消耗高的问题。
本发明能适合各类数据过滤去重活动,如网页采集时对URL进行去重过滤和网页内容指纹去重,这两种数据的格式完全不一样,而且数据长度差别也很大,但经过数据格式转换后,同一个多维点阵数据空间模型中,可以处理不同的数据去重活动,数据长度差异问题引起的资源消耗严重也得到了解决,具有工程应用价值。