powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / БД пользователей
20 сообщений из 20, страница 1 из 1
БД пользователей
    #36960002
New_Frozen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В компании есть несколько БД, разработанные под определенные приложения. С каждой из БД имеет право работать определенные сотрудники (из написаных Клиентских приложений). Для того, чтобы не дублировать пользователей в каждой из Баз, собираюсь вынести их в отдельную БД и запрашивать их права оттуда соответственно.
На данный момент пользователи хранятся в отдельной табличке в каждой из Баз (на фирме нет домена). Хотел поменять данную структуру хранения и создавать под каждого пользователя свой логин в MS SQL и соответственно его правам задавать права доступа только на необходимые ему таблицы.
Но в некоторых довольно сложных системах встречал другой подход: создается пользователь в БД от которого и выполняются все запросы, а ограничения вынесены только в пользовательский интерфейс.

Хотел попросить совета: где можно почитать полезную информацию по проектированию БД пользователей?
Какой Вы применяете подход?
Опишите подводные камни...

В ближайшее время планируется создание домена, после чего используя Актив Директори будут автоматически импортироваться новые пользователи в БД...

Буду благодарен за все советы :)
...
Рейтинг: 0 / 0
БД пользователей
    #36960054
Фотография SanyL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну пример простой...

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

Я понимаю что эта база маленькая и восстановить ее впринципе можно быстро. Но оцените реально время простоя, думаю это будет около часа (сами понимаете бывают обеды, Ваше нерабочее время или просто в магазин за батоном пошел - не всегда рука на кнопке "восстановить все" :) )...
...
Рейтинг: 0 / 0
БД пользователей
    #36960081
Kirillich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При таком раскладе, БД пользователей выносить на отдельный сервер и реплицировать или доставлять лог шипингом на каждый сервер БД, тогда и есть время на востановление основной БД пользователей и делаеться все централизованно
...
Рейтинг: 0 / 0
БД пользователей
    #36961027
New_Frozen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kirillich,

Не дошел я еще до репликаций :) Пока просто хотел упростить себе и другим работу.

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

А на счет работы с пользователями? Не могли бы вы описать создаете ли для каждого виндового своего пользователя в СКЛ или там есть один, а доступ регламентируется внутренними правами в клиентском приложении? (Возможно есть еще варианты?)

В одной СРМ видел, что пользователь заходило со своими правами только на стартовую страничку, а дальше работал от админского пользователя.

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
БД пользователей
    #36961046
Фотография SanyL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KirillichПри таком раскладе, БД пользователей выносить на отдельный сервер и реплицировать или доставлять лог шипингом на каждый сервер БД, тогда и есть время на востановление основной БД пользователей и делаеться все централизованно

хм... расстреливалбы на месте тех кто так проектирует системы :)

т.е. вместо того чтобы оставить пользователей в своих БД (что опять же не всегда нужно, обычно хватает внутренних механизмов авторизации MSSQL и ОС) мы начинаем городить огороды... уже дошли до реплицирования, за которым надо следить и которое надо поддерживать - скучно? создаем доп проблемы?
...
Рейтинг: 0 / 0
БД пользователей
    #36961137
Фотография SanyL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
New_FrozenKirillich,

Не дошел я еще до репликаций :) Пока просто хотел упростить себе и другим работу.


В данной задаче даже и не доходите... Если руководство грамотное - уволят.

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


Сейчас не критичен - это очень здорово, но зачем допускать этот простой независимо от критичности?

New_FrozenА на счет работы с пользователями? Не могли бы вы описать создаете ли для каждого виндового своего пользователя в СКЛ или там есть один, а доступ регламентируется внутренними правами в клиентском приложении? (Возможно есть еще варианты?)


Тут нет единого совета - каждая система индивидуальна, и требования бывают различны. Мой подход - на клиента выносить минимум логики.

New_FrozenВ одной СРМ видел, что пользователь заходило со своими правами только на стартовую страничку, а дальше работал от админского пользователя.


Это однозначно не правильно!
...
Рейтинг: 0 / 0
БД пользователей
    #36961475
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
New_Frozen,

Видимо если то что у вас сейчас есть работает в такой схеме, то на это были причины. Вы уверены что удалив пользователей в этих БД приложения будут корректно работать?
Если вам лень в каждой БД создавать пользователя - можете создавать их скриптом сразу в нужных БД. Т.е. сделать управление пользователями по всем БД. Это будет и наглядно и удобно. Дальше нужно смотреть что и как использует данные о пользователях. Если все работающие у вас приложения написаны по одному принципу (в чем я лично очень сомневаюсь), то тогда стоит сделать копии и попробовать в тестовом режиме поганять данные.
А если к примеру у вас приложения работают с распределенными узлами - удаление пользователей из базы сразу тормознет всю работу.

Сто раз отмерь - один отрежь.
...
Рейтинг: 0 / 0
БД пользователей
    #36961743
