每个客户端或一个数据库中的所有客户端一个数据库



我必须在SQL Server中为我的项目设计一个数据库结构,作为管理信息系统。

我有一个主数据库,每当一个新组织订阅我们的基于Web的应用程序时,我的系统就会为该客户端创建主数据库的新副本。随着时间的流逝,客户次数增加,因此客户端数据库的数量也会增加。

这是我正在使用的好方法,还是我必须为所有客户使用一个数据库?

no,每个客户端创建一个数据库,假设客户端只是数据库中的一个实体,而不是多租户应用程序的单独用户,这不是一个好主意。p>如果您想在客户端下注册其他实体,例如硬件,项目或其他资源,则将要么存储在单独的表中,并创建从资源到客户端的外键,表明" has-a"关系。

看起来像这样:

客户端

Id Name
1  Foo
2  Bar

资源

Id ClientId Name 
1  1        Resource of Foo
2  1        Resource of Foo
3  2        Resource of Bar

您也可以使用上述方法使用多租户系统,在该系统中,所有应用程序的所有用户都在同一数据库和应用程序上运行。

采用这种方法,您会有不同的担忧。例如,单个数据库可能会超出比例,损害性能以及备份和还原的便利性。您必须在整个应用程序中添加任何数据库访问到当前用户拥有权限的行中的支票。回滚一个用户的操作可能会更难,并且为特定用户引入新功能(因为它们都在同一软件和数据库架构上运行)。

阅读更多有关"多端"一词的信息,这就是您要寻找的内容:

  • Wikipedia:多重
  • MSDN:多租户数据体系结构
  • 多租户:每个租户的单个数据库
  • ASP.NET具有特定角色的Multi tenant应用程序

回答如何实现多次太宽,例如,请参见上面链接中有关它的MSDN博客系列。至于表演问题:只有你知道。这完全取决于您的代码,数据,模式,硬件等。基准测试。

相关内容

最新更新