老师,后面还有关于数据库的内容吗?
来源:15-5 [最佳实践]数据库代码优化:创建userModule

慕娘4151148
2025-06-20
我还是不太理解这个多租户,读取数据没啥问题,写入数据是每个数据库都写入吗?如果有一个失败了那数据库之间的数据不就不一致了吗?事务怎么加?
写回答
1回答
-
Brian
2025-06-24
你这个问题要分几个点来回答:
多租户是什么?简单来说,不同租户可能拥有不同的数据隔离级别
读取数据没啥问题,写入数据是每个数据库都写入吗?不一定,取决于你采用的多租户模型。比如,是多个租户一个数据库,一般是秀tenant_id来区分;多个租户,不同的数据库,不同租户的数据写入到不同的数据库,读取当然也是分别读取。所以:
每个租户只写自己的数据库,不会给所有租户写同样的数据
如果有一个失败了那数据库之间的数据不就不一致了吗?事务怎么加?
是的,如果你在多个数据库写入时没有使用分布式事务,一部分成功、一部分失败,确实会导致不一致。
一般在分布式的场景下,传统数据库无法覆盖这种业务场景。可以考虑:分布式事务、异步补偿、数据复制(一写多同步)等策略。
在nestjs中,可以考虑使用seata来做!
而异步补偿,很多缓存工具或者队列都可以做,每个步骤执行成功后写入事件表(存入之前的缓存),如果后续失败,系统触发“补偿逻辑”将前面操作回滚。
012025-06-24