SQL Server 2008建议使用哪种多租户方法

时间:2012-12-27 09:48:19

标签: sql-server asp.net-mvc database-design architecture multi-tenant

我必须使用ASP.NET MVC 3或更高版本以及SQL Server 2008.根据Multi-Tenant Data Architecture帖子,有3种方法可以实现多租户

  1. 单独的数据库

  2. 共享数据库,独立架构

  3. 共享数据库,共享架构

  4. 我有以下详细信息:

    1. 用户应该能够备份和恢复他们的数据。
    2. 租户数:1000(约)
    3. 每个租户可能属于不同的域名(网址)。
    4. 必须支持对租户的监督和管理。
    5. 必须支持每个租户的用户身份验证和授权
    6. 必须支持租户自定义(启用禁用功能设置)
    7. 每个租户中没有表格:100(初始)
    8. 我想知道您的经验说明哪种方法更适合考虑经济和安全的项目?有没有与此类似的好的实时示例(开源项目)?我可以为项目使用一个专用服务器。

2 个答案:

答案 0 :(得分:1)

用户应该能够备份数据的要求可以通过方法1和方法2轻松实现,因为它将是本机数据库任务。

如果您处于方法3(共享共享),则需要开发逻辑以提取属于单个租户的所有行,并将其导出到xml文件或类似内容中。然后,如果您需要允许用户恢复该备份文件,则需要开发恢复逻辑。

我认为这是唯一可以让你摆脱#3的要求。

使用表中的TenantID列设置数据库...如果您的客户非常关注安全性,您可以轻松地为1个租户或一小组租户使用一个数据库。例如,您可以拥有一个数据库,其中包含未支付的租户(免费/模拟账户)和另一个支付客户。这样您就可以使用方法#3,但如果需要,可以表现为#1。

::: BONUS :::

<强> AUTHENTICATION: 您将需要扩展MVC3应用程序中使用的SQL成员资格和角色提供程序...以便用户登录仅在其所属的承租人中有效。

多个域 在这里,您可以看到使用ASP.NET MVC3路由的一些方法:  MVC 3 Subdomain Routing

答案 1 :(得分:0)

我总是使用(3)共享数据库,共享架构。

如果你想要一个例子,如何使用Wordpress,Joomla或任何其他流行的开源基于Web的项目?

基于每个租户创建单独的模式或数据库将导致大量的管理开销。更不用说分析数据,成本等的复杂性增加了。

您选择(1)(或者可能是2)的唯一原因是您要让您的实际租户直接访问部分/全部数据库。当您使用ASP.NET MVC 3时,这不是一个考虑因素。