关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
7年前关闭。
Improve this question
我正在考虑一个数据库设计问题。任何帮助将不胜感激。
我们正在设计一个有 20 个表的应用程序(在新功能开发过程中可能会增加到大约 30 个)
技术栈
MVC4、.NET 4.X、Entity Framework 5、SQL Server 2012、ASP.NET 成员资格框架
用户数量
我们打算迎合大约 1000 个平均拥有 20 个用户的客户。
问题
我们是否应该以表逻辑分区的方式设计数据库和应用程序,即所有客户端使用相同的表和分区 guid 来分隔数据。
或者
寻找多个数据库,这在新功能发布和错误修复期间可能会很困难。但是可能允许扩展?
注意事项:其中一个表有一个存储文件的二进制列(每条记录最大 5MB)
除此之外,我们需要考虑 Membership 框架表,我们将扩展到另一个自定义表并将用户逻辑映射到分区 guid。
最佳答案
你会希望你使用了单独的数据库:
AND CustomerID = @CustomerID
的查询漏掉时.提示:使用脚本化的权限工具或模式,或使用包含 WHERE CustomerID = SomeUserReturningFunction()
的 View 包装所有表。 ,或这些的某种组合。 Customer
之上的抽象层时因为 WHERE CustomerID = @CustomerID
现在不会剪了。 你会很高兴你使用了单独的数据库:
您会希望您使用的是单个数据库:
仅仅因为我列出了更多的原因并不意味着它更好。
有些读者可能会从 MSDN: Multi-Tenant Data Architecture 获得值(value).或者也许 SaaS Tenancy App Design Patterns .甚至 Developing Multi-tenant Applications for the Cloud, 3rd Edition
关于sql-server - 多个数据库与具有逻辑分区数据的单个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21844479/