WackoWiki: AlexKulikov/WackoACL ...

Home Page | Изменения | Новые Комменты | Пользователи | Каталог | Регистрация | Вход:  Пароль:  

Мысли про ACL и производительность


Для начала, думаю, стоит привести небольшой экстракт беседы в ЖЖ касательно ACL.





Страницы статистики генерятся очень долго, потому что надо проверить ACLs к каждой записи. Это одна из причин, по которой они не наследуются на лету.

Ещё одна наследственная проблема — все связи «родитель-ребёнок» и вообще «предок-потомок» существуют только в голове пользователей =). Ключ — супертаг, а не численный идентификатор. Благодаря этому, например, существует страница Page1/Page2/Page3, даже если не создана страница Page1/Page2 и даже если не создана страница Page1.




Более того, тот же мускул много быстрее выполняет запросы c проекциями по полям типа INT нежели varchar. Решив задачу грамотного хранения отпадёт вопрос наследствия ACL, ровно как и дупликация многие запросов при построении статистики (не уверен, но догадываюсь, что дело обстоит именно так).

Фишку с тегами можно решить создавая пустые промежуточные страницы маркируя их неким флагом, чтобы они не попадали в список «wanted pages».


Дополнения:






Роман Иванов

ничего не понимаю =)


но надеюсь, что вы трое договоритесь =)

16.09.2003 15:21:28
Sad Weaselжалко... Я так старалась понятно написать...16.09.2003 15:21:51
Роман Ивановдавай объясню, чего не понимаю =)16.09.2003 15:22:19
Роман Иванов"ACL лежит рядом со страницей" – это как? оно ж в соседней таблице лежит16.09.2003 15:22:33
Роман Иванов"хранить «наборы прав" – из чего оно состоит?16.09.2003 15:22:56
Sad Weasel

>это как? оно ж в соседней таблице лежит


да, но они связаны 1 к 1. Еще сильнее ускорить можено только сложив в ту же страницу, и все.

16.09.2003 15:23:25
Роман ИвановЧто такое "родительская страница"?16.09.2003 15:23:33
Sad Weasel

>из чего оно состоит
Сейчас там напишу.


>Что такое "родительская страница"?
Там дальше написано – это страница, при редактировании ACL которой правится этот набор.

16.09.2003 15:24:16
Роман Иванов

это я видел.


не понимаю пока.
жду про набор пояснения =)

16.09.2003 15:26:13
Sad Weasel«Набор прав» – это три строки, описывающие, кто может читать, писать, комментировать что-то. Что-то не указывается, т.о. набор прав может описывать права на любую страницу.16.09.2003 15:26:34
Sad Weasel

"*", "Вася","$" – это пример набора прав.
Если родительская страница у него "Кластер", то при редактировании ACL страницы "Кластер" ты сможешь его изменить.


При создании страницы Кластер/ПодСтраница в нее не скопируется эта конструкция, а подставится просто ссылка на нее.

