asp.net 如何在.NET 7上为同一应用程序上的每个客户端管理多个数据库

7vux5j2d  于 4个月前  发布在  .NET
关注(0)|答案(1)|浏览(68)

已关闭。此问题为opinion-based。目前不接受回答。
**要改进此问题吗?**更新此问题,以便editing this post可以使用事实和引文来回答。

上个月关门了。
Improve this question
我需要一个建议。我有一个.Net MVC应用程序,我想给予给多个客户。
我想做的是为每个客户使用相同的部署应用程序。
我正在考虑为每个客户创建多个数据库,并在每次有人登录应用程序时更改连接字符串。
这是一个好的方法吗?或者有更好的选择?
以及如何管理它和数据库之间的变化在我的.Net 7应用程序?

mwecs4sa

mwecs4sa1#

你似乎在问什么是所谓的“多租户”。

独立数据库

为每个客户使用单独的数据库是一种选择。这是相当安全的,因为您将一个租户的数据与其他租户隔离。如果有保证和需要,您甚至可以在单独的服务器上运行每个数据库。
缺点是您必须设置和管理多个数据库-每个租户一个。
如果在部署和设置多个数据库后需要更改模式,这就变得特别麻烦。这不是一个不可逾越的障碍,因为数据库往往是相当自动化的,但你需要考虑到这一点。
您还需要分别备份每个数据库。

单库

另一种选择是使用单个数据库,但基于TenentID列或类似列跟踪租户。
这意味着您必须小心地始终过滤该列上的任何查询结果,并确保在写入数据库时始终包含该列。
在某些行业(医疗、数字基础设施等)中,还可能存在进一步的法律的后果,您必须说服审计人员您对租户数据进行了令人满意的分离。
另一方面,这种方法的优点是您只需要设置和操作单个数据库。

混合方式

您可以通过从 single database 设计开始,将两者合并。即使您有这样的设计,它也不会阻止您为选定的租户创建数据库模式的单独副本。代码仍然会使用TenantID列,但所有行都将具有相同的值。
这甚至更复杂,但在有许多小租户和几个大租户的情况下可能很有用。大租户有自己的数据库(因为他们为此支付额外费用,或者只是因为他们有太多数据),小租户共享一个数据库。
这种方法的缺点是上述缺点的结合。
我敢肯定,有更多的选择比这三个,所以一定要阅读了 * 多租户 *。

相关问题