powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / bit или int для организации доступа?
12 сообщений из 12, страница 1 из 1
bit или int для организации доступа?
    #32021197
keystop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЦЕЛЬ: Хранить несколько (13-17) типов доступов, ну скажем к "объекту".
Доступ может быть составными. Допустим "пользователь 1 имеет доступ 1,2,4,7,9,10..."
Сразу оговорим, доступы весьма специфические и встроенный механизмом SQL XXX не уместен.
Есть отдельная таблица для их хранения, завязанная есно на пользователя и "объект".
Теперь представим, что "объектов" 3-4 млн... И пользователей 200-300... МРАК.
ВОПРОС: КАК ВСЕ ЭТО ХРАНИТЬ !? (..рву волосы на голове...).

РЕШЕНИЕ: ну это я придумал не обесутьте
1)Ну самый простой понятно делаешь кучу столбцов с типом bit.
2)Нечто вроде механизма хранения доступов в NT-х. Делаем один столбец INT, и далее битовыми операциями | и & каждый раз считаем что моно, а что нельзя...

ХОЧЕТСЯ: Услышать ваши коментарии по каждому решению.
Спасибо всем огромное.

Мои мысли :
в 1) Грешат много на использование bit в таких объемах.
во 2) Придется постоянно вычислять, передавать кучу параметров, обьявлять кучу переменных...

ЕЩЕ РАЗ Спасибо всем.
...
Рейтинг: 0 / 0
bit или int для организации доступа?
    #32021201
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13-17 это не много, вполне можно обойтись и стандартными средствами, нпример как тут предлагают:
http://www.sql.ru/articles/mssql/01061605.shtml
...
Рейтинг: 0 / 0
bit или int для организации доступа?
    #32021232
keystop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Александр Гладченко
Возможно вы меня не поняли.
Мне требуется давать доступ не к атрибуту, а к кортежу , причем мой "доступ" - как бы это фигурально.
А вопрос мой непосредственно связан со скоростью чтения определенных типов данных (int, bit) и выполнения битовых операций над int-ом.

Хотя статья познавательная!
...
Рейтинг: 0 / 0
bit или int для организации доступа?
    #32021244
MadDog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня была похожая задача, только в таблицу "доступа" я ввел еще поле [Тип Доступа].

Т.е. у конкретного пользователя на конкретный объект существует определенный тип доступа, при наличии записи в таблице и наоборот. Код на клиенте и серевере простой. Работает достаточно быстро.
...
Рейтинг: 0 / 0
bit или int для организации доступа?
    #32021418
keystop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 MadDog
Как я уже писал у меня доступ может быть составным, получается если у меня 20 видов доступа(причем независимые). Если я буду хранить типы то получится 2^20 ~ 1.000.000 ТИПОВ Нехорошо.
Спасибо за предложение!
...
Рейтинг: 0 / 0
bit или int для организации доступа?
    #32021438
MadDog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 :
Попробую пояснить, содержимое таблицы доступа выглядело примерно так:

U O A
1 2 3
1 2 4
2 3 1

где U - пользователь, O - объект, A - тип доступа.
Т.е., в данном случае, пользователь 1 имеет к объекту 2 два типа доступа - 3 и 4, а пользователь 2 имеет доступ только к объекту 3 и причем только 1-го типа. Пользователь 3 вообще не имеет никакого доступа.

Данная схема обеспечивает гибкость в случае появления новых типов доступа - не нужно менять структуру таблицы. Кроме того, код достаточно прост.
...
Рейтинг: 0 / 0
bit или int для организации доступа?
    #32021454
keystop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 MadDog _ Спасибо за содействие!

Вот так как раз делать мне и не хочется!
Ведь объектов порядка 3-4 млн. и пользователей чуть меньше 240.
Каждый пользователь имеет к объекту хоть 1 "доступ" - это строго! ~ 3,500,000 * 240 = и это как минимум. Как-то страшно становиться.
Может я зря мучаюсь, но цифры очень впечатляют

А почему вам не наравятся изложенные варианты? Хотелось бы услышать мнение.
...
Рейтинг: 0 / 0
bit или int для организации доступа?
    #32021481
