bigdata
Contents
Redis 中 HyperLogLog 的使用场景 布隆过滤器(附go语言代码实现,详细注释)
bigdata
- what’s? 当大量数据产生的时候,传统手段处理起来乏力,需要一些新的手段
bitmap;
-
data Structure bit array;一个
1 2 3 4 5 6
var bitmap []bit ; func (offset){ bit[offset/8] |= offset%8 };
-
how save space:
int32: 32bit; in bitmap 1bit 32倍 4 billion data:
bitmap: 2^32 * (1/8)/1024/1024 = 512M; normal: 2^32*4/1024/1024 = 512M * 30 = 15G; -
usecase:
1 2
setbit ssp_clickcount 111 1; bitCount ssp_clickcount 0 -1;
HyperLogLog;
-
实时数据分析;估算
1 2
PFADD ssp_001 PFCount
-
原理:
001 00001 0001 0000001伯努利值: 一条随机的二进制数据,第一次出现1位伯努利值; 伯努利值与数据数正指数相关
store: hash(value).伯努利值
-
优势:
- 12kb
bloom filter
使用多个hashFunction;