锁定老帖子 主题:华为面试,就一个问题,月薪2.5w
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2015-12-09
问题如下,我已经滚蛋。 多级对多级的授权问题。 举一个例子:电脑里面有很多文件夹,文件夹自然有层级关系(不超过16级),公司里面有很多人,很多部门,类似于也有多层级关系。 关键点: 1. 对文件夹进行授权,可以授权给个人,也可以授权给部门。 2. 个人权限覆盖部门权限。 3. 要求授权能在3秒之内完成。 4. 要求搜索文件时自动判定权限,只展示给个人有权限的文件。大数据情况下(文件和文件夹>3000w,2000<人数<20000,部门<2000)下能够在3秒钟出结果。 5. 不限制硬件。 我的答案: 提供了两种常规思路,都被否定。 1. 授权时将文件夹(因为只对文件夹授权)和对应的部门对应的人统统写入数据库。写入(a*b条数据) 不满足第三个要求。被否。 2. 只写入对应关系(a*1),不满足3s搜索。被否。 注:a 代表a目录和a以下的的所有目录。b代表b部门和已下的所有人。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2015-12-09
谁能解我心中遗憾????????
|
|
返回顶楼 | |
发表时间:2015-12-09
BTree
|
|
返回顶楼 | |
发表时间:2015-12-09
建立两个数据表
部门权限(部门ID, URI ) 一个部门可以有多个权限 个人权限 (用户ID , URI) 一个用户可以有多个权限 假设用户(UA=174)有独立权限 /f1/f11/* /f3/* 写入数据库: 个人权限 ( 174 , "/f1/f11/*") 个人权限 ( 174 , "/f3/*") 1ms完成授权 用户所有部门(DA=204)有权限 /f1/f14/* /f3/* 写入数据库: 部门权限 (204 , "/f1/f14/*") 部门权限 (204 , "/f3/*") 1ms完成授权 用户搜索文件,先查找部门权限有权限的文件夹URI,然后查询个独立权限的URI , 合并有包含关系或相同的 URI, 那么可以得出用户所有权限为 /f1/f11/* /f1/f14/* /f3/* 搜索文件耗时不随系统总文件数大量增加,对个人文件的搜索影响微小,实际耗时仅与该用户已授权文件总数成正比 |
|
返回顶楼 | |
发表时间:2015-12-10
部门表
(DID等等) 人员表 (UID等等) 部门人员关系表 (RID,DID,UID等等) 部门人员授权表 (RID,permission_code,文件夹路径等等) permission_code 采用十进制,类似于Linux权限行使 00-无权限,01 读权限,11写权限 0101==》5(代表部门和个人都有读权限) 那么授权的时候,就可以根据实际情况进行与或运算了 授权一次SQL搞定,查询也可以一次SQL搞定。 个人想法,仅供参考。 |
|
返回顶楼 | |
发表时间:2015-12-10
某个面试者成功解答了这个问题,然而依然滚蛋了,然后面试官拿着答案屁颠屁颠跑去领导说,瞧我把这个难题给解决了!yes!
|
|
返回顶楼 | |
发表时间:2015-12-10
二进制权限控制 具体自己 百度
|
|
返回顶楼 | |
发表时间:2015-12-10
初级程序员,看LDAP能否实现
|
|
返回顶楼 | |
发表时间:2015-12-10
设计表如下,想怎么查就怎么查:
机构表 人员机构表 人员 人员文件夹表 文件夹表 机构文件夹表 |
|
返回顶楼 | |
发表时间:2015-12-10
最后修改:2015-12-10
用redis存,建几张表:以人为KEY的权限数据、以部门为KEY的权限数据、部门,人员对应关系。
|
|
返回顶楼 | |