与cm-sketch

相同之处

都用哈希函数将数据映射到桶里:不将接受到的数据完整保存下来,减少数据存储的空间

不同之处

mv为可逆的sketch,即可返回重流的数据;而cm只能输入数据查询

MV-Sketch

可逆—>主选票算法(the majority vote algorithm)

MV-Sketch
一个桶中有三个成分:重流候选Ki,j(第i行第j个桶),一个计数器记录映射到该桶内的总数据量Vi,j,一个计数器记录重流候选的数据量Ci,j

当一个数据包x映射到桶中时,Vi,j增加新数据包的大小,如果x是当前的重流候选,则Ci,j加上该数据包的大小,反之减少(不断抵消),当C的数值减为负值时,更新重流候选,新重流候选即为当前(使C变为负值)的x,C取绝对值

如:
一串flow abc,a=1,b=5,c=2按顺序映射入一个桶中
最开始重流候选K=a,V=1,C=1
b进入,V=6, b!=K —> C=C-vb=-4 —> C=-C,K=b
c进入,V=8, c!=K —> C=C-vc=2 >0 —>K=b

  • 优点:与cm比能储存重流的数据,并且因为一个桶中只需储存一个重流的数据,根据后续数据包的情况进行不断更新,内存开销并不大
  • 存在误差:如:
    一串flow abcde,a=10,b=c=3,c=4,d=1
    当e输入时,C变成负值,K更新为d,而d的数据量是flow中最小的

插入、查询操作

插入

数据x通过r个哈希函数的映射,投射到r个桶里

查询

heavy hitter

查询每个桶,若桶中的总计数值V大于某个预设值,则该桶中存在heavy hitter(初筛):heavy hitter数据量远远大于其他数据,故原理上它所在的桶数据量大

查询上一步初筛中含有heavy hitter的桶中的重流计数器的值,若大于某个预设值,则该桶中的重流候选为一个heavy hitter

heavy changer

MV-Sketch

分布式数据检测

相关文章:

  • 2021-07-11
  • 2021-06-30
  • 2021-05-21
  • 2021-11-30
  • 2022-02-21
  • 2021-09-08
  • 2021-06-20
  • 2022-12-23
猜你喜欢
  • 2021-07-02
  • 2021-09-17
  • 2022-01-07
  • 2021-08-09
  • 2021-09-15
  • 2022-12-23
  • 2021-06-23
相关资源
相似解决方案