返回 AI 资讯
社区讨论LinuxDo 最新

使用mysql规划建表的时候遇到了问题,想请教一下各位佬

如题,我是新入职的开发小卡拉米,公司库用的mysql。 目前有一个建表要求;比如我现在有产品表,资金表,用户表这三张基础表,现在有一个需求是我需要能对每个用户做画像、风控; 比如我现在想对某个产品某天购买总数超过10台的用户做风控,那么一个简单的想法是直接sql去三张表里面查每个用户的逐笔数据;但是如果用户比较多,每次去直接查表就比较麻烦了;所以我的想法是根据基础的三张表添加三分不同的汇总表,比如按天汇总数据,这样可以加速查询,比如还是按照上面的需求,直接查汇总表,数据库的压力会小很多; 这里场景当然比较简单,假…

内容摘要

作者:#saysaySEE 板块:#开发调优 如题,我是新入职的开发小卡拉米,公司库用的mysql。 目前有一个建表要求;比如我现在有产品表,资金表,用户表这三张基础表,现在有一个需求是我需要能对每个用户做画像、风控; 比如我现在想对某个产品某天购买总数超过10台的用户做风控,那么一个简单的想法是直接sql去三张表里面查每个用户的逐笔数据;但是如果用户比较多,每次去直接查表就比较麻烦了;所以我的想法是根据基础的三张表添加三分不同的汇总表,比如按天汇总数据,这样可以加速查询,比如还是按照上面的需求,直接查汇总表,数据库的压力会小很多; 这里场景当然比较简单,假设已经能满足我们业务上大部分的需求了,但是还有一些风控指标,比如是讨论买某个用户某天买水果18的数量超过100台需要判定为异常购买情况,这种比较离谱的风控指标我们不可能直接对每个用户扩展表字段,那样会变成大宽表,最主要的是这个指标有可能只是暂时比较重要,长远来看可能并不需要沉淀到表里(当然也有可能需要沉淀),当然直接用sql也不现实,因为我们需要考虑到这种风控指标有可能需要作为新字段沉淀下来; 这里就面临灵活性的窘境;我看公司中台有的人使用EAV 竖形表存储临时指标,类似下面这样 tag表 client_id tag value 123 买水果18的数量 xxxx cal表 tag_id cal_sql xxxx select count(*) from aaa where total > 18 这样每次一个临时指标作为tag, 存储的就是所有数量的用户,value就是sql返回的值;短期可以这样,只不过每次有一个新的tag都需要存储所有用户对应的tag,就是将大宽表变成大长表;但是长期来看,数据量增加就会非常快速;我问了ai好像clickhouse可以解决类似的问题,但是还是想问问各位佬友有没有什么优雅的方式

资讯来源

LinuxDo

原文链接

打开原文