Doris画像存储实践系列二

部署运行你感兴趣的模型镜像

上一篇:
Doris画像存储系列一(https://editor.youkuaiyun.com/md/?articleId=120416295)

六、画像宽表+bitmap倒排表

重复一下bitmap倒排表的优点和缺点
标签类型标签值user_ids
性别1,2
性别3
优点:
  1. doris bitmap聚合表在对做用户画像群体计算时很友好,交集/并集/差集
  2. 因为数据是聚合存储,因此数据量少,性能也特别好
缺点:
  1. 当我希望分页查询用户画像/自定义画像字段排序时特别麻烦
  2. 当我希望做流式计算做实时标签时,无法按照单个用户进行标签的删改
因此目前又有了一个新的技术方案:

“画像宽表” + bitmap倒排表方案,在方案五的时候使用的是"画像窄表"+bitmap倒排表方案,因为早期Doris只能支持整行更新,而无法实现某表某列的单独操作,现在呢已经可以实现了,具体方案如下:

通过doris聚合模型+REPLACE_IF_NOT_NULL 聚合函数实现

表创建结构如下
CREATE TABLE `tdm_user_tag` (
  `user_id` int(11) NULL COMMENT '用户ID',
  `sex` varchar(20) REPLACE_IF_NOT_NULL NULL COMMENT '性别',
  `age` varchar(20) REPLACE_IF_NOT_NULL NULL COMMENT '年龄段',
  `id_number` int(11) REPLACE_IF_NOT_NULL NULL COMMENT '身份证号'
) ENGINE = OLAP AGGREGATE KEY(`user_id`) COMMENT '用户标签表' DISTRIBUTED BY HASH(`month`) BUCKETS 8 PROPERTIES (
  "replication_allocation" = "tag.location.default: 3",
  "in_memory" = "false",
  "storage_format" = "V2",
  "disable_auto_compaction" = "false"
);
标签数据操作如下:
insert into tdm_user_tag(user_id,sex)values("1","男")("2","女");
insert into tdm_user_tag(user_id,age)values("1","90后");
insert into tdm_user_tag(user_id,id_number)values("1","1111111");
insert into tdm_user_tag(user_id,likes)values("1","钓鱼,看戏");

数据结果如下:
idsexageid_numberlikes
190后1111111钓鱼,看戏
2
说明:
  1. REPLACE_IF_NOT_NULL聚合函数,能够实现插入时忽略空值,也就可以实现一次操作某一列数据,也因为每个画像值的计算逻辑是不同的,所以也就和上面的例子一样,一条SQL对应一个画像,一个画像对应一个计算逻辑,一次操作一列数据
  2. 基于这样的宽表数据,实现排序,分页,自定义组合检索都是非常好的
  3. 同时也兼顾了类似于身份证号类别不适合定义为标签的字段
  4. 补充一点说明,有的画像是多值的,在上面的例子中使用逗号分隔多个标签值,Doris提供函数find_in_set函数,能够匹配出是否包含某个画像值,如:
-- 查看命中"看戏"爱好的人有哪些
select * from tdm_user_tag where find_in_set("看戏",likes) > 0
  1. 到目前为止,doris依然对单条插入不友好和推荐,上面只是例子表示可以实现某一例的操作,正常应该是批量操作的,如:
-- 通过用户表的信息生成画像信息
insert into tdm_user_tag(user_id,sex) select user_id,sex from user_info
  1. 一般数据量不大的情况下,只需要"画像宽表"就可以了,如果涉及大量的如画像群体的交并集查询等操作,此时再建立"bitmap倒排表"不迟,定时将"画像宽表"数据写入到"bitmap倒排表"

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值