|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
Доброго всем времени суток, интересует такой вопрос: Предположим есть некая система, могопользовательская(трёхзвенка). В базе соответственно есть таблица с пользователями. Интересует вопрос как правильнее было бы организовать подключение пользователя в базе: на сервере заводить логин и пароль(который соответственно лежит в таблице в базе) и по нему пускать в систему или подключаться через какого-либо одного "пользователя", и под ним же работать с базой, а сервер приложений уже от имени этого пользователя выполняет все запросы к базе, селекты, хранимки и т.д? Как есть TRUE? Зараннее благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2010, 09:05 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
Обычно сервер приложений работает с базой через одного своего пользователя. Так проще разграничивать права на бизнес операции в системе и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2010, 13:53 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
Ditry, А если при подключении к серверу приложений, ему передавать логин/пароль пользователя БД, то сложнее будет сделать разграничение например прав доступа? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2010, 16:32 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
I dont knowDitry, А если при подключении к серверу приложений, ему передавать логин/пароль пользователя БД, то сложнее будет сделать разграничение например прав доступа?Да можно, тут проблема не в том, как передавать логин/пароль. Тут накладываются такие фичи, используемые в серверах приложений, как пулы коннектов к БД, кеширование чтения/записи данных и т.п. Это всё сложнее использовать при персональной авторизации в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2010, 20:12 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
I dont know, наоборот, сервер знает, что пользователь у него внешний, поэтому при коннекте он (сервер) ищет его не у себя а в .... Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2010, 09:40 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
I dont knowDitry, А если при подключении к серверу приложений, ему передавать логин/пароль пользователя БД, то сложнее будет сделать разграничение например прав доступа? клиент в 3-звенном приложении не работает с СУБД. Он работает с Сервером приложений. Дело не в сложности, а в правилах архитектуры. Вам дадут множество примеров, как обеспечивается доступ в различных СУБД, но к 3T они не имеют никакого отношения. Это иллюзия, что можно так сделать и все будет работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2010, 11:14 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
iscrafm, Как раз и интересует как сделать правильно, пользователь работает с сервером приложений, а как быть с сервером БД? Под каким пользователем к базе лезет сервер приложений? под своим? или под тем логин/пароль которого задал пользователь? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2010, 14:02 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
I dont knowiscrafm, Как раз и интересует как сделать правильно, пользователь работает с сервером приложений, а как быть с сервером БД? Под каким пользователем к базе лезет сервер приложений? под своим? или под тем логин/пароль которого задал пользователь? под своим. Объекты БД и объекты приложений это разные по своей сути объекты. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2010, 14:18 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
I dont knowКак есть TRUE? Зараннее благодарен. Будьте уверены, что все велосипедостроители работают с базой от имени одного пользователя. Как же true - вопрос, вообще говоря, интересный. Я бы сказал, что, например, для сайта публичной библиотеки и для корпоративной информационной системы true решения будут изрядно разными :) Во-первых, стоит отметить, что правильным для "серьёзных систем" была бы аутентификация и на сервере приложений, и в СУБД через LDAP. Во-вторых, для "серьёзных систем" пожалуй что нет конкурентов предлагаемой Oracle схеме с proxy users. Суть этой схемы: application server коннектится к СУБД под "своими" пользователем-паролем. Далее, когда требуется, application server говорит СУБД: а теперь я побуду Васей - и после этого работает с СУБД "от имени и по поручению Васи", используя его роли, имея его права на доступ итп. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2010, 14:40 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
Согласен с предыдущими ораторами - ответ зависит сильно от ситуации. У всех схем есть свои плюсы и минусы. В общем случае, я бы сказал, что сервер приложений работает от одного пользователя. Это при условии, что Вам много чего не надо. Ну вот к примеру - вы не хотите логгировать операции на уровне БД, Вы не хотите иметь повышенной секьюрити (а ну как ломанут сервер приложений) и т.д. и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2010, 15:20 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
А вот еще тогда вопрос: если сервер приложений работает с базой данной, используя одного пользователя БД, как решается вопрос лицензирования? По-идее, нужна тогда только одна лицензия на этого пользователя или я не прав и нужно лицензировать всех пользователей, которые используют сервер приложений? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2010, 18:15 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
shadenПо-идее, нужна тогда только одна лицензия на этого пользователя По чьей идее? По идее, нужно читать условия лицензирования СУБД. Можете быть уверены, что там этот вопрос специально оговорен, равно как и вопрос выставления разработанного софта в интернет с потенциально неограниченным количеством пользователей. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2010, 18:17 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
softwarershadenПо-идее, нужна тогда только одна лицензия на этого пользователя По чьей идее? По идее, нужно читать условия лицензирования СУБД. Можете быть уверены, что там этот вопрос специально оговорен, равно как и вопрос выставления разработанного софта в интернет с потенциально неограниченным количеством пользователей. Угу, если я не ошибаюсь, то с точки зрения Oracle, например, такой софт это попадание на максимальную лицензию практически. Как вы там технически заходите в БД, их мало волнует. Им интересно, сколько реально одновременных пользователей работает с БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2010, 18:26 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
HauerКак вы там технически заходите в БД, их мало волнует. Им интересно, сколько реально одновременных пользователей работает с БД. Ну в общем-то, я их даже вполне понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2010, 18:31 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
softwarerHauerКак вы там технически заходите в БД, их мало волнует. Им интересно, сколько реально одновременных пользователей работает с БД. Ну в общем-то, я их даже вполне понимаю. Да, конечно, это справедливо. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2010, 19:16 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
softwarer, Т.е как я понял должно быть две "базы" пользователей - одна на сервере, и вторая на самом сервере приложений. авторСуть этой схемы: application server коннектится к СУБД под "своими" пользователем-паролем. Далее, когда требуется, application server говорит СУБД: а теперь я побуду Васей - и после этого работает с СУБД "от имени и по поручению Васи", используя его роли, имея его права на доступ итп. А какой смысл серверу приложений "прыгать" от пользователя к пользователю(теперь я побуду Васей, Петей, Джорджем...). А если к серверу приложений подключаются десятки-сотни пользователей, не замучается сервер "прыгать"? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 07:05 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
I dont knowТ.е как я понял должно быть две "базы" пользователей - одна на сервере, и вторая на самом сервере приложений. Я бы сказал, это на две больше, чем нужно I dont knowА какой смысл серверу приложений "прыгать" от пользователя к пользователю(теперь я побуду Васей, Петей, Джорджем...). А какой смысл вообще иметь разных пользователей (Васю, Петю, Джорджа)? Смысл в том, что у них разные права на операции, разные ограничения видимых данных и т. д. и т. п. I dont knowА если к серверу приложений подключаются десятки-сотни пользователей, Маловато будет. Десятки-сотни пользователей разумнее обслуживать клиент-сервером. Сервер приложений целесообразен для тысяч, скорее даже десятков тысяч пользователей. I dont knowне замучается сервер "прыгать"? Куда меньше, чем замучается в альтернативных решениях. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 09:39 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
softwarerДесятки-сотни пользователей разумнее обслуживать клиент-сервером. Сервер приложений целесообразен для тысяч, скорее даже десятков тысяч пользователей. на чем основан такой вывод? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 10:49 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
iscrafmsoftwarerДесятки-сотни пользователей разумнее обслуживать клиент-сервером. Сервер приложений целесообразен для тысяч, скорее даже десятков тысяч пользователей. на чем основан такой вывод? Да уж... Я вообще не понимаю, как количество пользователей влияет на такой выбор. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 10:54 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
softwarer, Ваши мысли понятны, только имхо мы уплываем от начальной мысли. Попробую расписать: сейчас проектирую структуру системы(документооборота) Количество одновременно работающих пользователей думаю максимум пару тысяч(с запасом). От двухзвенки отказался сразу по причине: 1) "Сервера" должны взаимодействовать друг с другом(под взаимодействием подразумевается делегирование одного сервера другому части информации хранящейся на нём, например списка работников, документов и т.д. Слово сервера взято в кавычки, т.к под сервером понимаю именно сервер приложений, которые как раз и будут взаимодействовать друг с другом). 2) Должно быть несколько интерфейсов к системе, например linux, win и web версия... Понимаю что можно взять какой-либо кросплатформенный тулкит и наваять по принципу клиент-сервер, но всё-же... Вот тут возникает ещё один вопрос, как клиентскому приложению взаимодействовать с "сервером"(т.е в данном случае с сервером приложений, так получается), через какой-то протокол? изобретать велосипед?(конкретно для этой системы) Такие вот мыслишки, поэтому и спрашиваю, раз клиент будет работать с "сервером", то как же самому серверу цепляться к БД. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 10:55 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
I dont know ... Вот тут возникает ещё один вопрос, как клиентскому приложению взаимодействовать с "сервером"(т.е в данном случае с сервером приложений, так получается), через какой-то протокол? изобретать велосипед?(конкретно для этой системы) Ой... а зачем же велосипед-то. Я не знаю, что у Вас за платформа на уме, но везде есть какие-то решения уже готовые - хотя бы какие-нибудь типа RMI, RFC, Remoting (адепты Micrososft не пинайте, если попутал:-)), CORBA и т.д. и т.п. Выбирайте, что вашей душе угодно:-) А еще лучше, посмотреть на бест практики для конкретно Вашей платформы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 11:14 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
Hauer, Хм... а как?, например: клиент говорит серверу: "создай задачу", "дай мне данные", "верни мне все документы которые редактировались" и т.д В этом случае клиент отправляет серверу запрос, предположим(к примеру) так GET(DOCUMENT, 1234)... сервер из базы делает запрос select blabla where id=1234 blabla... и возвращает документ клиенту ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 11:25 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
iscrafmна чем основан такой вывод? На сочетании нескольких факторов. Сколько пользователей нормально/плохо тянут СУБД, сколько стоит дополнительный геморрой разработки и поддержки, когда система проявляет склонность к распределённости и "категорически неБДшному" функционалу итп. Это не вывод, это эвристика. I dont know1) "Сервера" должны взаимодействовать друг с другом 1. Что за сервера? Какие у каждого функции, почему их обязательно несколько? 2. А зачем для взаимодействия серверов трёхзвенка? I dont know2) Должно быть несколько интерфейсов к системе, например linux, win и web версия... Я понимаю, чем трёхзвенка может осложнить решение этой задачи. А чем она её упростит? Бизнес-логика уже не помещается в клиенте? I dont knowПонимаю что можно взять какой-либо кросплатформенный тулкит и наваять по принципу клиент-сервер, но всё-же... Вы связываете тёплое с мягким, имхо. Вариабельность клиентской платформы никак не связана с количеством звеньев сверх одного. Кроссплатформенные тулкиты тут в общем-то не при чём, хотя для таких требований естественный выбор - взять яву и нарисовать одно приложение с двумя-трёмя "мордами". I dont knowВот тут возникает ещё один вопрос, как клиентскому приложению взаимодействовать с "сервером" Ну, пока что непонятно, зачем вообще нужен "сервер". Клиентское приложение вполне может взаимодействовать с СУБД по стандартному, отработанному и кроссплатформенному протоколу этой СУБД. Если же таки делать трёхзвенку, то вариантов фактически три: Использовать единообразную технологию для всех случаев (ту же яву) и соответственно любой реализованный в ней протокол Использовать простой стандартный протокол, реализованный для всего (скажем, xml-rpc), сделав к нему нужную высокоуровневую оболочку Использовать что-нибудь экзотическое-недоделанное типа CORBA, приплясывая с кучей бубнов. I dont knowТакие вот мыслишки, поэтому и спрашиваю, раз клиент будет работать с "сервером", то как же самому серверу цепляться к БД. :) Это совершенно отдельный вопрос, ответ на который в общем случае уже дан, а в необщем не хватает информации. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 11:50 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
softwarer, автор1. Что за сервера? Какие у каждого функции, почему их обязательно несколько? 2. А зачем для взаимодействия серверов трёхзвенка? Попробую обрисовать ситуацию, надеюсь ход мыслей будет понятен, скорректируйте, если что не так: Предположим что пользователь работает с моей системой(также предположим, что система клиент-серверная, а не трёх-звенка как я планирую). Имеется несколько учреждений, которые работают с этой системой, причём у каждого учреждения своя база(своя база для того, чтобы не лепить всё в одну, об этом чуть дальше). Теперь предположим что пользователь(А) хочет отправить задачу другому пользователю(Б), который находится в другой базе(соответственно в базе пользователя(А), нет пользователя(Б) и наоборот). А задачу нужно передать, таким образом предполагается наличие какой-либо сторонней программки, которая берёт сообщение из одной базы и передаёт её в другую. Я решил подойти так, что пользователи работают не с БД напрямую, а с некой прослойкой(сервером системы, назовём его для условности СДО, вот как раз и получается трёхзвенка. прим.). СДО может быть соеденён с другими СДО, территориально находящимися в разных частях города/страны, и делегировать ему скажем часть своих справочников, т.е Пользователь А, работая и открывая справочник пользователей видит не только пользователей своего сервера, но и пользователей, которые этому серверу делегировали другие СДО(делегирование предполагается задавать в настройках, кто кого видит, кто что может делать и т.д). При этом предполагается что система будет кросс-платформенной. Теперь по поводу нескольких баз, думаю что было бы правильней для каждого учреждения иметь свою базу(не обязательно чтобы они физически располагались на разных серверах). Если все будут работать с одной базой то с одной стороны вроде как проще администрировать, а с другой это не очень гибкий вариант для расширения системы, да и железо нужно хорошее. авторБизнес-логика уже не помещается в клиенте? Предполагается наоборот, бизнес логика будет храниться на сервере БД, а СДО её использовать и предоставлять пользователям(и делегировать другим СДО, например головной офис запрашивает у пподразделения отчёт, сам отчёт-его select находится на сервере подразделения, а СДО головного офиса делегирована возможность его запускать, в головном просто нажимают кнопочку "Отчёт", СДО головного даёт запрос СДО подразделения - "Дай мне отчёт", СДО подразделения даёт запрос своей БД, та результат выборки, СДО подразделения эти результаты отправляет на СДО головного... там глядят... всё радуются... выдохнули) Попробовал объяснить как смог(у меня это обычно плохо получается). :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 12:56 |
|
Подключение пользователя к БД... Как есть правильно?
|
|||
---|---|---|---|
#18+
softwarershadenПо-идее, нужна тогда только одна лицензия на этого пользователя По чьей идее? По идее, нужно читать условия лицензирования СУБД. Можете быть уверены, что там этот вопрос специально оговорен, равно как и вопрос выставления разработанного софта в интернет с потенциально неограниченным количеством пользователей. Да, с лицензированием не все так просто. И ситуация меняется, некоторые вендоры гайки могут закрутить. Видел в условиях лицензирования MS SQL термин "Мультиплексирование" - как раз для случаев "Множество коннектов к серверу приложений -> Один коннект к СУБД". MS утверждает, что надо платить за всех реально используемых. Детально не разбирался, потому как начиная с какого-то порога выгодней стало брать лицензию не на подключения, а на сервер/процессор. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 13:14 |
|
|
start [/forum/topic.php?fid=33&fpage=29&tid=1548173]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
others: | 313ms |
total: | 451ms |
0 / 0 |