bitmap和布隆过滤器简单总结

一、BitMap

解决的问题:大数据量下的排序、查找、去重。

1、关键

通过 bit位 表示一个数值的状态(是否存在),那么1MB能大约表示 800万数值 (1,000,000B * 8 bit )

2、局限性:

1、内存限制:10位的数值(即99亿), 占用 1.25GB内存
2、一般应用在数值类型。字符串映射到 BitMap 存在Hash碰撞的问题(引入bloom filter)
3、不适合数据稀疏。比如要存入(10,10000,100000000)这三个数据(引入 Roaring BitMap)

3、应用场景
  • 对 不重复的 密集整数 进行排序
  • 查找数据是否存在海量集合中
  • 找出没有重复的数据(两个bit位标识一个数值的状态)

二、Bloom Filter

解决的问题: 判断一个元素是否属于这个集合

1、关键

内存占用极少,不局限于数值类型。

2、局限性

存在错误率。

PS.
哈希函数个数 k、 位数组大小 m、输入key的数量 n
对于给定的m、n,当 k = ln(2)* m/n 时出错的概率是最小

3、应用场景

三、基数计算

hyperloglog,落地场景:kylin & spark 对于 count distinct 操作

发布了53 篇原创文章 · 获赞 50 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/xw514124202/article/details/104327948