分库数据关联问题
来源:3-7 数据库设计

Echo月
2019-12-29
这个问题一直困扰我很久,举个栗子,我拥有如下两个模块的数据库:
- 用户中心——拥有用户表
- 资源中心——拥有资源表
其中资源中心资源表是和用户中心的用户表有所关联的。也就是在资源表的中会有 user_id
字段。
在生产环境下,数据库中的每条数据都有一个 is_enable
字段来标识此条数据是否被删除或者禁用。现在当我 user_id
为 1
的用户被禁用的时候,应该与他关联的所有资源都被禁用。但是这个时候我们怎么知道有哪些服务的数据与他有关联呢?并且如何将他们也设置为禁用呢?
以前想过用消息队列,但是在用户被禁用以后我不知道有哪些微服务和用户有关联,并且后面如果有新的服务关联了,我也没办法知道或者需要去改原有的代码,所以没法实施。。。
这样就会有数据冗余,明明应该随着一起被“删除”的数据现在却还存在,还能够被查出来甚至能够被使用。请问下老师这种问题如何去处理呀?
写回答
1回答
-
您好,这个问题是目前微服务圈子乃至分布式应用圈子比较棘手的问题。其实你问题的本质是有微服务A(你的用户中心)和B(你的资源中心),微服务B的操作依赖A的数据结果。
这种问题目前有两种解决方法:
B操作之前都去查询下A的数据
B冗余A的数据,然后B监听A的数据变化,也就是你说的弄个消息队列;或者B弄个定时任务,定时查询A的数据,然后更新。
目前没有更好的解决方法。要么冗余,要么实时查询。
112019-12-29
相似问题