一种界标窗口下域名数据重复检测快速索引方法【
技术领域:
】[0001]本发明涉及一种海量域名数据的重复检测快速索引方法和系统,特别是涉及一种在界标窗口数据流模型下对海量域名数据进行重复检测的索引方法,属于大数据计算领域。【
背景技术:
】[0002]随着移动互联网和Web2.0的发展,全球数据量正在惊人的增长:2008年全球产生的数据量为0.49ZB(1ZB=1021字节),2009年为0.8ZB,2010年为1.2ZB,2011年高达1.82ZB。IDC预计到2020年,全人类会产生超过40ZB的数据。高速、海量的网络数据中却包含着错综复杂的信息,其中可能有各种业务数据流,如IP业务流、用户点击流、用户查询流、网页服务器日志等;另外,其中也很有可能包含着各种安全事件,如恶意软件骚扰、网络攻击等。安全事件对网络的安全构成了极大的威胁。域名数据作为网络信息传播的重要媒介,对于网络安全事件的跟踪,确定其发生过程、参与对象及影响有重要意义。[0003]在网络流数据实时处理中,重复数据检测是一个非常重要的预处理环节。一方面,可以通过对检测出的重复数据进行重点分析,为后续风险评估、入侵检测等提供应用支持;另一方面,可以通过重复数据检测技术积累相关知识库,仅对首次发现的网络行为进行记录,为后续分析提供基础数据支撑。[0004]在流数据计算场景下,根据流数据计算窗口边界的移动方式,目前主要的计算窗口分为以下几种类型。第一种是固定窗口模型,即计算窗口的左右两端均固定,固定窗口模型对于体现数据的时效性帮助不大;第二种是界标窗口模型,即窗口左端固定,右端向前移动,界标窗口包含了从特别的时间点至当前时刻之间出现的数据项,如果在数据流出现周期内设置多个界标,就相当于把数据流划分成若干独立的小数据流进行分别考察;第三种是跳跃窗口模型,即窗口左端向前跳跃前进,右端滑动前进,跳跃窗口模型比界标窗口模型更能反馈数据流的连续变化过程,但是由于窗口末端批量淘汰元素,因此窗口内有效元素数量有明显的波动过程;第四种是滑动窗口模型,即窗口左右两端同时向前滑动,滑动窗口在插入新数据项的同时删除过期数据项,被视为数据流监控和分析的理想模型。[0005]在界标窗口模型下,进行重复数据检测的主要索引方法目前主要有二种。[0006]第一种是稳定型布隆过滤器(StableBloomFilter)索引方法。该方法能够支持弹性记录容量,有效解决标准型布隆过滤器因有效位被填满导致误差率激增的情况。稳定型布隆过滤器由m个位宽为d的计数器单元构成,每个计数器的表数范围为O到max=2d-l,max可是视为稳定型布隆过滤器的理想容量。当插入新元素时,首先随机选择P个计数器单元,并对其非零计数器减1,然后计算新元素的k个哈希坐标,将对应计数器单元设置为max;当查询元素X时,如果X对应的k个计数器单元均为非零值,则认为x为窗口内元素。然而,稳定性布隆过滤器存在以下问题:首先,其核心数据结构参数值的设定与数据流的密度有较大关系,如果d值设定较大,数据流密度较小,则存在极大的空间浪费,该算法可能并不适用;第二是如果界标窗口在窗口前进的过程中会遇到多个界标值,每个独立界标子窗口的查询复杂度会线性增加,这对于维护较大的界标窗口会存在一定的查询延时。[0007]第二种方法是哈希(HASH)索引方法。哈希索引方法是一种非常便捷高效的大数据索引机制,其具备二个非常重要的优点:第一是查询复杂度较低,在理想情况下,其查询的复杂度为0(1);第二是其实现简单,通过一个或一组哈希函数,就可以满足绝大多数数据重复检测的场景。然而,哈希索引方法也存在其缺点:首先,哈希一种不确定性算法,必然会存在数据项哈希冲突,冲突处理方法的优劣对于数据索引有着决定性的作用;其次,哈希算法对于内存空间的使用没有压缩,对于域名这种字串重叠较多的场景考虑不多。[0008]综上所述,快速索引方法对于界标窗口内的重复数据检测问题非常重要。在快速索引方法中,降低索引维护的空间复杂度,提升元素重复数据检测效率,提升索引结构对于网络安全域名数据的适用性是索引结构设计中非常重要的问题。【
发明内容】[0009]本发明的主要目的是提供在界标窗口下进行域名数据重复检测的快速索引方法及系统,能够降低索引维护的空间,提升元素重复检测的效率,并能够扩展到分布式场景下,有效解决网络监控应用中域名数据重复检测的问题。[0010]本发明的内容主要包括以下几个方面。[0011]第一,在数据索引方法上,本发明融合了稳定性布隆过滤器(StableBloomFilter)和字典树(Trie树)的索引策略,针对网络数据流自适应调整索引策略,在数据较为密集时采用稳定性布隆过滤器,在数据相对稀疏时采用字典树索引策略。[0012]第二,针对数据流界标窗口内的多个界标子窗口,本发明针对系统中维护的多个稳定性布隆过滤器,采用相同的设计容量并共享同一组k个哈希函数,这样能够有效的将元素查询的时间复杂度由0(kn)减少为0(k);[0013]第三,本发明针对域名数据进行了有效的预处理手段,通过域名数据翻转的手段对数据进行统一格式化处理。以一个常见的域名为例说明,baidu网址是由二部分组成,标号“baidu”是这个域名的主体,而最后的标号“com”则是该域名的后缀,代表的这是一个com国际域名,是顶级域名。通过将域名数据进行点分翻转,形成以顶级域起始的点分字符串,这样翻转后的数据前缀重叠率会大大提升,非常有利于后续数据的精确及前缀匹配操作。[0014]第四,本发明可以扩展到分布式场景下并行执行,采用一致性哈希的方式将域名数据分发到多个计算节点并行计算。[0015]与现有技术相比,本发明的创新点和有益效果如下:[0016]I)在大数据快速索引方面,提出了一种融合了稳定性布隆过滤器(StableBloomFilter)和字典树的索引策略,并针对界标窗口内的稳定性布隆过滤器共享同一组k个哈希函数,减低索引维护的空间复杂度,并提升了元素重复检测的效率,降低了误判率;[0017]2)在域名数据重复检测的适配方面,本发明提出将域名数据翻转,形成重叠前缀字符串比率较高的数据集,有利于后续字典树的快速匹配和存储容量缩减;[0018]3)本发明可以便利的扩展到分布式计算环境下,便于重复数据检测计算性能线性提升。【附图说明】[0019]图1为界标窗口板型不意图。[0020]图2为重复数据检测快速索引结构图。[0021]图3为多界标子窗口场景下哈希函数融合示意图。[0022]图4为单一计算节点域名数据重复检测流程图。[0023]图5为不同数据集密度下不同的索引结构内存空间效率的差异性示意图。【具体实施方式】[0024]为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和附图,对本发明做进一步说明。[0025]图1为界标窗口丰旲型不意图。界标窗口左端固定,右端向如移动,界标窗口包含了从特别的时间点至当前时刻之间出现的数据项,如果在数据流出现周期内设置多个子界标,就相当于把数据流划分成若干独立的小数据流进行分别考察。如图所示,当前界标窗口为时间点start到当前时刻内出现的数据项;界标窗口被子界标分成了多个子窗口,包括子窗口1、子窗口i+Ι、子窗口i+2。[0026]图2描述了重复数据检测快速索引结构示意图。如图所示,界标子窗口i的核心数据结构实现为稳定性布隆过滤器,其由m个位宽为d的计数器单元构成,每个计数器的表数范围为O到max=当前第1页1 2