我为电子商务项目的最佳多租户设置进行了大量研究,但找不到合适的答案。我倾向于使用共享数据库单独的架构设置与MySQL或PostgreSQL。所有租户的表格结构相同。我非常喜欢使用该设置,应用程序代码不需要为每个查询提供额外的WHERE
子句,因此它非常适合开发人员!
现在你也有了共享架构方法,这就是我目前正在使用的方法,但我觉得这对于安全和隔离目的来说是不好的。我想转向另一种解决方案。
该应用程序今年将被+ - 100个网上商店(租户)使用,我预计它会增长到数千个。网上商店的范围从小到大,因此我以后可以选择特定的商店数据并将其放入自己的数据库服务器中。
由于我没有任何单独架构设置的经验,我想知道这是否对我有利。走这条路可能会有什么问题?特别是随着表格结构的变化,这最让我困扰的是。使用PostgreSQL的单独模式方法中使用的模式的限制是什么(我将有100-1000个模式),然后才能进行管理?
答案 0 :(得分:1)
以下是我的观点
块引用
对所有租户使用同一个表的SharedDatabase时,tenantid
列发生隔离很容易,因为您总是添加一个显示tenantid = LoggedInTenantId
的过滤器[LoggedInTenantId =>在登录期间设置]。如果您的ORM中有基本方法,例如EF [我来自.Net],则会自动附加到任何超出代码的查询中。
当您选择共享架构时,如果在租户[网上商店]之间存在共享数据等用例,则不可行。另外,如果你有一个会计师想要审计一个租户的集合,并希望一个仪表板来查看a / c统计数据等,那就不可能了
从缩放的角度来看,如果单个租户或其中一个集合想要扩展,您可以更好地为每个租户分配一个单独的数据库。这比管理模式更好。
考虑您可能对您的产品使用的用例并在此分享,以便我们可以进行此讨论。
HTH