请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,后面还有关于数据库的内容吗?

我还是不太理解这个多租户,读取数据没啥问题,写入数据是每个数据库都写入吗?如果有一个失败了那数据库之间的数据不就不一致了吗?事务怎么加?

正在回答 回答被采纳积分+3

1回答

Brian 2025-06-24 11:03:45

你这个问题要分几个点来回答:


多租户是什么?简单来说,不同租户可能拥有不同的数据隔离级别


读取数据没啥问题,写入数据是每个数据库都写入吗?不一定,取决于你采用的多租户模型。比如,是多个租户一个数据库,一般是秀tenant_id来区分;多个租户,不同的数据库,不同租户的数据写入到不同的数据库,读取当然也是分别读取。所以:

每个租户只写自己的数据库,不会给所有租户写同样的数据


如果有一个失败了那数据库之间的数据不就不一致了吗?事务怎么加?

是的,如果你在多个数据库写入时没有使用分布式事务,一部分成功、一部分失败,确实会导致不一致。

一般在分布式的场景下,传统数据库无法覆盖这种业务场景。可以考虑:分布式事务、异步补偿、数据复制(一写多同步)等策略。

在nestjs中,可以考虑使用seata来做!

而异步补偿,很多缓存工具或者队列都可以做,每个步骤执行成功后写入事件表(存入之前的缓存),如果后续失败,系统触发“补偿逻辑”将前面操作回滚。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕娘4151148 #1
    明白了,多租户每个数据库本来就是存不一样的数据
    回复 有任何疑惑可以回复我~ 2025-06-24 11:27:41
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号