Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Почти как у асв78. Пермишены и джойны.  [new]
andreykaT
Member

Откуда:
Сообщений: 2181
в общем классика. есть юзер юзерам надо дать права. раньше была роль одна но надо теперь сделать модель с пермишшенами.

ну ок. всё замечательно. делаем как обычно - т.е. таблица пермишены. и таблица юзер-пермишен. всё гут. всё банально и как у всех.
идем дальше - ой у нас слик. про слик и джойны я тут уже вещал. выглядит как гумно. иначе не делается. вариант создавать сущность:
UserPermissions(user:User, permissions:Seq<Permission>) и делать длинные колбасы с палочками и точками в репозитории для джойнов.
-- наверное сойдет.

НО. а если сделать такую модель вообще без джойнов?

есть сущность юзер. у сущности юзер есть поле енамов: пермишшнз. в базе храним просто поле массив стрингов где эти пермишшены и хранятся типа {auditor, watcher, producer} и т.п.

из плюсов: мы избавляемся от джойнов.
из минусов: мы теряем реляцию. мы не сможем лихо скажем,переименовать их. или изобретать велосипед с подсчетом и т.д. и т.п. всё что относится к реляциям.
но тут вопрос: а нужна ли она? я вот не уверен что какие нибудь большие системы вообще юзают реляционные модели.
8 июл 19, 16:35    [21922879]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7699
Вопрос в чем?

Храните все в текстовом файле.
Из плюсов:
1. Мы избавляемся от join'ов
2. Мы избавляемся об базы данных. Profit!
Из минусов:
1. Не подумает ли начальство избавиться и от программистов?

p.s. денормализация всегда была и будет. Но для этого и есть программист. что бы принять решение, требует ли его задача нормализацию или, наоборот, будет лучше денормализовать структуру.
8 июл 19, 17:46    [21922950]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 552
andreykaT,
Уже давно авторизация сидит в отдельной базе или подБазе. И имеет 10-15таблиц.
Смотри спринг. Самому не надо проектировать.
Без спринга EE server.
8 июл 19, 17:53    [21922959]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
andreykaT
Member

Откуда:
Сообщений: 2181
причем тут спринг? в спринге думаешь юзерроль будет по-другому иметь отношения? там точно так же как хранилище и в каком виде это держать будет только ты. у них есть в доках рекомендации но это совсем уж примитивные кейсы.
8 июл 19, 18:06    [21922973]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
andreykaT
Member

Откуда:
Сообщений: 2181
Leonid Kudryavtsev
Вопрос в чем?

Храните все в текстовом файле.
Из плюсов:
1. Мы избавляемся от join'ов
2. Мы избавляемся об базы данных. Profit!
Из минусов:
1. Не подумает ли начальство избавиться и от программистов?

p.s. денормализация всегда была и будет. Но для этого и есть программист. что бы принять решение, требует ли его задача нормализацию или, наоборот, будет лучше денормализовать структуру.

да. вот я и не могу решить нужна она или нет в данном случае. и какие от нее будут профиты. и текстовые файлы тоже решение кстати. но не в данном случае. у меня две опции - нормализованно но с "особенностями" слика (надо лопатить много кода), либо денормализованно - кода меньше, но другие нюансы возникают.
8 июл 19, 18:07    [21922974]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 552
andreykaT
причем тут спринг? в
просто пример жизненный прдумай
В спинге. security уже решены все отношения.
8 июл 19, 18:15    [21922987]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
andreykaT
Member

Откуда:
Сообщений: 2181
PetroNotC Sharp
andreykaT
причем тут спринг? в
просто пример жизненный прдумай
В спинге. security уже решены все отношения.

ничего там не решено. ты вообще в глаза его видел? откуда спринг знает что ты хочешь и как? он тебе только удобный набор конфигурируемых либ даст. а то как ты заюзаешь свои права и где и как - это сам всё делаешь ручками.
8 июл 19, 18:20    [21922992]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 552
andreykaT,

Ok.
Давай без спринг
Картинка с другого сайта.
8 июл 19, 18:47    [21923006]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 552
andreykaT
базе храним просто поле массив стрингов
открываем ee server, admin, security и там указваем поля для связей с юзверем.
В чем вопрос?
Если общий то модель хранения решаешь ты сам. И денормализацию.
Тебе ответили.
8 июл 19, 18:50    [21923009]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
andreykaT
Member

Откуда:
Сообщений: 2181
ты мне отвечаешь на вопрос которого я не задавал.

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

у меня же вопрос был до банальности простой - хранить разрешения в денормализованном виде или в нормализованном.
и вопрос в связи с этим - насколько это целесообразно хранить так и может это вообще с точки зрения дизайна - антишаблон.
8 июл 19, 19:07    [21923015]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 552
andreykaT
ты мне отвечаешь на вопрос которого я не задавал.
ответил я и выше мембер. Денормализация решать тебе.

