我正在研究使用Orchard CMS为我的SaaS应用程序实现 Multi-Tenancy 门户解决方案。我很高兴看到 Multi-Tenancy 是一流的功能,但是为了实现它,我必须做到以下几点:a)为每个租户创建一个带有表前缀的表集,或者b)具有每个租户的单独数据库。
我正在尝试为10,000多个客户构建解决方案,因此任何需要我对每个租户进行物理数据架构更改的事情都无法扩展。在我们的SaaS应用程序中,我们在所有表上使用一个tenantID列,并使用nHibernate过滤器和大量索引以允许我们扩展。
我想在 Orchard 做同样的事情。因此,我希望为每个租户提供一个表,而不是为每个租户提供一个表,然后再在数据访问层(NHib)中使用过滤器以始终提取正确的数据。
问题:
1)这可能吗?
2)有人这样做吗?
3)对最佳方法有何想法?我打算直接修改MultiTenancy / NHiberate模块源。
最佳答案
可能,但很难做到。
对于Orchard Multi-Tenancy 来说,这也很可能不是一种情况,但是由于没有任何更多细节,我不确定。
此功能最适合需要完全独立的应用程序且(几乎)不应在它们之间共享的应用程序,例如在共享主机中。主要缺点是内存开销,因为每个租户都有自己的整个内部对象基础结构副本。
一个简单得多的方法,而不是试图在圆孔调整 Multi-Tenancy 中放置方钉,是使用单个租户,并从头开始在单独的模块中实现所需的 Multi-Tenancy 方案。你可以例如。具有“租户”内容类型并围绕它构建您的模块。
关于content-management-system - Orchard Multi-Tenancy ,不增加表/数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13220266/