16.09.2003 15:29:14
Роман Ивановничего не понимаю =(((((((16.09.2003 15:29:54
Роман Ивановкогда я захожу в правку АКЛ для Кластер/Подстраница, что я там вижу?16.09.2003 15:30:16
Sad Weasel

Ты там видишь "Права этой страницы определяются набором прав <Кластер>" (можно ридонли описание)


И кнопки "Создать тут новый набор прав". "Сменить на другой набор прав"
Около "Сменить" – список всех наборов в системе, включая набор по умолчанию.

16.09.2003 15:32:14
Роман Иванов

уй, нет.


такого не будет.


извини, конечно, но это бред =(

16.09.2003 15:32:42
Kusoне уверен, что это бред.16.09.2003 15:37:15
Роман Ивановя почти уверен16.09.2003 15:38:04
Kusoтолько там галочка стоит
"Использовать настройки доступа от страницы уровнем выше"
и когда ты её отключаешь, то появляются (без перезагрузки страницы, конечно) любимые текстареи аклей. А когда включаешь — пропадают.
16.09.2003 15:38:20
Kusoимхо надо более restrictive ограничения просто наложить на идею и порезать сущность "набор прав"16.09.2003 15:38:42
Роман Иванов

вот такое чуть лучше.


но САМУЮ МАЛОСТЬ имхо.

16.09.2003 15:39:01
Kusoреально наиболее часто используемая фича — это наследование у родителя. я бы даже сказал, это единственно используемая фича этого решения.
она нужная. сейчас я это делаю на группах, но когда групп станет 20–30, это будет пиздец. учитывая, что в каждой группе по 2–3 человека и что группы в группы вкладывать нельзя.
16.09.2003 15:40:15
Роман Иванов

наследования недостаточно.


нужно уметь добавлять к наследуемым наборам некий небольшой пис, ограничивающий или наоборот расширяющий права.

16.09.2003 15:41:04
Kusoа вот это уже пиззздец производительности ощутимый.16.09.2003 15:41:31
Kuso(в два раза, т.е.)16.09.2003 15:41:35
Роман Иванов

я знаю.


а что делать?

16.09.2003 15:41:49
Kusoесли мы на него готовы, то делать его. в полный рост, без малейшего страха и упрёка.
если не готовы, то делать как предлагает визель.
16.09.2003 15:42:22
Роман Иванов

как предлагает визель интерфейсно бред.


как предлагаешь ты – ничуть не лучше того как сейчас – просто мы столкнёмся с другими проблемами. Топологически эквивалентными имеющимся, имхо.

16.09.2003 15:43:14
Роман Ивановпроблемами в использовании, я имею в виду16.09.2003 15:43:26
Kusoтогда решение Макарова лучше, хотя интерфейсно говённей.16.09.2003 15:43:52
Роман Ивановкаково решение Макарова в двух словах?16.09.2003 15:44:06
Sad Weasel

<нужно уметь добавлять к наследуемым наборам некий небольшой пис, ограничивающий или наоборот расширяющий права.>


Ну и чем тебе плох вариант с созданием нового набора на основе предыдущего? UI пока не трогаем, я про механизм.

16.09.2003 15:45:14
Роман Ивановя не понимаю твоего механизма =(16.09.2003 15:45:29
Роман Ивановобновил16.09.2003 15:46:59
Sad Weasel

Так. Еще по-подробнее.


Есть три набора прав "совсекретно", "для друзей", "публично".
"совсекретно" – "Я,Я,Я"
"для друзей" – "Друзья,Я,*"
"публично" – "*,*,*"


ок ?

16.09.2003 15:47:28
Sad Weasel(Это был пример).16.09.2003 15:47:40
Роман Иванов

не ок, я считаю, что такой подход прямо перпендикулярен существующему подходу.


в другом ПО он имеет право на существование, но не в этом.


=(

16.09.2003 15:48:32
Sad Weaselтогда не говори, что ты не понимаешь, а говори, что идеологически не согласен. Это типа очень разные вещи.16.09.2003 15:49:15
Роман Ивановнет, я целиком не понимаю.16.09.2003 15:49:34
Роман Иванова вот этот кусок понял и он мне не нравится =(16.09.2003 15:49:43

YuliaShabunio Главная фишка моего подхода – это производительность.


YuliaShabunioА сам термин «набор прав» можно вообще никому никогда не показывать. Интерфейс можно не менять вообще. Но это плохо тем, что пользователь не увидит, какие права наследуются, а какие он уже поправил и они больше не будут меняться при правке ACL родителя.


YuliaShabunio Если делать из вики «Дерево», то проблема определения, какие ACL менять при правке корня, а какие не трогать, никуда не девается. И ее тоже надо решать.


YuliaShabunio
Я попробовала систематизировать разные подходы к проблеме. И вот что получилось: /Yulia Shabunio / Wacko ACL

Авто Наследствие


Тут пришла идея промежуточного решения для R4 — добавить при изменении ACL флажок «наследовать», судя по структуре БД можно будет изменить все ACL подстраниц одним запросом.

 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]
Donate
Время работы: 1.583 s
Использовано памяти: 2.613 Mb