背景信息

几乎所有行业(如互联网、游戏、教育等)都有实时精准营销的需求。通过系统生成用户画像,在营销时通过条件组合筛选用户,快速提取目标群体,例如:

  • 电商行业中,商家在运营活动前,需要根据活动的目标群体的特征,圈选出一批目标用户进行广告推送或进行活动条件的判断。
  • 游戏行业中,商家需要根据玩家的某些特征进行圈选,针对性地发放大礼包,提高玩家活跃度。
  • 教育行业中,需要根据学生不同的特征,推送有针对性的习题,帮助学生查缺补漏。
  • 搜索、门户、视频网站等业务中,根据用户的关注热点,推送不同的内容。

这些行业都有一些共同的业务痛点:

  • 数据量庞大,运算量也极大。
  • 用户标签多、字段多,占用存储空间也多。
  • 字段多,可能会超过数据库的字段数限制,一般数据库最多支持1000多个字段。
  • 使用数组替代多字段存储标签,需要数据库支持倒排索引,但并不是所有数据库都支持倒排索引。
  • 使用数组替代多字段存储标签,加上倒排索引,存储空间会暴增。
  • 圈选条件组合多样化,没有固定索引可以优化,如果每个字段一个索引,存储空间又会暴增。
  • 性能要求高,因为实时营销要求秒级响应。
  • 数据更新时效要求高,用户画像要求近实时的更新,否则可能圈选到不精准用户(例如用户昨天在浏览手机,昨晚已下单,但是数据未实时更新,那么手机卖家圈选时这个用户就会被选中,但是该用户实际上已经不是目标群体)。

实现方案

方案:实时精准营销(人群圈选)

楼主以前就遇到对习题打标签,根据学生不同的特征,推送有针对性的习题的需求,当时一开始用了实时精准营销(人群圈选)里的方案一的mysql方式来实现,那sql写得长得一匹,性能又差(手动狗头),最后还是换成es利用倒排索引来优化,也就是实时精准营销(人群圈选)里的方案二。

但显然,实时精准营销(人群圈选)中的方案三,利用PostgreSQL的RoaringBitmap插件来实现最优,当前公司的用户标签系统也是用了这个方案,于是搜索资料了解学习下:

  • 使用压缩位图RoaringBitmap
  • 不用找了,roaringBitMap原理看这个就行了

总结

  • 解决问题,没有最好的方案,只有更合适的方案
  • 多收集信息,多积累经验,站在巨人的肩膀不香吗

