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

背景位图(bitmap)是一种基于bit位数组的数据结构,在大数据场景下对于存储和计算效率均有奇效。假如将10亿连续的用户ID存在int数组,需要10亿个32位int,占用存储3.72G左右,如果改用bit数组存储,每一个bit位表示一个用户ID,只需要10亿个bit,120M左右存储就够。下图为表示用户是否登入属性的一个bitmap数据结构,存储的是0和1,其中1表示登入过,0表示没登入,...
摘要由CSDN通过智能技术生成
背景

位图(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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值