powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Подключение пользователя к БД... Как есть правильно?
25 сообщений из 42, страница 1 из 2
Подключение пользователя к БД... Как есть правильно?
    #36940670
I dont know
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем времени суток, интересует такой вопрос: Предположим есть некая система, могопользовательская(трёхзвенка). В базе соответственно есть таблица с пользователями. Интересует вопрос как правильнее было бы организовать подключение пользователя в базе: на сервере заводить логин и пароль(который соответственно лежит в таблице в базе) и по нему пускать в систему или подключаться через какого-либо одного "пользователя", и под ним же работать с базой, а сервер приложений уже от имени этого пользователя выполняет все запросы к базе, селекты, хранимки и т.д? Как есть TRUE? Зараннее благодарен.
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36940834
Ditry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обычно сервер приложений работает с базой через одного своего пользователя. Так проще разграничивать права на бизнес операции в системе и т.д.
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36940948
I dont know
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ditry,

А если при подключении к серверу приложений, ему передавать логин/пароль пользователя БД, то сложнее будет сделать разграничение например прав доступа?
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36941127
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I dont knowDitry,

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

Тут накладываются такие фичи, используемые в серверах приложений, как пулы коннектов к БД, кеширование чтения/записи данных и т.п. Это всё сложнее использовать при персональной авторизации в БД.
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36941480
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I dont know,
наоборот,
сервер знает, что пользователь у него внешний, поэтому при коннекте он (сервер) ищет его не у себя а в ....
Код: plaintext
CREATE USER OPS$ALL_ORACLE_EXT IDENTIFIED EXTERNALLY;
http://www.all-oracle.ru/content/view/?part=1&id=78
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36941675
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I dont knowDitry,

А если при подключении к серверу приложений, ему передавать логин/пароль пользователя БД, то сложнее будет сделать разграничение например прав доступа?
клиент в 3-звенном приложении не работает с СУБД. Он работает с Сервером приложений. Дело не в сложности, а в правилах архитектуры. Вам дадут множество примеров, как обеспечивается доступ в различных СУБД, но к 3T они не имеют никакого отношения. Это иллюзия, что можно так сделать и все будет работать.
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36942292
I dont know
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,

Как раз и интересует как сделать правильно, пользователь работает с сервером приложений, а как быть с сервером БД? Под каким пользователем к базе лезет сервер приложений? под своим? или под тем логин/пароль которого задал пользователь?
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36942365
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I dont knowiscrafm,

Как раз и интересует как сделать правильно, пользователь работает с сервером приложений, а как быть с сервером БД? Под каким пользователем к базе лезет сервер приложений? под своим? или под тем логин/пароль которого задал пользователь?
под своим. Объекты БД и объекты приложений это разные по своей сути объекты.
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36942447
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I dont knowКак есть TRUE? Зараннее благодарен.
Будьте уверены, что все велосипедостроители работают с базой от имени одного пользователя. Как же true - вопрос, вообще говоря, интересный. Я бы сказал, что, например, для сайта публичной библиотеки и для корпоративной информационной системы true решения будут изрядно разными :)

Во-первых, стоит отметить, что правильным для "серьёзных систем" была бы аутентификация и на сервере приложений, и в СУБД через LDAP. Во-вторых, для "серьёзных систем" пожалуй что нет конкурентов предлагаемой Oracle схеме с proxy users. Суть этой схемы: application server коннектится к СУБД под "своими" пользователем-паролем. Далее, когда требуется, application server говорит СУБД: а теперь я побуду Васей - и после этого работает с СУБД "от имени и по поручению Васи", используя его роли, имея его права на доступ итп.
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36942619
Hauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с предыдущими ораторами - ответ зависит сильно от ситуации.
У всех схем есть свои плюсы и минусы. В общем случае, я бы сказал, что сервер приложений работает от одного пользователя. Это при условии, что Вам много чего не надо. Ну вот к примеру - вы не хотите логгировать операции на уровне БД, Вы не хотите иметь повышенной секьюрити (а ну как ломанут сервер приложений) и т.д. и т.п.
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36943188
shaden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот еще тогда вопрос: если сервер приложений работает с базой данной, используя одного пользователя БД, как решается вопрос лицензирования? По-идее, нужна тогда только одна лицензия на этого пользователя или я не прав и нужно лицензировать всех пользователей, которые используют сервер приложений?
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36943196
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shadenПо-идее, нужна тогда только одна лицензия на этого пользователя
По чьей идее?

По идее, нужно читать условия лицензирования СУБД. Можете быть уверены, что там этот вопрос специально оговорен, равно как и вопрос выставления разработанного софта в интернет с потенциально неограниченным количеством пользователей.
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36943220
Hauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarershadenПо-идее, нужна тогда только одна лицензия на этого пользователя
По чьей идее?

