【发布时间】:2013-12-26 20:19:02
【问题描述】:
目前正在开发预订管理系统。这是一个多租户应用程序,将有大约 50 个租户。
我们计划将这个ASP.Net MVC4/SQL Server 2008 应用程序托管在一些托管服务提供商中,例如 winasp.net 等(尚未决定)
Business Model Diagram
上面的图片描述了超级管理员,租户管理员,客户服务,医生等许多级别的用户。
为了实现这个作为数据库模型,我们选择了MSDN Multitenant Data Architecture 中提到的Shared Database with Shared Schema 方法
意味着我们添加了一个列TenantId in each table
我们的共享数据库和共享架构决策是基于以下内容做出的
租户数量 (50 +)
易于在租户之间共享通用元数据
如果租户有更多数据量,则将大租户(一/二)移动到单独的实例中
我们现在正在进行中,我们仍然害怕解决以下问题
数据安全 -> 每次都需要通过/检查 TenantId
单租户备份 --> 需要编写 SQL 查询进行备份,备份时考虑外键/自动增量很头疼
数据量。单库存储所有租户数据,查询数据慢
索引(不确定是否需要索引每个表中的所有TenantId列,因为它涉及所有WHERE
还有其他选项,例如
- 单一数据库/租户
- 共享数据库,独立架构
另外This Article 增加了一些方法
我们希望为我们当前的设计提供一些建议/更好的设计。
新方法匹配上述业务图
租户管理员/客服用户必须能够查看子租户记录
查询性能
租户之间共享通用元数据
租户特定元数据
租户特定数据字段(可选)
轻松备份
【问题讨论】:
-
我认为这太宽泛了,无法用一个问题来回答。将这些分解为有关您在实现中遇到的编程问题的具体问题可能是明智的。
-
我提出这个问题是为了获得一些最少的信息/建议,以帮助我以正确的方式实施。在阅读了很多文章并没有找到我在这里提出的适当线索之后,只需更高级别的建议就足够了。
-
我无法提供 200 赏金,因为没有可用的赏金链接,因为它已关闭 :(
标签: sql sql-server asp.net-mvc database-design multi-tenant