CNode

请问用nodejs 做saas架构的web系统怎么做数据隔离

问答
Ttuohuang发布于5 年前最后回复5 年前8 回复6137 浏览0 收藏

请问用nodejs 做saas架构的web系统怎么做数据隔离,typeorm是否有好的方案做租户数据隔离操作,或者有没有其他的好的实践方案。不想每个操作数据库的地方人工判断,想要一个可以自动拦截sql自动处理识别租户然后再和数据库交互的方法。

查看回复

回复 (8)

D
dengnan123#1·5 年前

m

C
chenkai0520#2·5 年前

一个租户一个数据库

Z
zhennann#3·5 年前

可以一个租户分配一个子域名,通过子域名来隔离数据,但是仍然可以使用一个数据库,参见:多实例/多域名/多租户

T
tuohuang#4·5 年前
引用 zhennann可以一个租户分配一个子域名,通过子域名来隔离数据,但是仍然可以使用一个数据库,参见:多实例/多域名/多租户

@zhennann 我的意思是怎么在操作数据库上全局处理,现在时每个和数据库相关的操作都要根据域名来查找租户id太麻烦了,还容易漏,想通过一个方法在数据操作底层自动处理,不用每次操作都人工识别

T
tuohuang#5·5 年前
引用 chenkai0520一个租户一个数据库

@chenkai0520 这样数据库不好维护,我想要找一个方法,写业务代码的时候不用管哪个域名对应哪个租户,在操作数据库底层自动处理识别,不然每个操作业务代码的地方都要识别域名来操作租户太麻烦,有时候也容易忘,如果那个地方忘记做租户识别了将是灾难性的后果

Z
zhennann#7·5 年前
引用 tuohuang@zhennann 我的意思是怎么在操作数据库上全局处理,现在时每个和数据库相关的操作都要根据域名来查找租户id太麻烦了,还容易漏,想通过一个方法在数据操作底层自动处理,不用每次操作都人工识别

@tuohuang CabloyJS提供了自动识别并处理当前域名/租户的机制 1、采用中间件机制,通过解析域名向ctx注入了不同的instance对象,通过ctx.instance.id来标识当前的租户,参见:多实例/多域名/多租户 2、通过ctx.model封装对租户Id的自动处理,对于常规的crud等操作,不必写租户id相关的代码,参见:CabloyJS: Model

T
tong3jie#8·5 年前

@tuohuang 一般有两种方案:

  1. 通过权限系统,例如RBAC权限模式的,在进行操作数据库之前就进行了鉴权处理,后面操作数据库就模式是安全的; 2.重新实现ORM的增删改查等操作方法或者通过中间件的方式来处理你的租户ID
参与回复
登录后即可参与回复。登录