我在所有租用的数据库上都有一个完整的多租户数据库和TenantID。这一切都很好,除了现在我们要求允许租用的数据库“链接”共享数据。因此,例如,用户可以创建自己的“银行”记录并将帐户链接到他们,但他们也可以将帐户链接到所有租户共享的“全球”银行记录。
我需要一个优雅的解决方案来保持参照完整性
到目前为止我提出的方法:
所以,我的问题分为两部分:
答案 0 :(得分:3)
一位同事给了我一个运作良好的见解。而不是考虑租户访问作为每个租户认为它作为组访问。租户可以属于多个组,包括它自己的指定组。然后,数据属于一个组,可能是租户的特定组,或者可能是更普遍的组。
因此,“我的银行”属于租户组,“本地银行”属于租户可以访问的区域分组,“全球银行”属于“所有人”组。
这保持了诚信,FK,并且还增加了租户等级的可能性,而不是我在我的场景中需要的东西,但是很小的可能性。
答案 1 :(得分:0)
在Citus,我们正在使用PostgreSQL构建一个多租户数据库。对于共享信息,我们将其保留在我们称之为"reference" tables的内容中,这些内容确实在所有节点中复制。但是,我们使用2PC保持同步和一致,并且还可以在引用和非引用数据之间创建FK关系。 您可以找到更多信息here。