一种细粒度自适应的数据频率测量方法、查询方法及系统

文档序号:37644669发布日期:2024-04-18 18:10阅读:21来源:国知局
一种细粒度自适应的数据频率测量方法、查询方法及系统

本发明涉及数据处理,特别涉及一种细粒度自适应的数据频率测量方法、查询方法及系统。


背景技术:

1、数据频率估计是各种应用中普遍存在的方案,包括点击流、异常检测和网络监控。在数据流中,数据频率指的是数据出现的次数。许多应用程序对一些与频率相关的测量任务感兴趣,如数据频率估计,heavy hitter检测,和heavy change检测。具体来说,heavyhitter是指出现频率大于一定阈值的数据,heavy change是指在两个相邻时间窗口中频率变化超过一定阈值的数据。

2、记录数据的频率并非易事,所面临的挑战是双重的。首先,使处理数据的速度跟上高速数据流抵达测试节点的速度是困难的。与静态的数据集不同,数据流中的每个数据只出现一次。因此,每个数据至少在其到达时就需要尽快被处理,以避免丢失信息。其次,由于片上内存(通常小于8.25mb)的限制,以键值对的形式存储每个数据是不切实际的。例如,在网络监控中,用源ip地址标识数据,跟踪所有数据的标识符和对应的数据包数量需要32gib,这远远超过了片上内存的存储容量。

3、为了解决上述问题,sketch是当前被广泛采用的一种方法,因为它可以用一个紧凑的数据结构来统计大量数据的频率情况,并且在可证明的误差范围内实现低的内存和时间开销。然而,在估计低频数据时,传统的sketch总是无法在真实数据流中表现出良好的测量精度。真实数据流的频率分布是高度偏斜的,具体来说,大多数数据出现频率极低(称为冷数据),少量数据出现频率极高(称为热数据),而一些数据出现频率介于前两者频率之间(称为温数据)。由于传统的sketch利用哈希函数在共享计数器上统计所有数据的频率,因此在冷数据和非冷数据之间存在严重的哈希碰撞,这给冷数据的频率估计带来了很大的误差。例如,由于与温数据的哈希碰撞,一个真实频率为1的冷数据被估计为100,引入一个较大的相对误差99,而冷数据和热数据之间的哈希碰撞会导致更大的估计误差。

4、准确的冷数据测量很重要,其目的是将冷数据准确地报告为冷数据。当与热数据发生哈希冲突时,冷数据会被误报为热数据,导致冷数据的估计准确度较低。此外,将冷数据误报为热数据不利于热数据检测,因为许多应用更关注热数据并对其采取特殊行动,例如购物平台中的热门产品和网络中的syn洪水攻击。

5、在传统的sketch中,所有计数器被分配相同的比特位数,并被所有数据共享。由于哈希碰撞,传统的sketch无法对呈现偏斜分布的真实数据流中的冷数据频率估计保持预期的准确性。为了减少冷数据和热数据之间的哈希碰撞,针对这个问题的现有技术可以分为以下两类:优先过滤热数据和优先过滤冷数据。

6、优先过滤热数据:这类方法通常在传统的sketch的上一层设置一个哈希表结构的过滤器以优先过滤热数据。augmented sketch,elastic sketch和heavyguardian均采用这样的设计。这些方法会设置特定的规则,以确定哪些数据有更大的可能变成热数据,从而将这些热数据记录在过滤器中。这些热数据通常以键值对的形式记录下来。这类方法可以有效过滤热数据,从而减轻与冷数据的哈希碰撞,并提高对冷数据频率估计的准确性。然而,由于这类方法只过滤热数据,温数据不可避免地会进入下一层的sketch结构,这将对冷数据的准确性产生有害的影响。

