基数计数——HyperLogLog

所谓的基数计数就是统计一组元素中不重复的元素的个数。如统计某个网站的UV,或者用户搜索网站的关键词数量;再如对一个网站分别统计了三天的UV,现在需要知道这三天的UV总量是多少,怎么融合多个统计值。

方法:(假设元素个数为m,去重后个数为n)

1、集合操作去重

时间复杂为O(m2),空间复杂度随元素个数线性增长。

2、B+树

将数据插入到B+树中达到去重目的,然后顺序访问叶节点链从而得到n值。时间复杂的为O( lgm + n ),内存亦随元素个数线性增长。

3、BitMap

4、HyperLogLog

参考资料:

1、神奇的HyperLogLog算法 - CSDN

2、原始论文:Loglog Counting of Large Cardinalities

猜你喜欢

转载自www.cnblogs.com/z-sm/p/9337648.html