原文地址:
http://mp.weixin.qq.com/s/tLL9IB5Tj8486lf11EAskQ原本统计求交集的SQL语句为:SELECT COUNT(distinct name) as 用户数 from 用户表 where 属性1=’值’ and 属性2=’值’……
标签较少的话还可以,但是用户或标签变多查询的性能会大大降低
bitmap思想操作
- 建立用户名和用户ID的映射
- 让每一个标签存储包含此标签的所有的用户ID,每个标签都是一个独立的bitmap
- 这样,实现用户的去重和查询统计,就变得一目了然
优点
- Hashset和Hashmap,每个用户的ID需要存储为int类型,而用户在bitmap中只占一个bit,内存节省
- 在做交集和并集运算时,性能较快
缺点
- 不支持非运算
RoaringBitmap
EWAHCompressedBitmap