Sergey Vinogradov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если поставить вопрос по другому: какой маньяк будет заниматься раздачей/корректировкой прав на 3 млн. объектов?
Может быть все-таки у этих объектов есть общие свойства, которые можно выразить с помощью SQL-запросов?

У нас работает примерно такая модель:

Для каждого вида объектов можно определять разные права.
Права отличаются друг от друга описанием и могут быть
как стандартного типа ('Select', 'Insert', 'Update', 'Delete' - обрабатываются базовыми классам),
так и специфического (обрабатываются наследниками).

Каждое право содержит соответствующую ему строку select,
которая используется следующим образом:
если тип права - 'Select', то прицепляется к условию Where,
если 'Insert', 'Update' или 'Delete' то select выполняется при соответствующей модификации объекта
и результат проверяется (если нет fetch, тогда говорим - 'Нет прав').
То есть может быть много прав одного типа, отличающихся описанием и строками select.
Разнообразие прав ограничено только фантазией и возможностями SQL.

Затем эти права раздаются пользователям/группам и автоматически проверяются при всех их действиях.
Если право не дано, то действие не разрешается.
Если пользователю даны несколько прав одного типа (на один вид объектов),
то проверяем все по очереди, пока не удовлетворит
(при 'Select' несколько строк соединяются с 'or').
...
Рейтинг: 0 / 0
bit или int для организации доступа?
    #32021512
Владимир Смирнов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странная какая-то система. Sergey Vinogradov уже заметил сложности с управлением доступом.
Действительно, 3М объектов х 1 пользователь х ~20 типов, получается 60М бит доступа - и это минимум.
Максимум: 60М х 300 пользователей = 18Г!. Ну ладно, возьмём минимум, посадим умного человека, который держит в голове всю систему, и пусть раздаёт права. Допустим 1 бит в секунду. 60М / 3600 = ~ 17К часов, или ~ 7 лет работы. Нонсенс, не говоря уже о том, что никто не в состоянии запомнить такой объём. Значит: либо будет использовать какой-то алгоритм, и тогда возможно объединение в группы, либо заниматься отфонарным творчеством - тогда для предоставления доступа можно использовать генератор случайных чисел

Либо Вы, keystop, что-то не договариваете, говорите одно, а имеете ввиду другое?
...
Рейтинг: 0 / 0
bit или int для организации доступа?
    #32021546
keystop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Смирнов

Каюсь приврал немного, сейчас объектов 1М 200Т, но с пользователями все честно. Если допустить, что система отживет еще 2 года, то все будет как я описывал.

ВС>> ...и тогда возможно объединение в группы... !
В точку!
Дело вот в чем, сейчас "объекты" (да и пользователи) распределены по ГРУППАМ, но есть такие люди как ... (кому я это говорю), которым после 2х лет работы взбредилось давать права не группе, а объекту. Сами маху дали с администрированием. Я конечно не оправдываюсь !
А сейчас права раздаються группе пользователей на группу объектов, есть еще замороченный механизм привилегий и разрешения конфликтов, но это уже не актуально.

2 Sergey Vinogradov
SV>> ...какой маньяк будет заниматься раздачей/корректировкой прав на 3 млн. объектов?

Вы мне льстите
Конечно как я сказал чуть выже, сейчас есть общие свойства - группы, но от них требуется отказаться.

2 ALL.
Коллеги!
Прошу поверить на слово, пишу как есть. Дела хуже некуда. Время уже петлю затягивает, а конкреnного сценария до сих пор нет . К сожалению не могу расказать по больше об "объектах", хотя по-моему уже и так все стало понятно.
...
Рейтинг: 0 / 0
bit или int для организации доступа?
    #32021587
Владимир Смирнов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да-а-а, проблема.
По моему мнению, проще в использовании много битовых полей, чем их упаковка/распаковка в Int. Пусть сервер собирает биты в байты и обратно, у него это неплохо получается

То есть, я, особенно в условиях нехватки времени, выбрал бы битовые поля. Хотя, конечно, могут быть и другие соображения.
...
Рейтинг: 0 / 0
bit или int для организации доступа?
    #32021643
keystop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Смирнов
А вы не могли бы как-нибудь обосновать свое мнение?

Спасибо за участие!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / bit или int для организации доступа?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]