我正在实现一个文件系统。每个文件夹都有一个 ACL,它基本上只是一个允许读取/写入文件夹的用户 ID 列表。我想通过将 ACL 从上层文件夹复制到下层文件夹来实现这一点 - 我想要继承权限,但我不想在读取时查找它们。我将文件夹之间的关系存储为对子文件夹中超级文件夹的引用。
那么,以下操作顺序很难用 HRD 解决:
- 将文件夹 B 作为文件夹 A 的子文件夹放入数据存储中,该文件夹已存在。
- 更改 A 的权限。
问题是,当我在步骤 2 中更改 A 的权限时,我需要查找 A 的所有子级,以便我也可以将权限更改应用于它们。不幸的是,这意味着查询,因此 B 可能不会出现在该查询中。B 可能会错过权限更改!
到目前为止,我想到的唯一解决方案是双向存储“子文件夹”关系:A 引用了它的所有子文件夹,B 引用了它的超级文件夹。然后我可以使用跨组事务同时更新 A 和 B,并且不需要在步骤 2 中进行查询。这可能会更好,因为直接获取可以轻松缓存,不需要索引扫描等。
有人有其他想法吗?我不喜欢这个解决方案的冗余存储需求,或者 XG 事务的需求。