我正在开发多租户应用程序,我对架构本身没有任何问题。我发现很难让客户表在租户之间共享。这是因为同一客户可以订阅多个租户。我不想拥有相同的重复数据,因此用户应该只注册一次并能够订阅任何具有相同凭据的租户。
我试图浏览互联网,但找不到任何好的资源(可能是我使用了错误的关键字)。对于解决此问题的任何帮助(包括体系结构名称,如果有的话),我将不胜感激。
如果我不清楚,请告诉我。
我正在开发多租户应用程序,我对架构本身没有任何问题。我发现很难让客户表在租户之间共享。这是因为同一客户可以订阅多个租户。我不想拥有相同的重复数据,因此用户应该只注册一次并能够订阅任何具有相同凭据的租户。
我试图浏览互联网,但找不到任何好的资源(可能是我使用了错误的关键字)。对于解决此问题的任何帮助(包括体系结构名称,如果有的话),我将不胜感激。
如果我不清楚,请告诉我。
可以通过多种方式实现多租户;不透明的多租户并不一定意味着每个租户都有一个模式的设计。也可以通过向每个表添加“租户 ID”列来实现。例如,这就是 SAP 长期以来一直采用的方式。
将此原则应用到您的设计中,您将向所有需要多租户的表添加“租户 ID”,而“客户”表则没有。相反,您需要添加一个包含两列的“tenant_customers”表;“租户 ID”和“客户 ID”将客户与租户相关联。维基百科称这个概念为Associative Entity。
或者,您可以将特定于租户的数据存储在每个租户的一个模式中,并将客户表和“tenant_customers”关联表存储在其自己的模式中。您可以使用存储“租户模式名称”的字符串代替“租户 ID”。