多租户隔离数据库的DAL和配置的最佳实践

时间:2013-01-09 08:00:54

标签: c# asp.net iis data-access-layer multi-tenant

我的公司拥有十几个网站和独立的数据库(相同的模式)。 每个客户都有自己的网站(不同的应用程序池)和数据库。

每个网站都有自己的配置,多个连接字符串,但它们都具有相同的配置架构。

cust1.domain.com

cust2.domain.com

cust3.domain.com

我们希望将所有网站合并为一个(单个应用程序池)并保留隔离的数据库,以确保安全性和大量数据。

设计DAL及其配置的最佳做法是什么? 如果大量的租户将在同一时间,它的含义是什么?一个应用程序池可以管理这种情况,还是可以以某种方式管理它?

顺便说一下,我们正在使用asp-membership进行用户身份验证。

提前致谢, 艾迪

3 个答案:

答案 0 :(得分:0)

Application_PostAuthenticate中使用global.asax事件加载正确的数据库,然后在Application_EndRequest

中关闭连接

答案 1 :(得分:0)

一种选择是在成员资格中使用配置文件并存储一条信息,以便您确定它们应连接到哪个实际数据库。缺点是您需要在用户会话期间存储此信息,因此可能需要cookie或会话变量。

一个站点与多个站点的含义在很大程度上取决于您的环境和应用程序,您目前在一个盒子上有多个站点,或者您是否拥有Web场?你知道每个站点的并发用户数,流量吗?性能监视器可以帮助您查看每个站点的繁忙程度,但您可能需要更多的侵入式日志记录来确定并发用户等指标。我在IIS 7性能周围找到了this服务器故障问题可能会有所帮助

答案 2 :(得分:0)

您可以尝试从多租户数据架构中“使用不同架构共享数据库”。在您的DAL中,您可以选择与当前用户相关的特定架构。以这种方式简单安全

继续阅读http://msdn.microsoft.com/en-us/library/aa479086.aspx