По идее, нужно читать условия лицензирования СУБД. Можете быть уверены, что там этот вопрос специально оговорен, равно как и вопрос выставления разработанного софта в интернет с потенциально неограниченным количеством пользователей.

Угу, если я не ошибаюсь, то с точки зрения Oracle, например, такой софт это попадание на максимальную лицензию практически. Как вы там технически заходите в БД, их мало волнует. Им интересно, сколько реально одновременных пользователей работает с БД.
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36943230
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HauerКак вы там технически заходите в БД, их мало волнует. Им интересно, сколько реально одновременных пользователей работает с БД.
Ну в общем-то, я их даже вполне понимаю.
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36943340
Hauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerHauerКак вы там технически заходите в БД, их мало волнует. Им интересно, сколько реально одновременных пользователей работает с БД.
Ну в общем-то, я их даже вполне понимаю.

Да, конечно, это справедливо.
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36943879
I dont know
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

Т.е как я понял должно быть две "базы" пользователей - одна на сервере, и вторая на самом сервере приложений.
авторСуть этой схемы: application server коннектится к СУБД под "своими" пользователем-паролем. Далее, когда требуется, application server говорит СУБД: а теперь я побуду Васей - и после этого работает с СУБД "от имени и по поручению Васи", используя его роли, имея его права на доступ итп.
А какой смысл серверу приложений "прыгать" от пользователя к пользователю(теперь я побуду Васей, Петей, Джорджем...). А если к серверу приложений подключаются десятки-сотни пользователей, не замучается сервер "прыгать"?
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36944005
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I dont knowТ.е как я понял должно быть две "базы" пользователей - одна на сервере, и вторая на самом сервере приложений.
Я бы сказал, это на две больше, чем нужно

I dont knowА какой смысл серверу приложений "прыгать" от пользователя к пользователю(теперь я побуду Васей, Петей, Джорджем...).
А какой смысл вообще иметь разных пользователей (Васю, Петю, Джорджа)? Смысл в том, что у них разные права на операции, разные ограничения видимых данных и т. д. и т. п.

I dont knowА если к серверу приложений подключаются десятки-сотни пользователей,
Маловато будет. Десятки-сотни пользователей разумнее обслуживать клиент-сервером. Сервер приложений целесообразен для тысяч, скорее даже десятков тысяч пользователей.

I dont knowне замучается сервер "прыгать"?
Куда меньше, чем замучается в альтернативных решениях.
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36944201
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerДесятки-сотни пользователей разумнее обслуживать клиент-сервером. Сервер приложений целесообразен для тысяч, скорее даже десятков тысяч пользователей.

на чем основан такой вывод?
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36944227
Hauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmsoftwarerДесятки-сотни пользователей разумнее обслуживать клиент-сервером. Сервер приложений целесообразен для тысяч, скорее даже десятков тысяч пользователей.

на чем основан такой вывод?

Да уж... Я вообще не понимаю, как количество пользователей влияет на такой выбор.
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36944229
I dont know
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

Ваши мысли понятны, только имхо мы уплываем от начальной мысли. Попробую расписать: сейчас проектирую структуру системы(документооборота) Количество одновременно работающих пользователей думаю максимум пару тысяч(с запасом). От двухзвенки отказался сразу по причине:
1) "Сервера" должны взаимодействовать друг с другом(под взаимодействием подразумевается делегирование одного сервера другому части информации хранящейся на нём, например списка работников, документов и т.д. Слово сервера взято в кавычки, т.к под сервером понимаю именно сервер приложений, которые как раз и будут взаимодействовать друг с другом).
2) Должно быть несколько интерфейсов к системе, например linux, win и web версия... Понимаю что можно взять какой-либо кросплатформенный тулкит и наваять по принципу клиент-сервер, но всё-же... Вот тут возникает ещё один вопрос, как клиентскому приложению взаимодействовать с "сервером"(т.е в данном случае с сервером приложений, так получается), через какой-то протокол? изобретать велосипед?(конкретно для этой системы)

Такие вот мыслишки, поэтому и спрашиваю, раз клиент будет работать с "сервером", то как же самому серверу цепляться к БД. :)
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36944315
Hauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I dont know
...
Вот тут возникает ещё один вопрос, как клиентскому приложению взаимодействовать с "сервером"(т.е в данном случае с сервером приложений, так получается), через какой-то протокол? изобретать велосипед?(конкретно для этой системы)


Ой... а зачем же велосипед-то. Я не знаю, что у Вас за платформа на уме, но везде есть какие-то решения уже готовые - хотя бы какие-нибудь типа RMI, RFC, Remoting (адепты Micrososft не пинайте, если попутал:-)), CORBA и т.д. и т.п. Выбирайте, что вашей душе угодно:-) А еще лучше, посмотреть на бест практики для конкретно Вашей платформы.
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36944332
I dont know
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hauer,

