【发布时间】:2014-03-07 14:51:21
【问题描述】:
我有一个代表层次结构的数据结构。
- 文件夹
- 文件夹
- 文件夹
- 文件
- 文件
- 等
- 文件夹
权限存储在一个平面表中:
| pKey | type | bitperms |
在执行搜索等全局操作时,我们需要在树中递归地检查权限。
检查与树结构的各个叶子内联的权限很容易。然而,考虑节点上的权限需要两种已知方法之一:
- 在获取过滤后的叶子后,对每个叶子进行后期处理以检查其父母权限
- 费用推迟到之后
- 可能找到了很多初始叶子,但在处理父母之后,什么都没有留下,导致做无用的工作
-
提前计算所有根(授予权限的节点),并在获取叶子时将其用作查询过滤器
- 如果存在许多根,可能会导致巨大的查询,从而导致处理每个叶子花费过多的时间
是否存在任何算法可以更有效地执行此操作?也许重新组织权限数据或向层次结构添加更多信息?
也许添加一些启发式方法来处理极端情况?
【问题讨论】:
-
理论上还有其他方法,但它们需要数据结构支持,并且几乎可以肯定不会在您喜欢的数据库中实现。方法一中的叶子列表来自哪里?
-
方法一中的叶子来自对叶子表的查询,加入了权限。因此,初始查询时满足叶权限。
-
最近我很想同时执行并行操作和合并结果。
-
解决这个问题的另一种方法是通过在深度、宽度、每个节点的叶子数量上设置边界来管理树的灌木丛......但我不确定我会成功在卖那个。
-
嗨,@Ray!您是否为此找到了最佳解决方案?我有同样的问题,但更广泛一些,因为一切都是我树中的文件夹。
标签: algorithm permissions computer-science computer-algebra-systems