如何在SaaS产品中的多个租户之间共享数据?

时间:2016-02-22 07:29:11

标签: database multi-tenant

我正在开发一个SaaS产品,我们为多个租户提供了两个共享数据库(10-20)。现在我们希望一个租户能够与不同服务器中的另一个租户共享其部分数据。例如,我们有一本书'服务器#1中的表,其中租户1的数据与少数其他租户(如3,4,5)一起保存。在另一台服务器中,我们以类似的方式拥有tenant2的数据。现在,我如何将tenant1(server1)的Book Table的一些行共享到tenant2(server2)。如果这两个租户在同一个服务器上,我可以创建新的关系表来保存这个共享信息。现在有什么问题可以解决这个问题?

我是这种多租户结构的新手,我甚至不知道在谷歌中搜索什么是一个好的关键词来学习这些东西。

我希望找到google和slack如何允许多租户使用xyz.slack.com这样的域名扩展。关于我可以从哪里获得更多信息的任何建议?

1 个答案:

答案 0 :(得分:0)

我不确定您的应用程序的体系结构,例如在租户1和租户2请求时如何解决书籍的连接字符串。

但是,您可以做的是拥有一个具有以下结构的单独表

reference id : tenant ids       : access rights    : isvalid
book1        : tenant1, tenant2 : view_sharedbooks : true

(OR)

reference id : tenantid : userid      : access rights    : isvalid
book1        : tenant1  : u1          : view_sharedbooks : true
book1        : tenant2  : u2          : view_sharedbooks : true

因此,当我以tenant1中的用户身份登录时,我将能够查看我可以访问的相应书籍及其租户。当我知道租户的时候,我将能够查找获得相应的连接字符串。使用它我将能够调用2个异步调用来获取2个数据库中的db记录,并将它们合并到服务层并将其传递给表示层。

这假设您已经处理了必要的基础设施,可以处理连接/租户以及用户和书籍实体的特权等...

HTH。