NoSQL数据建模:不同的配置文件类型

时间:2016-01-05 18:20:00

标签: mongodb database nosql

假设我有一个可以属于组内多个角色的用户。它是这样建模的(来自第三方库)。

{
  _id: '1',
  roles: {
    'repo1': ['contributor'],
    'repo2': ['contributor', 'moderator', 'reviewer']
  }
}

对于每种角色类型,都有不同的配置文件类型。例如,reviewer可能具有如下架构:

{
  approved: [{
    pullRequest: '5678',
    message: 'Now can manage 3D integration',
    when: ISODate()
  }],
  denied: [{
    pullRequest: '1234',
    reason: 'Failed tests',
    when: ISODate()
  }]
}

可能与contributor的个人资料不同。对于他们所处的每个角色,用户仍然可以在每个组中拥有个人资料。

在NoSQL中,您如何管理多种类型的用户配置文件?此应用程序的最正确的架构和关系类型是什么?

1 个答案:

答案 0 :(得分:0)

在您的示例中,我假设审阅者正在批准并拒绝pullRequests。这是您不希望存储在用户文档中的信息,而是偏移到新集合,您可能会调用PullRequests。 PullRequests集合中的每个文档都代表一个PullRequest,您可以在该文档中存储有关该特定PullRequest的信息,包括它是否被批准/拒绝以及随后谁批准/拒绝它以及出于什么原因。在用户文档上存储角色是为了验证目的,以便您可以检查某人是否具有所需权限;有关其活动的记录信息最好留给单独的集合。这是一个明确的关注点分离,这种模型关系将更容易维护。

随意询问任何后续行动。