我们基于ASP.NET Core和EFCore开发了更大的SaaS应用程序。我们通过数据库分离租户,意味着每个租户都有一个数据库。
客户端通过自定义中间件在任何传入请求上迁移数据库。这是必需的,因为在租户注册我们的SSO服务器后应立即提供应用程序。
所以管道看起来像这样:
不幸的是,这有一些缺点,我后来才认识到:
冗长的介绍,简短的问题:任何人都可以判断这种迁移工作流程是否是一种好的做法?如果不是:您是否更了解如何实现多租户?
我在EFCore 2.0中读到了全局查询过滤器,但我不确定这种方法对数据隔离的安全性。
谢谢!
答案 0 :(得分:5)
我认为每个租户创建一个数据库是不切实际的。如果你有2000个租户,那么你必须维护2000个数据库实例!
我建议为所有应用程序和租户使用1个数据库。并为大多数表添加TenantId
,以便您可以找出此特定记录属于哪个租户。