我正在从事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)
}
我想使其尽可能高效,因为在授权每个请求时都使用了用户权限。此设计有哪些最佳性能实践?