New_Frozen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой БобрNew_Frozen,

Видимо если то что у вас сейчас есть работает в такой схеме, то на это были причины. Вы уверены что удалив пользователей в этих БД приложения будут корректно работать?
Если вам лень в каждой БД создавать пользователя - можете создавать их скриптом сразу в нужных БД. Т.е. сделать управление пользователями по всем БД. Это будет и наглядно и удобно. Дальше нужно смотреть что и как использует данные о пользователях. Если все работающие у вас приложения написаны по одному принципу (в чем я лично очень сомневаюсь), то тогда стоит сделать копии и попробовать в тестовом режиме поганять данные.
А если к примеру у вас приложения работают с распределенными узлами - удаление пользователей из базы сразу тормознет всю работу.

Сто раз отмерь - один отрежь.

То есть, насколько я понял:
1. Пользователи автоматически импортируются в какую-то БД из домена.
2. Автоматическое создание таких пользователей по всем задействованным БД.
3. Задание прав пользователям для определенных приложений.
4. В дальнейшем пользователь будет работать под своей учёткой при запросах к определенной БД и иметь только круг своих полномочий.

Сейчас в наших приложениях не пользователи - это записи в таблицах Users :) А на самом деле приложение выполняет запросы под админом, регламентируются только права на интерфейс приложения по сути. Поскольку такую систему трудно назвать защищенной, то я хотел переделать работу с пользователями и для этого узнаю какие подходы используются и кому что из них нравиться больше :)
...
Рейтинг: 0 / 0
БД пользователей
    #36961797
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
New_Frozen,

Вы поняли неправильно. Мое мнение сводится к тому что сначала необходимо разобраться с приложениями и только потом пытаться что-то оптимизировать. В идеале приложение должно слать запрос с параметрами на сервер, а там уже выполняться (или невыполняться) какие-то действия. Т.е. никакого доступа к БД из приложения напрямую быть недолжно, т.к. заведется какой-то партизан и нагадит где только можно.
Поэтому начинайте с изучения приложений. Поднимите информацию о задачах которые ставились в процессе внедрения приложений. Короче, когда будете знать ответы на все вопросы по вашей ИС, только тогда можно что-то думать менять.
...
Рейтинг: 0 / 0
БД пользователей
    #36962368
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если
New_FrozenВ ближайшее время планируется создание домена а СУБД, как я понял - MS SQL, не понимаю: зачем вы затеваете эти пляски?
...
Рейтинг: 0 / 0
БД пользователей
    #36963329
New_Frozen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой БобрNew_Frozen,

Вы поняли неправильно. Мое мнение сводится к тому что сначала необходимо разобраться с приложениями и только потом пытаться что-то оптимизировать. В идеале приложение должно слать запрос с параметрами на сервер, а там уже выполняться (или невыполняться) какие-то действия. Т.е. никакого доступа к БД из приложения напрямую быть недолжно, т.к. заведется какой-то партизан и нагадит где только можно.
Поэтому начинайте с изучения приложений. Поднимите информацию о задачах которые ставились в процессе внедрения приложений. Короче, когда будете знать ответы на все вопросы по вашей ИС, только тогда можно что-то думать менять.

Часть из этих приложений написаны или доработаны мной.

Я недостаточно хорошо знаю как правильно спроектировать БД и связи между ними, чтобы уменьшить количество дублирующей информации/работы.

В моем понимании:
1. Сис админ заводит пользователя в домене.
2. Пользователь автоматом импортируется в БД.
3. Отдел кадров вносит информацию о пользователе.
4. Данный пользователь становится доступный во всех приложениях, используемых на фирме.
5. Начальники отделов выдают права новому пользователю в своих системах.

Насколько я понимаю при такой организации достигается определенный уровень безопасности, нет необходимости в участии программиста в процессе добавления нового пользователя, легко прикрутить новое приложение (БД) для использования текущего списка пользователей.

Что неправильного в размышлениях?

МОЖЕТЕ ЛИ ПОСОВЕТОВАТЬ ЧТО-ТО ПОЧИТАТЬ ПО ПРОЕКТИРОВАНИЮ СЛОЖНЫХ И МАСШТАБИРУЕМЫХ СИСТЕМ?
...
Рейтинг: 0 / 0
БД пользователей
    #36963338
New_Frozen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
baracs,

Опишите Вашу идею как это организовать, потому что я ищу дополнительную информацию и хочу в этом разобраться.
...
Рейтинг: 0 / 0
БД пользователей
    #36963343
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
New_FrozenВ моем понимании:
1. Сис админ заводит пользователя в домене.
2. Пользователь автоматом импортируется в БД.
3. Отдел кадров вносит информацию о пользователе.
Вот тут переставлено с ног на голову. Сначала кадровичка вносит информацию о пользователе, потом на основании этого выполняются все прочие действия.
...
Рейтинг: 0 / 0
БД пользователей
    #36963398
