用户标签系统的搭建和技术选型

https://linzhiqiang.blog.csdn.net/article/details/80721237?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-4.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-4.control

1.背景
随着业务的快速发展,为了进一步提升获客能力,提高用户的转化率,搭建一个用户标签系统很有必要。

2.设计目标
1)支持根据用户id查询标签;
2)支持根据标签获取用户集合;
3)根据用户id查询聚合信息(包括用户标签、以及其他聚合内容);
4)减少mysql多表join操作的查询性能开销,提升查询的性能;

3.标签系统设计
方案1:使用redis的hash结构来存储用户标签
1)hash的key是用户id,value是一个map,然后map里面k-v键值对对应多个标签和聚合内容;
2)缺点:读取性能高,但是仅仅支持基于id查询用户标签,不支持复杂的查询(如根据标签查询用户集合、如根据二级索引查询等)

方案2:使用mongoDB来存储用户标签
1)用户的id作为用户文档的_id,数据从MongoDB中读取出来后,可无需转换直接使用;
2)适用于表结构经常改变,数据量比较大,且一个领域的数据聚合到一个文档中的;

6.标签应用

6.1新客、老客、潜客查询

6.1.2 实现方案(全量数据和增量数据)
  1. 首次上线存量数据可以线下打好标签之后导入redis;
  2. 增量数据可以通过消费kafka数据更新;

你可能感兴趣的:(用户标签系统的搭建和技术选型)