Content management system Orchard多租户,不增加表/数据库

Content management system Orchard多租户,不增加表/数据库,content-management-system,orchardcms,multi-tenant,Content Management System,Orchardcms,Multi Tenant,我正在考虑使用Orchard CMS为我的SaaS应用程序实现一个多租户门户解决方案。我很高兴多租户似乎是一个一流的功能,但为了实现它,我必须a)为每个租户创建一组带有表前缀的表,或者b)为每个租户创建单独的数据库 我正试图为10000多名客户构建一个解决方案,因此任何需要我对每个租户进行物理数据模式更改的事情都无法扩展。在我们的SaaS应用程序中,我们在所有表上使用一个tenantID列,再加上使用nHibernate过滤器和大量索引,以允许我们进行扩展 我想在果园也这样做。因此,我想要一组带

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

我正试图为10000多名客户构建一个解决方案,因此任何需要我对每个租户进行物理数据模式更改的事情都无法扩展。在我们的SaaS应用程序中,我们在所有表上使用一个tenantID列,再加上使用nHibernate过滤器和大量索引,以允许我们进行扩展

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

问题:

1) 这可能吗? 2) 有人这样做过吗?
3) 对最好的方法有什么想法吗?我打算直接修改MultiTenancy/NHiberate模块源代码。

这是可能的,但很难做到

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

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


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

对不起,我认为这不容易做到。对于10000名客户,我怀疑您也会有很多其他问题,例如内存使用。我也在寻找完全相同的基于作用域的多租户实现。IMHO,为每个租户创建单独的表是一种可怕的方法,我们已经开始感受到为不到50个子站点管理数百个表的巨大开销@Andrew Ryan,如果您继续进行基于范围的实现,我很高兴听到您关于这个实现的消息,以及您的经验/建议。