设计角色和组权限系统-MongoDB

时间:2018-12-03 11:40:48

标签: database mongodb database-design nosql

我正在从事ERM项目,并试图为MongoDB`中的用户,角色和组考虑合适的架构设计。我是数据库设计的新手,目前已经创建了此设计。

  • 用户可以具有一个角色
  • 用户可以是多个组的成员
  • 每个角色和组均具有各自的权限
  • 角色和组都可以添加,删除和更新
  • 用户权限是根据角色和组计算的

用户的权限计算如下:

角色[USER 更新] +组[USER 视图] =用户[USER 视图,更新]
角色[BLOG 拒绝] +组[BLOG 视图] =用户[BLOG 拒绝]

我面临的问题是权限计算,因为这种设计需要在每次组/角色更改时都进行权限计算。如果该组包含数百个用户,则可能会导致性能问题。

User {
    role: String
    permissions: [{
        resource: String,
        value: Number // Read(4), Edit(2), Create(8), Delete(1)
    }]
}

Role {
    name: String,
    permissions: [{
        type: String,
        ref: 'Permissions'  
    }]
}

PermissionGroup {
    name: String,
    users: [{
        type: String,
        ref: 'User' 
    }],
    permissions: [{
        type: String,
        ref: 'Permissions'  
    }]
}

Permissions {
    resource: String,
    value: Number // Read(4), Edit(2), Create(8), Delete(1)
}

我想使其尽可能高效,因为在授权每个请求时都使用了用户权限。此设计有哪些最佳性能实践?

0 个答案:

没有答案