Эффективное наследование прав в папке / файловой системе - PullRequest
0 голосов
/ 25 февраля 2012

Я пишу виртуальную файловую систему на Java для домашней работы.Я создаю очень простые правила доступа, которые состоят только из трех разрешений: Чтение, Изменение, Удалить.Поскольку дерево файловой системы расширено, так что пользователь может выбирать любые файлы / папки на любом уровне.Когда пользователь изменяет разрешение папки, все файлы / папки в этой папке также должны наследовать изменения и обновлять свои собственные разрешения.Но обновление всех узлов может быть неэффективным, когда дерево становится действительно глубоким или, например: разрешение родительского узла изменяется после того, как разрешение дочернего узла было изменено, тогда кажется, что могут возникнуть некоторые избыточные работы.Как я могу сделать это более эффективным, чем просто обновить все ветви этого измененного узла?

1 Ответ

0 голосов
/ 25 февраля 2012

Существует компромисс между стоимостью обновления разрешений и стоимостью расчета эффективных разрешений объекта.

Например, вы можете ускорить обновление разрешений, сохранив разрешения и отметку времени разрешения. Затем вы рассчитываете действительные разрешения для узла, просматривая пару «разрешение / временная метка» для узла и всех его предков - та, которая имеет новейшую временную отметку, имеет приоритет. Конечно, это означает, что вычисление эффективных разрешений узла выполняется медленнее.

(Тогда вы могли бы ускорить эффективный расчет разрешений с помощью кэша LRU в памяти пар разрешений / отметок времени для каталогов.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...