冗余表设计——精选推荐

冗余表设计
弱关联多对多:弱关联指的是单向关系,即A关注B,但不⼀定B就关注A
需要额外增加2张关系表,分别是关注表和粉丝表(为什么不能只⽤⼀张表分2个字段,“关注⼈”字段和“粉丝”字段?因为1个关系会产⽣2条记录,那是按“关注⼈”字段做切分还是按“粉丝”字段做切分呢?加⼊按“关注⼈”字段切分,要查询某⽤户是哪些⽤户的粉丝,就得全表扫描,失去了分库分表的意义了)
强关联多对多:即A关注B的同时,B也关注了A
猫课堂实录
增加⼀张有好友1字段和好友2字段的关系表,每个好友关系关联只⽤⼀条记录表⽰
单表查询⽤户A的所有好友,建议⽤:
select * from friend where uid1=A
怎么下载
union
select * from friend where uid2=A
⽽不要⽤ select * from friend uid1=2 or uid2=2 (⽤or是不会⾛索引查询的)
缺点:同上⼀个结论,分库分表按“好友1”还是按“好友2”切分?
表设计同弱关联,分别在关注表和粉丝表⾥各插⼊2条记录
数据虽然冗余,但每张表都有⾃⼰的维度,⽅便按各⾃的维度分库分表。
数据冗余的表结构设计
分成2张表就涉及到双写同步,同步⽅式双写会增加响应时间。邯郸市第二十六中学
PS:第⼆次写表发⽣异常造成不⼀致情况,考虑⼿⼯订正或者新增异常处理服务。
异步推送双写
同步写⼊第⼀张表后,通过异步消息⽅式写第⼆张表不阻塞后续处理。
缺点:
武林风阳阳1. 增加系统复杂性,需要消息组件和异步写表服务。
2. 存在不⼀致性的时间窗⼝,异步双写只能保证最终⼀致性。
3. 要考虑到消息丢失的异常场景处理。
异步拉取双写
同步写第⼀张表后记录初始status,新增轮询服务区扫该表status是初始的记录,去写第2张表,增加了可靠性。
缺点:
异步推送双写的前2个问题还是存在。
最终⼀致性的架构设计
新增服务扫描2张表获取数据不⼀致的记录,进⾏订正。
新闻摄影学缺点: 效率低导致不⼀致的时间窗⼝过长。
每次写⼊后推送消息通知订正服务,实时性⾼
缺点:增加系统复杂性
可达矩阵
数据不⼀致的场景引出了写数据顺序的问题,根据场景决定如果第⼀步成功,第⼆步失败会有什么结果(不存在第⼀步失败第⼆部成功的场景)

本文发布于:2024-09-22 00:51:25,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/364450.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:增加   好友   消息   新增   字段   场景   分库
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议