RoaringBitmap应用场景相关推荐

  1. Redis bitmap、hyperlog、布隆过滤器、RoaringBitmap原理应用场景与日活的统计的具体应用

    传统方案-mysql 缺点: 1.空间占用大 2.统计逻辑复杂,比如 统计最近 30 天用户的累计活跃天(每个用户在 30 天里有 N 天使用 app,N 为 1-30,然后将月活跃用户的 N 天加总 ...

  2. roaringbitmap java,BitMap、RoaringBitmap与JavaEWAH

    本文主要介绍BitMap的算法思想,以及开源工具类JavaEWAH.RoaringBitmap的简单用法. 一.BitMap 介绍 BitMap使用bit位,来标记元素对应的Value.该算法能够节省 ...

  3. Hologres如何基于roaringbitmap实现超高基数UV计算?

    简介:本文将会介绍Hologres基于roaringbitmap实现超高基数的UV计算 RoaringBitmap是一种压缩位图索引,RoaringBitmap自身的数据压缩和去重特性十分适合对于大数 ...

  4. Hologres如何支持超高基数UV计算(基于roaringbitmap实现)

    简介: 本文将会介绍Hologres基于roaringbitmap实现超高基数的UV计算 RoaringBitmap是一种压缩位图索引,RoaringBitmap自身的数据压缩和去重特性十分适合对于大 ...

  5. Greenplum roaring bitmap与业务场景 (类阿里云RDS PG varbitx, 应用于海量用户 实时画像和圈选、透视)

    摘要: 标签 PostgreSQL , Greenplum , varbitx , roaring bitmap , pilosa , varbit , hll , 多阶段聚合 背景 roaring ...

  6. arcpy实现空间查询_「实战系列」GP+Roaringbitmap,亿级会员十万级标签毫秒级查询...

    在大数据处理和应用场景中经常需要从亿级甚至十亿级会员中搜索出符合特定标签的会员.很多企业都会使用 HBase 或者 Hive + Hadoop 的方式,这样的方式查询效率非常慢,在标签非常多的情况下计 ...

  7. RoaringBitmap 原理

    前言 位图索引被广泛用于数据库和搜索引擎中,通过利用位级并行,它们可以显著加快查询速度.但是,位图索引会占用大量的内存,因此我们会更喜欢压缩位图索引. Roaring Bitmaps 就是一种十分优秀 ...

  8. Redis bitmap数据格式优化 (RoaringBitmap)

    1. Key-Value 存储 尝试插入1kw条数据, key为设备MD5值, value为1, 此时Redis中存在1kw条key-value键值对. 通过info指令查看内存占用: 1kw数据ke ...

  9. RoaringBitMap在ClickHouse和Spark之间的实践-解决数据仓库预计算多维分析问题

    ​ 前面在Spark多维分析去重计数场景优化案例中说了一下Spark计算在多维分析场景中的弊端,多维度分析会导致数据量指数级膨胀,搭配上去重计算字段越多,膨胀倍数也是线性增长,通过BitMap这个案例 ...

  10. Spark多维分析去重计数场景优化案例【BitMap精确去重的应用与踩坑】

    关注交流微信公众号:小满锅 场景 前几天遇到一个任务,从前也没太注意过这个任务,但是经常破9点了,执行时长正常也就2个小时. 看逻辑并不复杂,基本是几段SQL的JOIN操作,其中一个最耗时间的就是要根 ...

最新文章

  1. 【 Verilog HDL 】寄存器数据类型(reg)与线网数据类型(wire,tri)
  2. 百度爬虫爬到虚拟链接 网站被黑_网站地图sitemap对SEO优化有什么作用?
  3. 如何有效地进行代码 Review?
  4. maven中添加servlet、jsp依赖
  5. Linux tty驱动程序一 架构
  6. 关于C#程序的单元测试
  7. mysql 数据库文件导入和导出、远程上传和下载数据库
  8. 机器学习笔记(二十)——求解最大熵模型
  9. 面试精讲之面试考点及大厂真题 - 分布式专栏 16 数据库如何做分库分表,读写分离
  10. Redis八种数据类型及应用场景介绍
  11. 用 Ansible 实现基于 OpenShift (Kubernetes) 的 DevOps
  12. JS:ES6-4 简化对象与箭头函数
  13. 《视觉开发专题》之 OpenGL 概述
  14. java ArrayList扩容入门
  15. Delphi 实现多国语言
  16. 到底该如何看待谭浩强的“C程序设计”
  17. java 修改文件编码_java中怎么获取、设置文件编码格式?
  18. 计算机视觉c刊论文,摄影外文文献 摄影核心期刊参考文献哪里找
  19. 深度学习实战-图像风格迁移
  20. Phalanx 动态规划

热门文章

  1. idou老师教你学Istio 29:Envoy启动流程
  2. python开发要学什么_运维为什么要学编程?编程为什么是Python?
  3. 北京航空航天大学计算机学院保研,北京航空航天大学计算机学院(专业学位)计算机技术保研...
  4. html如何插入一张图片,html如何插入图片
  5. Jenkins项目配置-maven项目-全面
  6. Vue打包优化篇-CDN加速
  7. JuiceFS 缓存策略详解
  8. 微商史上最全软文标题写作套路(收藏版)
  9. 4200万元新年大单!广西公安厅2个大数据智能化建设项目公开招标
  10. 释放docker日志所占空间