Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
bit или int для организации доступа?
|
|||
|---|---|---|---|
|
#18+
ЦЕЛЬ: Хранить несколько (13-17) типов доступов, ну скажем к "объекту". Доступ может быть составными. Допустим "пользователь 1 имеет доступ 1,2,4,7,9,10..." Сразу оговорим, доступы весьма специфические и встроенный механизмом SQL XXX не уместен. Есть отдельная таблица для их хранения, завязанная есно на пользователя и "объект". Теперь представим, что "объектов" 3-4 млн... И пользователей 200-300... МРАК. ВОПРОС: КАК ВСЕ ЭТО ХРАНИТЬ !? (..рву волосы на голове...). РЕШЕНИЕ: ну это я придумал не обесутьте 1)Ну самый простой понятно делаешь кучу столбцов с типом bit. 2)Нечто вроде механизма хранения доступов в NT-х. Делаем один столбец INT, и далее битовыми операциями | и & каждый раз считаем что моно, а что нельзя... ХОЧЕТСЯ: Услышать ваши коментарии по каждому решению. Спасибо всем огромное. Мои мысли : в 1) Грешат много на использование bit в таких объемах. во 2) Придется постоянно вычислять, передавать кучу параметров, обьявлять кучу переменных... ЕЩЕ РАЗ Спасибо всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2002, 10:16 |
|
||
|
bit или int для организации доступа?
|
|||
|---|---|---|---|
|
#18+
13-17 это не много, вполне можно обойтись и стандартными средствами, нпример как тут предлагают: http://www.sql.ru/articles/mssql/01061605.shtml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2002, 10:30 |
|
||
|
bit или int для организации доступа?
|
|||
|---|---|---|---|
|
#18+
2 Александр Гладченко Возможно вы меня не поняли. Мне требуется давать доступ не к атрибуту, а к кортежу , причем мой "доступ" - как бы это фигурально. А вопрос мой непосредственно связан со скоростью чтения определенных типов данных (int, bit) и выполнения битовых операций над int-ом. Хотя статья познавательная! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2002, 13:11 |
|
||
|
bit или int для организации доступа?
|
|||
|---|---|---|---|
|
#18+
У меня была похожая задача, только в таблицу "доступа" я ввел еще поле [Тип Доступа]. Т.е. у конкретного пользователя на конкретный объект существует определенный тип доступа, при наличии записи в таблице и наоборот. Код на клиенте и серевере простой. Работает достаточно быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2002, 15:15 |
|
||
|
bit или int для организации доступа?
|
|||
|---|---|---|---|
|
#18+
2 MadDog Как я уже писал у меня доступ может быть составным, получается если у меня 20 видов доступа(причем независимые). Если я буду хранить типы то получится 2^20 ~ 1.000.000 ТИПОВ Нехорошо. Спасибо за предложение! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2002, 11:04 |
|
||
|
bit или int для организации доступа?
|
|||
|---|---|---|---|
|
#18+
2 : Попробую пояснить, содержимое таблицы доступа выглядело примерно так: U O A 1 2 3 1 2 4 2 3 1 где U - пользователь, O - объект, A - тип доступа. Т.е., в данном случае, пользователь 1 имеет к объекту 2 два типа доступа - 3 и 4, а пользователь 2 имеет доступ только к объекту 3 и причем только 1-го типа. Пользователь 3 вообще не имеет никакого доступа. Данная схема обеспечивает гибкость в случае появления новых типов доступа - не нужно менять структуру таблицы. Кроме того, код достаточно прост. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2002, 13:30 |
|
||
|
bit или int для организации доступа?
|
|||
|---|---|---|---|
|
#18+
2 MadDog _ Спасибо за содействие! Вот так как раз делать мне и не хочется! Ведь объектов порядка 3-4 млн. и пользователей чуть меньше 240. Каждый пользователь имеет к объекту хоть 1 "доступ" - это строго! ~ 3,500,000 * 240 = и это как минимум. Как-то страшно становиться. Может я зря мучаюсь, но цифры очень впечатляют А почему вам не наравятся изложенные варианты? Хотелось бы услышать мнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2002, 14:42 |
|
||
|
bit или int для организации доступа?
|
|||
|---|---|---|---|
|
#18+
А если поставить вопрос по другому: какой маньяк будет заниматься раздачей/корректировкой прав на 3 млн. объектов? Может быть все-таки у этих объектов есть общие свойства, которые можно выразить с помощью SQL-запросов? У нас работает примерно такая модель: Для каждого вида объектов можно определять разные права. Права отличаются друг от друга описанием и могут быть как стандартного типа ('Select', 'Insert', 'Update', 'Delete' - обрабатываются базовыми классам), так и специфического (обрабатываются наследниками). Каждое право содержит соответствующую ему строку select, которая используется следующим образом: если тип права - 'Select', то прицепляется к условию Where, если 'Insert', 'Update' или 'Delete' то select выполняется при соответствующей модификации объекта и результат проверяется (если нет fetch, тогда говорим - 'Нет прав'). То есть может быть много прав одного типа, отличающихся описанием и строками select. Разнообразие прав ограничено только фантазией и возможностями SQL. Затем эти права раздаются пользователям/группам и автоматически проверяются при всех их действиях. Если право не дано, то действие не разрешается. Если пользователю даны несколько прав одного типа (на один вид объектов), то проверяем все по очереди, пока не удовлетворит (при 'Select' несколько строк соединяются с 'or'). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2002, 03:17 |
|
||
|
bit или int для организации доступа?
|
|||
|---|---|---|---|
|
#18+
Странная какая-то система. Sergey Vinogradov уже заметил сложности с управлением доступом. Действительно, 3М объектов х 1 пользователь х ~20 типов, получается 60М бит доступа - и это минимум. Максимум: 60М х 300 пользователей = 18Г!. Ну ладно, возьмём минимум, посадим умного человека, который держит в голове всю систему, и пусть раздаёт права. Допустим 1 бит в секунду. 60М / 3600 = ~ 17К часов, или ~ 7 лет работы. Нонсенс, не говоря уже о том, что никто не в состоянии запомнить такой объём. Значит: либо будет использовать какой-то алгоритм, и тогда возможно объединение в группы, либо заниматься отфонарным творчеством - тогда для предоставления доступа можно использовать генератор случайных чисел Либо Вы, keystop, что-то не договариваете, говорите одно, а имеете ввиду другое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2002, 10:01 |
|
||
|
bit или int для организации доступа?
|
|||
|---|---|---|---|
|
#18+
2 Владимир Смирнов Каюсь приврал немного, сейчас объектов 1М 200Т, но с пользователями все честно. Если допустить, что система отживет еще 2 года, то все будет как я описывал. ВС>> ...и тогда возможно объединение в группы... ! В точку! Дело вот в чем, сейчас "объекты" (да и пользователи) распределены по ГРУППАМ, но есть такие люди как ... (кому я это говорю), которым после 2х лет работы взбредилось давать права не группе, а объекту. Сами маху дали с администрированием. Я конечно не оправдываюсь ! А сейчас права раздаються группе пользователей на группу объектов, есть еще замороченный механизм привилегий и разрешения конфликтов, но это уже не актуально. 2 Sergey Vinogradov SV>> ...какой маньяк будет заниматься раздачей/корректировкой прав на 3 млн. объектов? Вы мне льстите Конечно как я сказал чуть выже, сейчас есть общие свойства - группы, но от них требуется отказаться. 2 ALL. Коллеги! Прошу поверить на слово, пишу как есть. Дела хуже некуда. Время уже петлю затягивает, а конкреnного сценария до сих пор нет . К сожалению не могу расказать по больше об "объектах", хотя по-моему уже и так все стало понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2002, 00:43 |
|
||
|
bit или int для организации доступа?
|
|||
|---|---|---|---|
|
#18+
Да-а-а, проблема. По моему мнению, проще в использовании много битовых полей, чем их упаковка/распаковка в Int. Пусть сервер собирает биты в байты и обратно, у него это неплохо получается То есть, я, особенно в условиях нехватки времени, выбрал бы битовые поля. Хотя, конечно, могут быть и другие соображения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2002, 06:31 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3511&tid=1824162]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 355ms |

| 0 / 0 |
