OLAP技术应用——位运算原理及应用

位图(bitmap)数据结构在大数据场景下提供高效的存储和计算解决方案。通过位运算实现基数统计,适用于用户行为分析如留存、活跃度计算。美图的Naix和快手的BitBase是分布式bitmap服务实例,解决了单机计算瓶颈,但面临实现成本高、不支持SQL等挑战。尽管如此,bitmap在多维分析计算中表现出色,仍有优化空间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

位图(bitmap)是一种基于bit位数组的数据结构,在大数据场景下对于存储和计算效率均有奇效。

假如将10亿连续的用户ID存在int数组,需要10亿个32位int,占用存储3.72G左右,如果改用bit数组存储,每一个bit位表示一个用户ID,只需要10亿个bit,120M左右存储就够。

下图为表示用户是否登入属性的一个bitmap数据结构,存储的是0和1,其中1表示登入过,0表示没登入,数组的下标位置表示用户ID,例如下图用户ID为1、2、5的用户登入过系统,那么统计当天登入的UV用户数只需要计算1的个数即可。
在这里插入图片描述
如果要计算次日留存,7日、30日留存,可以对每一天登入用户状态存入bitmap结构,计算次日留存就是计算day1和day2的bitmap结构对应位的与运算(day1表示第一天,计算7日,30日原理类似),这样就把留存计算从传统数据库中的left join转化为bit位运算,在存储和计算效率上都有本质的提升。

利用bitmap位运算特性,可以实现与、或、非和异或计算,计算结果也是bitmap,通过统计1的个数就可以知道结果集个数。对于应用场景中的基数统计都可以考虑使用bitmap处理。

业界实践
美图的Naix

用户行为例如新增、活跃、留存、升级、回访,本质上都是计算用户行为的个数&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值