andreykaT
слову, в спринге ты можешь например, лдап использовать для хранени разрешений и отношений юзеров к ним. вообще без базы. представляешь? :) и без спринга в том числе.
ну и в ee server хоть по почте получай Realm object
8 июл 19, 19:23    [21923024]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 552
andreykaT,
Ну и в GlassFish отношения в web.xml.
8 июл 19, 19:24    [21923026]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 552
andreykaT
с точки зрения дизайна - антишаблон.

Бери одну конкретную колбаску и ее описывай.
Тогда может ответят как сделать без колбаски.
И код не забудь.
8 июл 19, 19:28    [21923030]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
dimonz80
Member

Откуда:
Сообщений: 195
andreykaT
в общем классика. есть юзер юзерам надо дать права. раньше была роль одна но надо теперь сделать модель с пермишшенами.

ну ок. всё замечательно. делаем как обычно - т.е. таблица пермишены. и таблица юзер-пермишен. всё гут. всё банально и как у всех.
идем дальше - ой у нас слик. про слик и джойны я тут уже вещал. выглядит как гумно. иначе не делается. вариант создавать сущность:
UserPermissions(user:User, permissions:Seq<Permission>) и делать длинные колбасы с палочками и точками в репозитории для джойнов.
-- наверное сойдет.

НО. а если сделать такую модель вообще без джойнов?

есть сущность юзер. у сущности юзер есть поле енамов: пермишшнз. в базе храним просто поле массив стрингов где эти пермишшены и хранятся типа {auditor, watcher, producer} и т.п.

из плюсов: мы избавляемся от джойнов.
из минусов: мы теряем реляцию. мы не сможем лихо скажем,переименовать их. или изобретать велосипед с подсчетом и т.д. и т.п. всё что относится к реляциям.
но тут вопрос: а нужна ли она? я вот не уверен что какие нибудь большие системы вообще юзают реляционные модели.


От реляций избавляются когда ACL разрастается до ужаса (N юзеров * M пермишнов -> Inf). Тогда да: плоская модель, битовые маски и т/п, но твоя поделка никогда до таких объемов не разрастется.

Если проблема чисто в slick то выкинь его и пользуй anorm какой-нить Вот наример так
8 июл 19, 23:39    [21923134]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 552
dimonz80
От реляций избавляются когда ACL разрастается до ужаса
тоже вот смотрю. У нас в java прогер напигет 3 раза if и сразу в форум что это некрасиво и нужен паттерн избавления от if.
То есть тема без описания проблемы внятно и указания в теме что Scala.
9 июл 19, 00:15    [21923138]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
andreykaT
Member

Откуда:
Сообщений: 2181
dimonz80
andreykaT
в общем классика. есть юзер юзерам надо дать права. раньше была роль одна но надо теперь сделать модель с пермишшенами.

ну ок. всё замечательно. делаем как обычно - т.е. таблица пермишены. и таблица юзер-пермишен. всё гут. всё банально и как у всех.
идем дальше - ой у нас слик. про слик и джойны я тут уже вещал. выглядит как гумно. иначе не делается. вариант создавать сущность:
UserPermissions(user:User, permissions:Seq<Permission>) и делать длинные колбасы с палочками и точками в репозитории для джойнов.
-- наверное сойдет.

НО. а если сделать такую модель вообще без джойнов?

есть сущность юзер. у сущности юзер есть поле енамов: пермишшнз. в базе храним просто поле массив стрингов где эти пермишшены и хранятся типа {auditor, watcher, producer} и т.п.

из плюсов: мы избавляемся от джойнов.
из минусов: мы теряем реляцию. мы не сможем лихо скажем,переименовать их. или изобретать велосипед с подсчетом и т.д. и т.п. всё что относится к реляциям.
но тут вопрос: а нужна ли она? я вот не уверен что какие нибудь большие системы вообще юзают реляционные модели.


От реляций избавляются когда ACL разрастается до ужаса (N юзеров * M пермишнов -> Inf). Тогда да: плоская модель, битовые маски и т/п, но твоя поделка никогда до таких объемов не разрастется.

Если проблема чисто в slick то выкинь его и пользуй anorm какой-нить Вот наример так

Откуда ты знаешь что у меня за поделка и до чего она не разрастается?

Я бы рад чтоб она не разрослась. Но увы она разрастается.

Отличный совет выкинь слик. Я не хочу его выкидывать потому что он уже заюзан и твой анорм тоже не идеален и в нем косяк будет где нибудь в другом месте. Зачем мне это надо?

