我说multi-tenant
是什么意思?
问题
作为一个专家,你认为这是一个不可能的数据模型来设计云修复吗?一个能做到这一点的数据模型是什么样子?
发布于 2019-03-09 02:00:16
作为一个专家,你认为这是一个不可能的数据模型设计的防火墙?
肯定不是不可能的,其实很简单。
一个能做到这一点的数据模型是什么样子?
用于用例的可能的数据库架构可能是:
Firestore-root
|
--- users (collection)
| |
| --- uid (document)
| |
| --- organizations: ["organizationId", "organizationId"] (array)
| |
| --- //Other user properties
|
--- organizations (collection)
|
--- organizationId (document)
|
--- users: ["uid", "uid"] (array)
|
--- //Other organization properties
|
--- organizationData (collection)
|
--- organizationDataId (document)
|
--- //Organization Data properties
用户可以属于一个组织。
如您所见,用户的id被添加到users
数组中,这是每个organizationId
文档中的一个属性。在数组中,可以添加属于该特定组织的所有用户的所有用户ids。
在没有任何人邀请的情况下注册的用户将被放置在他们自己的组织(blah123)中作为其管理人员。
一旦用户注册,就可以通过生成一个新的organizationId
并在users
数组中添加用户的内容来创建一个新的组织。
多个这样的用户是在同一个基于防火墙的应用程序中他们自己的单个组织的创建者。他们可以邀请其他人,也可以邀请那些被邀请加入创始人的组织。
上面回答了。
为该组织创建的任何数据或该组织的用户创建的任何数据都应从其他组织的用户中获取。
如您所见,我已经在organizationData
文档下创建了一个名为organizationId
的子集合,您可以在其中添加作为文档组织数据的内容。因为您已经拥有了这个组织的用户的uid,所以您可以使用Firestore安全规则只允许那些用户读取这些数据。
如果需要,我们应该能够配置属于同一组织的用户,以查看该组织的其他用户创建的任何数据。
在这种情况下,当用户加入一个组织时,您应该首先获得该组织的所有用户对象,然后查询数据库以获取这些用户所属的所有组织,并在所有这些组织中复制uid。
(就是这样:)
https://stackoverflow.com/questions/55074267
复制