我有大约 200 000 个对象名称和 20 个角色和 500 个用户。角色分类为 admin、domain1、domain2、domain3、domain4..domain 20
一些角色 (domain1,domain4 ) 只能访问 5 个对象名称,而其他一些角色可以访问 500-20 000 个对象名称。管理员角色可以访问所有对象(200 万)。所以我必须映射管理员角色下的所有对象。所以我的数据模型如下所示。
{_id:1,
Role_name: "admin"
access_objects :{name1,name2 ..........name2000000}
},
{_id:2,
Role_name: "domain1"
access_objects :{name1,name2 ..........name5}
},
{_id:3,
Role_name: "domain3"
access_objects :{name1,name2 ..........name500}
}
..
{_id:5,
Role_name: "domain5"
access_objects :{name1,name2 ..........name5000}
}
这是 mongodb 文档 16mb 限制问题。如上所示,我无法在嵌入式文档中存储 200 万个对象名称以供管理员使用。
所以我们没有将对象名称映射到角色,而是将角色映射到每个操作。我目前的收藏设计如下。,
{_id:1,
object_name: "object_name1"
applicable_roles :{admin,domain1,domain2,domain3,domain4,domain5}
},
{_id:2,
object_name: "object_name2"
applicable_roles :{admin,domain1,domain5}
},
{_id:3,
object_name: "object_name3"
applicable_roles :{domain4}
}
..
{_id:2000000,
object_name: "object_name2000000"
applicable_roles :{domain4,domain1}
}
在这个模型中,我们面临着缓慢的查询响应。一些域只能访问很少的对象名称,但需要大量的嵌入式循环来识别对象。我们已经需要集合上的索引