7、优先过滤冷数据:这类方法通常在传统的sketch结构之上采用了额外的过滤器以过滤冷数据。很多工作都采用此设计思路,如cold filter,loglog filter和ladderfilter。这些工作并没有完全实现提高冷数据估计精度的目标。对于cold filter和loglogfilter,过滤器会记录所有冷数据的信息。当要测量的冷数据的数量超过过滤器的容量时,过滤器会丧失有效过滤冷数据的能力。与此相反,ladder filter只会记录部分冷数据的信息,并丢弃一部分被认为不重要的冷数据。显然,这种方法扩展了过滤器的容量,但是会永远丢失部分冷数据的信息。综上所述,当内存有限时,以上过滤器的设计不能在保留所有冷数据信息的同时,维持分离冷数据和非冷数据的效果。


技术实现思路

1、本发明提供了一种细粒度自适应的数据频率测量方法、查询方法及系统,采用频率导向的处理方式及自适应缩放策略动态适应数据流,实现有效分离冷数据和非冷数据,提升对冷数据的测量准确性。

2、本发明采用如下技术方案:

3、第一方面,一种细粒度自适应的数据频率测量方法,包括:

4、初始化步骤,将热部分、冷部分和温部分的计数器均置为0;

5、热部分处理步骤,接收待存储数据,基于哈希表捕获热数据;根据热部分的计数器中记录的数据频率,判断将数据存储至热部分还是冷部分,如果是热部分,进行数据存储及更新计数器中的数据频率计数字段和标志字段;否则,则进入冷部分处理步骤;

6、冷部分处理步骤,接收热部分处理步骤输出的待存储数据,使用自适应缩放策略来确定冷数据的频率区间;根据冷部分的计数器的记录值判断将数据存储至冷部分还是温部分,如果是冷部分,进行数据存储及更新计数器中的记录值字段;否则,则进入温部分处理步骤;

7、温部分处理步骤,接收冷部分处理步骤输出的待存储数据,使用sketch算法记录温数据。

8、优选的,所述热部分由dh个计数器组组成,dh个计数器组与哈希函数q(.)关联;每个计数器组包含wh计数器;每个计数器组中的最后一个计数器记录了该计数器组未记录在计数器中的数据的频率val-;每个计数器组中的其余计数器均包括数据标识符字段key、计数字段val+和标志字段flag,val+表示属于数据流中数据的频率,flag指示该数据是否曾经被驱逐到冷部分;冷部分由l1和l2组成,分别有w1和w2个计数器,并分别与k1个哈希函数h(.)和k2个哈希函数g(.)关联;l1中的每个计数器都有δ1比特,其计数阈值为t1;l2中的每个计数器都有δ2比特,其计数阈值为t2;

9、所述计数阈值t1和计数阈值t2表示如下:

10、

11、

12、优选的,所述热部分处理步骤,具体包括:

13、当数据<e,1>到达时,对数据的标识符e进行哈希以确定其在热部分的第q(e)个计数器组内;遍历这个计数器组,查看数据是否存储在热部分,如下:

14、(a)如果e已存在第q(e)个计数器组内,直接更新对应存储的计数器的字段val+;

15、(b)如果e没有存在第q(e)个计数器组内,找到计数器组中val+最小的计数器cmin,判断cmin的val+数,如果cmin的val+超过λ×val-,则将e交给冷部分处理;否则,用e替换cmin中记录的数据的标识符,并将原来cmin中记录的数据信息驱逐到冷部分,并将cmin中的字段flag置为1,字段key置为e,字段val+置为1;其中,λ表示倍数。

16、优选的,所述冷部分处理步骤,具体包括:

17、用哈希函数h(.)将数据的标识符e哈希到l1层上的k1个计数器,如果k1个计数器的值都没有达到阈值t1,则更新k1个计数器中记录值最小的计数器,同时计算l1层中记录值超过1的计数器数量;如果数量超过阈值tx,则调整采样概率p为以及将所有计数器值减半;如果k1个计数器达到动态阈值t1,e进入l2层进行更新;

18、用哈希函数g(.)将e哈希到l2层上的k2个计数器,如果k2个计数器的值都没有达到阈值t2,则更新k2个计数器中记录值最小的计数器;反之,将e交给温部分处理。

19、第二方面,一种细粒度自适应的数据频率查询方法,基于所述的细粒度自适应的数据频率测量方法,包括:

