Ahs*_*san 35 architecture sql-server database-design sql-server-2012
我在思考数据库设计问题.任何帮助将受到高度赞赏.
我们正在设计一个具有20个表的应用程序(在新功能开发期间可能会增加到最多30个表)
技术堆栈
MVC4,.NET 4.X,实体框架5,SQL Server 2012,ASP.NET成员资格框架
没有用户
我们打算迎合大约1000名平均有20名用户的客户.
问题
我们是否应该以对逻辑分区的方式设计数据库和应用程序,即所有客户端使用具有分区guid的相同表来分隔数据.
要么
在新功能启动和错误修复期间,可以使用多个数据库.但是可能允许缩放?
注意事项:其中一个表有一个存储文件的二进制列(每个记录最多5MB)
除此之外,我们还需要考虑Membership框架表,我们将扩展到另一个自定义表,并将用户逻辑映射到分区guid.
Eri*_*ikE 81
您希望您使用过单独的数据库:
AND CustomerID = @CustomerID
.提示:使用脚本化权限工具或模式,或使用包含WHERE CustomerID = SomeUserReturningFunction()
这些视图或其某些组合的视图包装所有表.Customer
因为WHERE CustomerID = @CustomerID
现在不会削减它.你会很高兴你使用单独的数据库:
您希望您使用过单个数据库:
仅仅因为我列出的原因更多并不意味着它更好.
一些读者可能会从这篇MSDN文章中获得价值:多租户数据架构
如果你是闯民宅的2009建筑"多租户",微软有一个很好的文章,是值得阅读这里.它显示了"isolated" (multiple db)
和之间的一些比较"shared" (single db)
.通常,当租户(客户)的数量很大时共享获胜,但是当每个租户的规模很大时,建议采用孤立的方法.
然而,这些考虑只能由有经验的开发人员计算.
仍然如果你设法使用isolated (multiple db)
架构,当它们仍然在同一个实例上运行时,你仍然不会在性能上获得直接的好处.如果您使用shared (single db)
架构,请考虑使用int
而不是guid
,或者sequential guid
如果您仍然需要使用它.
归档时间: |
|
查看次数: |
23131 次 |
最近记录: |