多租户应用程序 - 数据隔离和数据库查询路由

时间:2018-02-14 13:44:45

标签: sql-server node.js

我正在后端构建一个带有NodeJS和MSSQL的多租户应用程序,它将运行一个实例。我考虑使用基于模式的多租户架构,这意味着每个租户`[Tenant1]。[DataTable1],[Tenant2]。[DataTable1]`。

的单个数据库具有单独的模式。

我的问题是,实现这一目标的更好方法是如何处理正确的"路由"来自不同租户的SQL查询?

我带来了四种解决方案:

  1. 使用连接池 - 每个租户用户将与不同的数据库用户(具有默认架构并仅访问它)具有单独的SQL连接。
  2. 使用单个SQL连接,但为每个查询添加EXECUTE AS USER = 'Tenant1' .. REVOKE(数据库用户具有默认架构并只能访问它)。
  3. 或者使用单一架构共享数据库

    1. Row-Level Security,但似乎它可能有performance impact
    2. 添加Tenant_table并在每行中插入tenant_id

0 个答案:

没有答案