20、热部分查询步骤,接收查询数据的标识符e,通过哈希函数确定其在热部分的第q(e)个计数器组内;然后,遍历这个计数器组,查看该数据是否存储在热部分,如果e已存在第q(e)个计数器组内,热部分返回字段val+记录的数值,如果flag为1,则进入冷部分查询驱逐到后面部分的频率信息;如果e没有存在第q(e)个计数器组内,进入到冷部分进行查询;

21、冷部分查询步骤,用哈希函数h(.)将e哈希到l1层上的k1个计数器,如果k1个计数器的值都没有达到动态阈值t1,假设k1个计数器中的最小值为v1,则冷部分返回估计值如果k1个计数器的值都达到动态阈值t1,则用哈希函数g(.)将e哈希到l2层上的k2个计数器,如果k2个计数器的值都没有达到阈值t2,假设k2个计数器中的最小值为v2,则冷部分返回估计值否则,到温部分进行查询;

22、温部分查询步骤,在温部分中进行e查询,并返回记录数值。

23、第三方面,一种细粒度自适应的数据频率测量系统,包括:

24、初始化模块,用于将热部分、冷部分和温部分的计数器均置为0;

25、热部分处理模块,用于接收待存储数据,基于哈希表捕获热数据;根据热部分的计数器中记录的数据频率,判断将数据存储至热部分还是冷部分,如果是热部分,进行数据存储及更新计数器中的数据频率计数字段和标志字段;否则,则进入冷部分处理步骤;

26、冷部分处理模块,用于接收热部分处理模块输出的待存储数据,使用自适应缩放策略来确定冷数据的频率区间;根据冷部分的计数器的记录值判断将数据存储至冷部分还是温部分,如果是冷部分,进行数据存储及更新计数器中的记录值字段;否则,则进入温部分处理步骤;

27、温部分处理模块,用于接收冷部分处理模块输出的待存储数据,使用sketch算法记录温数据。

28、第四方面,一种细粒度自适应的数据频率查询系统,基所述的细粒度自适应的数据频率测量系统,包括:

29、热部分查询模块,用于接收查询数据的标识符e,通过哈希函数确定其在热部分的第q(e)个计数器组内;然后,遍历这个计数器组,查看该数据是否存储在热部分,如果e已存在第q(e)个计数器组内,热部分返回字段val+记录的数值,如果flag为1,则进入冷部分查询驱逐到后面部分的频率信息;如果e没有存在第q(e)个计数器组内,进入到冷部分进行查询;

30、冷部分查询模块,用于用哈希函数h(.)将e哈希到l1层上的k1个计数器,如果k1个计数器的值都没有达到动态阈值t1,假设k1个计数器中的最小值为v1,则冷部分返回估计值如果k1个计数器的值都达到动态阈值t1,则用哈希函数g(.)将e哈希到l2层上的k2个计数器,如果k2个计数器的值都没有达到阈值t2,假设k2个计数器中的最小值为v2,则冷部分返回估计值否则,到温部分进行查询;

31、温部分查询模块,用于在温部分中进行e查询,并返回记录数值。

32、本发明的有益效果如下:

33、(1)本发明的自适应缩放策略可以动态地改变计数器的计数范围,实现对冷数据的准确估计和高效的内存使用;冷数据的频率高度集中在一定范围内,而冷数据的频率范围在不同数据流中是不同的,用估计冷数据的频率范围替代精确估计冷数据的频率是可以接受的,因此提出自适应缩放策略以适应数据流,实现只用很少的一些比特位来估计冷数据的所在的频率范围;

34、(2)本发明使用以频率导向的处理方式,对不同频率的数据采用不同的方法,将数据分为热数据、冷数据和温数据;由于热数据很少但很重要,方法使用哈希表作为热部分的处理结构,用精确的计数器跟踪它们;对于冷数据,seivesketch结合自适应缩放来实现在冷部分的频率范围测量;最后,在热部分和冷部分分别捕获热数据和冷数据后,温部分记录温数据,以一种更细粒度的方式对数据进行划分和处理。

35、以下结合附图及实施例对本发明作进一步详细说明,但本发明的一种细粒度自适应的数据频率测量方法、查询方法及系统不局限于实施例。

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