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

来源:15-5 [最佳实践]数据库代码优化:创建userModule

慕娘4151148

2025-06-20

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

写回答

1回答

Brian

2025-06-24

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


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


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

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


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

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

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

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

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

0
1
慕娘4151148
明白了,多租户每个数据库本来就是存不一样的数据
2025-06-24
共1条回复

NestJS 从拔高到精通,大型复杂业务架构落地实践

NestJS 从拔高到精通,大型复杂业务架构落地实践

153 学习 · 43 问题

查看课程