标签

标签数据天生具有 3 个维度特征:

  • 时效
    • 离线标签。T + 1
    • 近实时标签。分钟/小时
    • 实时标签。秒/毫秒
  • 聚合粒度
    • 聚合标签
    • 明细标签
  • 业务属性
    • 账号属性
    • 地理位置
    • 消费行为
    • 活跃行为
    • 用户偏好
    • 资产信息
    • ......

用户使用画像标签的时候,进行简单地拖拉拽拼接规则,并不了解背后的技术细节。

标签存储

宽表

user_id姓名性别购房意向意向户型
1老五50-100m
2老四200-300m

使用 doris 的列式存储技术,利用索引、物化视图等优化手段,支持高效的多维分析。

缺点:

  • 新增标签需要修改表结构,新加一列
  • 更新频率。标签可能有不同的来源,离线计算、实时计算,更新频率不一

适用场景:

  • 低频更新
  • 密集标签。如用户性别,每个用户都会有性别,就属于高密集标签,如购房意愿,仅有 20% 用户具有值,属于稀疏标签

竖表

user_id标签名标签值
1性别
1年龄15
2性别

优点:

  • 易于扩展,标签可随时添加
  • 更新友好。每一行只是一个标签
  • 查询友好。建立标签名和标签值的联合索引,任意维度查询性能高

缺点:

  • 数据量巨大。如 100w 用户,100 个标签,需存储 100w * 100 =1亿数据

适用场景:

  • 高频更新
  • 稀疏标签

倒排表

标签名标签值user_ids(bitmap)
性别1, 2
性别3

优点:

  • 人群圈选很快。需要任意维度圈选时,只需要对任意维度标签的 user_ids 求交集即可

缺点:

  • 更新困难,每次更新时需更新标签对应的全部 user_ids

为了弥补标签更新的能力,需添加明细表,周期性的把明细表更新到 bitmap 表:

人群圈选

DSL -> Doris SQL、ES Query