背景与挑战
CDP系统中存在大量用户ID集合组成的标签和群体,目前已有几千+标签,群体2W+,数据量达到亿级别甚至数十亿+。
核心问题
传统文本文件存储方式空间消耗巨大:1000W用户ID需150M空间,40亿群体达60G。加上标签数据,存储空间不可接受。
解决方案:RoaringBitmap技术
1. Bitmap基础思想
用bit位唯一标记数值,大幅节省存储空间
2. 用户ID编码
将字符串ID映射为唯一offset偏移量
3. RoaringBitmap压缩
解决Java BitSet的32位限制和稀疏数据空间浪费问题
4. 64位支持
使用Roaring64NavigableMap处理超过2^32的ID池
技术实现
- 高低位分桶存储(高16位/32位作为桶编号,低16位/32位作为数据位)
- 三种Container实现:ArrayContainer、BitmapContainer、RunContainer
- 支持高效的交并差运算,便于标签和群体组合计算
应用效果
目前CDP画像的标签和群体均采用RoaringBitmap存储,显著降低了存储成本并提升了计算效率。