New_Frozen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer,

Возможно :)
Для этого и вынес на обсуждение, чтобы ткнули носом :)
...
Рейтинг: 0 / 0
БД пользователей
    #36966942
JohnSparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый New_Frozen, допустим, нам нужно знать, кто из пользователей что делал. В этой ситуации в обычной базе данных можно
создать отдельную таблицу (набор таблиц) - лог операций

и/или во всех остальных таблицах добавить поля CreatorId, CreatedDate, UpdaterId, UpdateDate (ID пользователей, создавших запись и последних изменивших ее, даты создания и последнего изменения)

Как планируется журнализация действий в схеме с отдельной БД пользователей? Оно, конечно, реализуемо, но если запись в одной БД, а ID пользователя - в другой, то не получится реализовать ограничения целостности в виде связей между данной таблицей и таблицей пользователей.

Я бы задумался о переходе на Oracle и реализации в рамках одной БД нескольких схем - административной схемы (пользователи, привилегии, журналы действий и т.д.) и отдельных схем с наборами таблиц для каждого из приложений. Правда, это будет мегаработа: если Ваши приложения работают с БД напрямую (без слоя ORM), то их тупо придется переписывать.

Возможно, в MS SQL Server есть нечто подобное схемам Oracle. Как вариант - вынести пользователей в отдельную БД и в каждой из рабочих баз подключить эту БД в качестве внешнего источника (как гетерогенные источники данных в Oracle). Но вообще идея с отдельной БД плоха, вариант с ее выходом из строя - ярчайший косяк.
...
Рейтинг: 0 / 0
БД пользователей
    #36966950
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JohnSparrowдопустим, нам нужно знать,
А можем и допустить, что не нужно :)

JohnSparrowто не получится реализовать ограничения целостности в виде связей
Очень спорно, но допустим.

JohnSparrowПравда, это будет мегаработа:
И всё ради того, чтобы реализовать один внешний ключ

JohnSparrowесли Ваши приложения работают с БД напрямую (без слоя ORM), то их тупо придется переписывать.
Ну а с ORM ещё хуже.

JohnSparrowВозможно, в MS SQL Server есть нечто подобное схемам Oracle.
В некотором смысле есть. Databases.

JohnSparrowНо вообще идея с отдельной БД плоха, вариант с ее выходом из строя - ярчайший косяк.
(задумчиво) Скажите это мелкософту с его AD, Ораклу с его OID и прочим..
...
Рейтинг: 0 / 0
БД пользователей
    #36967003
JohnSparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer, Вас не затруднит конкретизировать свои замечания?

Есть ряд моментов, которые можно рассмотреть в контексте обсуждаемой темы, но покамест Ваши соображения неочевидны.
...
Рейтинг: 0 / 0
БД пользователей
    #36967010
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JohnSparrow, главное моё соображение (которое почему-то беспатентно свистнули и используют мировые вендоры) в том, что поддержка одной хорошо сделанной базы выходит много дешевле и надёжнее, нежели интеграция между собой кучи разнородных модулей. Собственно, любой, кто пытался сделать в интернете "один пароль на основные ресурсы" знает, что это почти нереально: один сервер допускает в пароле только латинские буквы, другой требует символы типа #$%^@, третий хочет разный регистр, а аська так вообще режет по восьми символам. И вот такое вот развлечение предстоит по Вашей милости пользователям..
...
Рейтинг: 0 / 0
БД пользователей
    #36967020
JohnSparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerJohnSparrow, главное моё соображение (которое почему-то беспатентно свистнули и используют мировые вендоры) в том, что поддержка одной хорошо сделанной базы выходит много дешевле и надёжнее, нежели интеграция между собой кучи разнородных модулей.
Честно говоря, это самое главное соображение я и имел в виду, когда писал, что неплохо бы сделать единую базу данных с набором схем для каждого приложения (его предметной области и модели данных).

Относительно AD/OID. Не спорю, но в данном случае речь идет о создании дополнительной обычной БД пользователей, которую нужно защищать от сбоев и т.п. Налицо явное умножение сущностей, бритва Оккама со всеми вытекающими.

Вопрос: почему с ORM еще хуже, т.е. придется потратить больше сил и времени на переписывание кода клиентов, использующих ORM, чем тех, которые работают со своими БД напрямую? Если, конечно, я правильно Вас понял.
...
Рейтинг: 0 / 0
БД пользователей
    #36969174
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
New_Frozenbaracs,

Опишите Вашу идею как это организовать, потому что я ищу дополнительную информацию и хочу в этом разобраться. Почитайте про Windows Authentication MS SQL, про роли сервера и БД...

Подсказка: доменной группе можно предоставить доступ к SQL Server-у и отобразить ее как пользователя конкретной БД. Причем, скуль будет различать виндовых пользователей, входящих в эту группу, по их логинам.

З.Ы. Это не моя идея, а обычная практика.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / БД пользователей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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