Хм... а как?, например: клиент говорит серверу: "создай задачу", "дай мне данные", "верни мне все документы которые редактировались" и т.д В этом случае клиент отправляет серверу запрос, предположим(к примеру) так GET(DOCUMENT, 1234)... сервер из базы делает запрос select blabla where id=1234 blabla... и возвращает документ клиенту
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36944398
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmна чем основан такой вывод?
На сочетании нескольких факторов. Сколько пользователей нормально/плохо тянут СУБД, сколько стоит дополнительный геморрой разработки и поддержки, когда система проявляет склонность к распределённости и "категорически неБДшному" функционалу итп. Это не вывод, это эвристика.

I dont know1) "Сервера" должны взаимодействовать друг с другом
1. Что за сервера? Какие у каждого функции, почему их обязательно несколько?
2. А зачем для взаимодействия серверов трёхзвенка?

I dont know2) Должно быть несколько интерфейсов к системе, например linux, win и web версия...
Я понимаю, чем трёхзвенка может осложнить решение этой задачи. А чем она её упростит? Бизнес-логика уже не помещается в клиенте?

I dont knowПонимаю что можно взять какой-либо кросплатформенный тулкит и наваять по принципу клиент-сервер, но всё-же...
Вы связываете тёплое с мягким, имхо. Вариабельность клиентской платформы никак не связана с количеством звеньев сверх одного. Кроссплатформенные тулкиты тут в общем-то не при чём, хотя для таких требований естественный выбор - взять яву и нарисовать одно приложение с двумя-трёмя "мордами".

I dont knowВот тут возникает ещё один вопрос, как клиентскому приложению взаимодействовать с "сервером"
Ну, пока что непонятно, зачем вообще нужен "сервер". Клиентское приложение вполне может взаимодействовать с СУБД по стандартному, отработанному и кроссплатформенному протоколу этой СУБД. Если же таки делать трёхзвенку, то вариантов фактически три:

Использовать единообразную технологию для всех случаев (ту же яву) и соответственно любой реализованный в ней протокол

Использовать простой стандартный протокол, реализованный для всего (скажем, xml-rpc), сделав к нему нужную высокоуровневую оболочку

Использовать что-нибудь экзотическое-недоделанное типа CORBA, приплясывая с кучей бубнов.

I dont knowТакие вот мыслишки, поэтому и спрашиваю, раз клиент будет работать с "сервером", то как же самому серверу цепляться к БД. :)
Это совершенно отдельный вопрос, ответ на который в общем случае уже дан, а в необщем не хватает информации.
...
Рейтинг: 0 / 0
Подключение пользователя к БД... Как есть правильно?
    #36944616
I dont know
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

автор1. Что за сервера? Какие у каждого функции, почему их обязательно несколько?
2. А зачем для взаимодействия серверов трёхзвенка?

Попробую обрисовать ситуацию, надеюсь ход мыслей будет понятен, скорректируйте, если что не так:

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

Я решил подойти так, что пользователи работают не с БД напрямую, а с некой прослойкой(сервером системы, назовём его для условности СДО, вот как раз и получается трёхзвенка. прим.). СДО может быть соеденён с другими СДО, территориально находящимися в разных частях города/страны, и делегировать ему скажем часть своих справочников, т.е Пользователь А, работая и открывая справочник пользователей видит не только пользователей своего сервера, но и пользователей, которые этому серверу делегировали другие СДО(делегирование предполагается задавать в настройках, кто кого видит, кто что может делать и т.д). При этом предполагается что система будет кросс-платформенной.

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

авторБизнес-логика уже не помещается в клиенте?
Предполагается наоборот, бизнес логика будет храниться на сервере БД, а СДО её использовать и предоставлять пользователям(и делегировать другим СДО, например головной офис запрашивает у пподразделения отчёт, сам отчёт-его select находится на сервере подразделения, а СДО головного офиса делегирована возможность его запускать, в головном просто нажимают кнопочку "Отчёт", СДО головного даёт запрос СДО подразделения - "Дай мне отчёт", СДО подразделения даёт запрос своей БД, та результат выборки, СДО подразделения эти результаты отправляет на СДО головного... там глядят... всё радуются... выдохнули)

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

По идее, нужно читать условия лицензирования СУБД. Можете быть уверены, что там этот вопрос специально оговорен, равно как и вопрос выставления разработанного софта в интернет с потенциально неограниченным количеством пользователей.

Да, с лицензированием не все так просто. И ситуация меняется, некоторые вендоры гайки могут закрутить.

Видел в условиях лицензирования MS SQL термин "Мультиплексирование" - как раз для случаев "Множество коннектов к серверу приложений -> Один коннект к СУБД". MS утверждает, что надо платить за всех реально используемых.

Детально не разбирался, потому как начиная с какого-то порога выгодней стало брать лицензию не на подключения, а на сервер/процессор.
...
Рейтинг: 0 / 0
25 сообщений из 42, страница 1 из 2
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Подключение пользователя к БД... Как есть правильно?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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