果园多租赁没有表/数据库扩散

时间:2012-11-04 16:09:11

标签: content-management-system orchardcms multi-tenant

我正在考虑使用Orchard CMS为我的SaaS应用程序实施一个多租户门户解决方案。我很高兴看起来多租户是一流的功能,但看起来为了实现它,我必须要么a)为每个租户创建一组带有表前缀的表或b)有每个租户都有单独的数据库。

我正在尝试为10,000多个客户构建解决方案,因此任何需要我为每个租户进行物理数据架构更改的内容都无法扩展。在我们的SaaS应用程序中,我们在所有表上使用了tenantID列,并使用了nHibernate过滤器和大量索引,以便我们进行扩展。

我想在乌节做同样的事情。因此,不是每个租户的表,我想要一组带有tenantID的表,然后在数据访问层(NHib)中使用过滤器来始终提取正确的数据。

问题:

1)这可能吗? 2)有没有人这样做过? 3)对最佳方式的任何想法?我将直接修改MultiTenancy / NHiberate模块源。

1 个答案:

答案 0 :(得分:2)

这是可能的,但很难做到。

这也很可能不是Orchard多租户的情景,但没有任何进一步的细节,我无法确定。

此功能最适合您需要拥有完全独立的应用程序并且(几乎)不应该在它们之间共享任何内容的情况 - 例如,在共享主机中。主要缺点是内存开销,因为每个租户都有自己的整个内部对象基础架构的副本。

一种更简单的方法,而不是试图将方形钉子放入调整多租户的圆孔中,而是使用单个租户,并从头开始在一个单独的模块中实现您想要的多租户方案。你可以,例如。拥有“租户”内容类型并围绕它构建您的模块。