zoukankan      html  css  js  c++  java
  • HyperLogLog

    HyperLogLog

    基数计数,不绝对准确。省空间,速度快

    估计基数,对数级空间节省

    可以理解为一种压缩,把基数压缩成二进制位数,只存储位数,如果旧有的数据再加入时肯定不会改变位数。

    反之回复成基数是2的幂,所以是个近似值。

    多桶理解为多个位数,求平均数来近似,防止二的幂的近似太粗犷。

    记得以前有个猜日期游戏,数据分五组

    A:1,3,5,7,  9,  11,13,15,27,19,21,23,25,27,29,31

    B:2,3,6,7,10,11,14,15,18,19,22,23,26,29,30,31

    C:4,5,6,7,12,13,14,15,20,21,22,23,28,29,30,31

    D:8,9,10,11,12,13,14,15,24,25,26,27,28,29,30,31

    E:  16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31

    游戏规则是:在上面五组中找出你的生日日期,把组名告诉对方,对方猜测你的生日日期,

    例如告诉对方在abc三组,那么日期就是1+2+4=7

    如果是ade三组,日期就是1+8+16=25,

    依此类推,告诉是在哪个组就把组的第一个数字加一起,即是所求

    HyperLogLog也是类似的算法,只不过把数据压缩,无法完全还原,反向计算找一个近似值,多桶计算多个近似,计算调和平均数。

    有人说redis的桶个数是16834,我怎么想怎么不对。这个数太像2的14次幂16384了,怀疑是笔误,于是下载了redis源码,hyperloglog.c文件中,查看发现有16384这个数,没有16834这个数。

    和hash算法类似思想,按照规则来计算,结果天知道、鬼知道、反正我不知道。

  • 相关阅读:
    log4j 配置
    membership数据库的架构
    JQuery常用方法一览
    标准http状态码[英文注释版本]
    PowerDesigner教程系列(一)概念数据模型
    ASP.NET配置文件Web.config 详细解释
    C# 特性(Attribute)
    [原创]bind DNS IP列表的精确获取
    【原创】WEP 密码破解
    【收录】Nginx 状态监控
  • 原文地址:https://www.cnblogs.com/klarck/p/13581373.html
Copyright © 2011-2022 走看看