Слик странненький но ничего лучше под скалу не придумали пока.
9 июл 19, 01:05    [21923145]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
andreykaT
Member

Откуда:
Сообщений: 2181
PetroNotC Sharp
dimonz80
От реляций избавляются когда ACL разрастается до ужаса
тоже вот смотрю. У нас в java прогер напигет 3 раза if и сразу в форум что это некрасиво и нужен паттерн избавления от if.
То есть тема без описания проблемы внятно и указания в теме что Scala.

У меня есть коллега мы с ним одно время работали на одном проекте так вот он раз зафигачил 6 вложенных ифов. С его точки зрения было почти норм. Наверное твой знакомый. С моей это было нет и отправился он искать шаблон от избавления от 6 не следует ифов
9 июл 19, 01:08    [21923146]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 552
andreykaT,
)) да. С моей т.з. 6 if для машины ничто. Так как я с десктопа начинал. Там в Оси у MS и в коде от MS их сотни. В циклах обработки сообщений.
9 июл 19, 07:04    [21923169]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
andreykaT
Member

Откуда:
Сообщений: 2181
dimonz80
andreykaT
в общем классика. есть юзер юзерам надо дать права. раньше была роль одна но надо теперь сделать модель с пермишшенами.

ну ок. всё замечательно. делаем как обычно - т.е. таблица пермишены. и таблица юзер-пермишен. всё гут. всё банально и как у всех.
идем дальше - ой у нас слик. про слик и джойны я тут уже вещал. выглядит как гумно. иначе не делается. вариант создавать сущность:
UserPermissions(user:User, permissions:Seq<Permission>) и делать длинные колбасы с палочками и точками в репозитории для джойнов.
-- наверное сойдет.

НО. а если сделать такую модель вообще без джойнов?

есть сущность юзер. у сущности юзер есть поле енамов: пермишшнз. в базе храним просто поле массив стрингов где эти пермишшены и хранятся типа {auditor, watcher, producer} и т.п.

из плюсов: мы избавляемся от джойнов.
из минусов: мы теряем реляцию. мы не сможем лихо скажем,переименовать их. или изобретать велосипед с подсчетом и т.д. и т.п. всё что относится к реляциям.
но тут вопрос: а нужна ли она? я вот не уверен что какие нибудь большие системы вообще юзают реляционные модели.


От реляций избавляются когда ACL разрастается до ужаса (N юзеров * M пермишнов -> Inf). Тогда да: плоская модель, битовые маски и т/п, но твоя поделка никогда до таких объемов не разрастется.

Если проблема чисто в slick то выкинь его и пользуй anorm какой-нить Вот наример так

у анорма одна есть неразрешимая проблемка ну или особенность. всё что в кавычках ты там пишешь в своих скл запросах оно сработает или не сработает только тогда когда это вызовут. причем вызвать это могут например, на проде тогда когда ты не ожидаешь. а оно возьмет и сломается. этакий джаваскрипт. в этом плюс слика у него есть дсл который хоть как то сопоставляется с моделью на этапе компилляции. а твой анорм упадет не дорого возьмет.
9 июл 19, 11:35    [21923297]     Ответить | Цитировать Сообщить модератору
 Re: Почти как у асв78. Пермишены и джойны.  [new]
dimonz80
Member

Откуда:
Сообщений: 195
andreykaT
dimonz80
пропущено...


От реляций избавляются когда ACL разрастается до ужаса (N юзеров * M пермишнов -> Inf). Тогда да: плоская модель, битовые маски и т/п, но твоя поделка никогда до таких объемов не разрастется.

Если проблема чисто в slick то выкинь его и пользуй anorm какой-нить Вот наример так

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


Ну че ты начинаешь?! Нормально же общались)))

Анорм - просто маппер без query DSL. Причем маппинг для case class в простейшем случае даже прописывать не надо - генерится макросами из коробки. Этим и хорош. Если надо генерить простые CRUD запросы, то опять немного макросов и тривиальный недо ORM готов))). Для рутины хватит.

andreykaT
в этом плюс слика у него есть дсл который хоть как то сопоставляется с моделью на этапе компилляции. а твой анорм упадет не дорого возьмет.


всё что в кавычках ты там пишешь в своих скл запросах оно сработает или не сработает только тогда когда это вызовут.


А то что нагенерил слик ДСЛем(как и хибер критериа апи) тоже ничего не гарантирует и запросто может не сойтись со схемой БД)) БД и прикладуха - гетерогенны.

Есть еще вариант пытаться лезть с БД во время компиляции и верифицировать запросы через PrepareStatement, но это так себе идея


И ваще мне слик не зашел - писанины много!)))
9 июл 19, 14:31    [21923465]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить