我必须使用ASP.NET MVC 3或更高版本以及SQL Server 2008.根据Multi-Tenant Data Architecture帖子,有3种方法可以实现多租户
单独的数据库
共享数据库,独立架构
共享数据库,共享架构
我有以下详细信息:
我想知道您的经验说明哪种方法更适合考虑经济和安全的项目?有没有与此类似的好的实时示例(开源项目)?我可以为项目使用一个专用服务器。
答案 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时,这不是一个考虑因素。