首页 > 其他分享 >利用bitmap解决用户标签的统计需求

利用bitmap解决用户标签的统计需求

时间:2022-09-28 11:33:57浏览次数:49  
标签:distinct 标签 用户 bitmap 统计 用户数

 

传统的用户标签统计方法,利用Mysql设计了如下的表结构,每一个维度的标签都对应着Mysql表的一列:

要想统计所有90后的程序员该怎么做呢?

用一条求交集的SQL语句即可:

Select count(distinct Name) as 用户数 from table whare age = '90后' and Occupation = '程序员' ;

要想统计所有使用苹果手机或者00后的用户总合该怎么做?

用一条求并集的SQL语句即可:

Select count(distinct Name) as 用户数 from table whare Phone = '苹果' or age = '00后' ;

随着标签增多,用户数增多,查询性能会下降的,多个用户群体做并集处理distinct,性能慢的不可想象

 

bitmap解决方案

Bitmap不仅方便查询,还可以去除掉重复的整型数。在Java里面,BitMap已经有对应实现的数据结构类java.util.BitSet,BitSet的底层使用的是long类型的数组来存储元素。

让每一个标签存储包含此标签的所有用户ID,每一个标签都是一个独立的Bitmap。

这样,实现用户的去重和查询统计,就变得一目了然:

然后通过bit的与或运算解决群体并集问题

 

 

bitmap相比hashset和hashmap节省内存,只需要他们的32分之一。bitmap一个id只需要1bit,hashset等需要32bit

 

 

 

 

标签:distinct,标签,用户,bitmap,统计,用户数
From: https://www.cnblogs.com/l1pe1/p/16737383.html

相关文章

  • linux开机、重启和用户登录注销
    linux开机、重启和用户登录注销关机重启命令1.基本介绍shutdown-hnow立刻进行关机shutdown-h1"hello,1分钟后就会关机"shutdown-rnow......
  • 3.用户登陆-用户加密-用户与角色
    一、用户模块1.用户名称获取1.分析用户存储位置为securityContext---authentication---principal对象中//后台获取权限框架存储的用户对象SecurityContextcontext=Sec......
  • 8.持续集成环境-Jenkins用户权限管理
    Jenkins默认的权限设置比较粗狂,不太细致,所有我们需要安装插件进行权限管理 1.安装Role-based-AuthorizationStraegy插件其中ConfigureGlobalSecurity就是一个全局安全......
  • django项目 多个页面判断用户是否登录
    url.py文件:1fromdjango.contribimportadmin2fromdjango.urlsimportpath3frombooimportviews45urlpatterns=[6path('admin/',admin.sit......
  • TE的标签外框图片如何制作
        在TE中的TextLabel标签中,有一个属性是FrameFile图片的选择,选择完成后,标签上就会带上一层外框,TE的程序路径里有几张这样的图片示例,那要做一个自定义的外框如何做......
  • 网页标签功能插: jQuery tags input 翻译api
    看名字应该知道是干嘛用了吧。这种规格标签,因为在写一个后台,用到这种场景,vuejs又没什么可用的,所以这种交互性极强的,还是离不开jquery啊。后悔没用react开发,结合ant里面......
  • 用户态与内核态
    转载:https://juejin.cn/post/6920621924791894023#commenthttps://www.cnblogs.com/shangxiaofei/p/5567776.html......
  • Redis之bitmap
    一、bitmap介绍bitmap,也叫位图,是一种实现对位的操作的'数据结构',用一个bit位来表示一个东西的状态,我们都知道bit位是二进制,所以只有两种状态,0和1。bitmap同样属于redis......
  • Linux源码list.h用户态改编
    前言操作系统课程的第一个作业:理解list.h的设计思想和技巧并用list.h实现一个进程管理程序。我的Linux环境为WSL-Ubuntu,该环境中/usr/include/linux目录下无list.h文件,......
  • 百度编辑器纯文本格式,过滤标签,过滤br标签
    我这个是把复制进去的代码里的样式给重置掉并把里面的br标签给去掉了,没这个需求的话可以自行去掉在ueditor.config.js文件里找到retainOnlyLabelPasted和pasteplain设置为......