3

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

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

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

问题:

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

4

1 回答 1

2

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

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

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

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

于 2012-11-04T23:51:47.427 回答