我们正在使用 ASP.NET Core 6 开发 SAAS Web 应用程序的新版本。
这是一个多租户应用程序。使用单个应用程序,我们为多个客户端(租户)提供服务。在每个请求中,我们检查域以获取相应的租户。对于当前版本,我们有每个租户的数据库和一个 MASTER 数据库,其中有租户列表和一些共享数据。
问题是所有租户都在共享一些数据。例如,他们有事件,我们需要搜索所有租户的所有事件。此外,一个用户可以在多个租户中,因此在 MASTER 数据库中,我们拥有所有用户,每次在租户中更改用户时,我们不仅必须在 MASTER 数据库中更新该用户,而且还必须在具有该特定用户的所有租户数据库中更新该用户。它很复杂,但正在工作。
在未来的版本中,我们认为这可能是一个问题,因为我们计划将租户从现在的 70 个增加到超过 2,000 个。此外,还有另一个问题,我们将拥有免费的租户,这些租户将只使用一点功能,并为这些客户端创建一个数据库听起来不是一个好主意,因为我们最终将拥有数百个根本不会使用的数据库。
对于这个新版本,我们正在考虑为所有这些都只有一个数据库。在所有共享表中都有一个 TenantId,并且默认情况下在 DataContext 中按租户筛选,因此我们不会混合租户的数据。这对我们来说不会是问题。
每个租户数据库有 161 个表,有些表有超过 500K 的记录,但在这些情况下,存储的数据主要是整数。
只有一个数据库会更好,还是我们应该继续拥有多个数据库?拥有多个将更加复杂,因为我们开始进行全局搜索,因此我们将需要在主数据库中复制更多数据。但是 ee 担心只有一个数据库的性能。
提前谢谢。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(17条)