|
|
|
Реализация бизнес логики в БД
|
|||
|---|---|---|---|
|
#18+
locky sqllex wrote: > Т.е. аргументов у вас нет? :) (очень медленно и спокойно). Аргументация такова: приложение, разработанное в кустарных (или приближенных к ним) условиях, не прошедшее достаточного тестирования (как обычно и бывает с доморощенными приложениями), используемое достаточно ограниченным количество "домашних" пользователей - как правило, значительно более глючное, чем сервер БД, разработанный (хочется надеятся) в "некустарных условиях" и прошедший (опять-таки - хочется надеятся) всесторонне тестирование. Если добавить к этом огромную армию "обизян" (девелоперов/конечных пользователей) , которые юзают сервер БД в хвост и гриву (сиречь - тестируют его) - можно предположить, что, вообще говоря - сервер БД значительно надёжнее практически любого клиентского приложения. Сойдёт за аргумент?А что - хранимую процедуру, которая реализует бизнес логику - вам прям с сервером поставляют? Или, всетаки, Вася-програмист-доморощенный-гений их пишет (как и клиентскую программу)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 12:29 |
|
||
|
Реализация бизнес логики в БД
|
|||
|---|---|---|---|
|
#18+
Bely wrote: > А что - хранимую процедуру, которая реализует бизнес логику - вам прям с > сервером поставляют? Нет. > Или, всетаки, Вася-програмист-доморощенный-гений их пишет (как и > клиентскую программу)? Да. И я предпочитаю иметь только одно "слабое звено" в виде ХП вместо двух: ХМ и клиента. Чем проще клиент - тем меньше шансов поймать глюк. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 14:14 |
|
||
|
Реализация бизнес логики в БД
|
|||
|---|---|---|---|
|
#18+
mr. GarryНе устраивает тем, что проверка на клиенте. Т.е. в обход клиента с базой при таком подходе можно сделать что-нибудь нехорошее (например сохранить выписку без назначения препаратов =) ). А кто кроме Вас это будет делать, или Вы за себя не отвечаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 16:54 |
|
||
|
Реализация бизнес логики в БД
|
|||
|---|---|---|---|
|
#18+
iscrafm mr. GarryНе устраивает тем, что проверка на клиенте. Т.е. в обход клиента с базой при таком подходе можно сделать что-нибудь нехорошее (например сохранить выписку без назначения препаратов =) ). А кто кроме Вас это будет делать, или Вы за себя не отвечаете?Злоумышленнег. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 17:09 |
|
||
|
Реализация бизнес логики в БД
|
|||
|---|---|---|---|
|
#18+
lockyИ я предпочитаю иметь только одно "слабое звено" в виде ХП вместо двух: ХМ и клиента. Чем проще клиент - тем меньше шансов поймать глюк.Вы путаете - в данном случае слабое звено - это програмист, а не клиентское ПО и ХП. Здесь еще действует другое правило - чем тоньше клиент - тем больше шансов поймать глюк в другом месте :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 18:14 |
|
||
|
Реализация бизнес логики в БД
|
|||
|---|---|---|---|
|
#18+
mr. Garry iscrafm mr. GarryНе устраивает тем, что проверка на клиенте. Т.е. в обход клиента с базой при таком подходе можно сделать что-нибудь нехорошее (например сохранить выписку без назначения препаратов =) ). А кто кроме Вас это будет делать, или Вы за себя не отвечаете?Злоумышленнег. Он Ваш "тригер" отключит и сделает то, что нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 18:21 |
|
||
|
Реализация бизнес логики в БД
|
|||
|---|---|---|---|
|
#18+
Bely wrote: > Здесь еще действует другое правило - чем тоньше клиент - тем больше > шансов поймать глюк в другом месте :) Угу. Давайте все глюки ловить на клиенте. Дайошь! Толстово клиента! Желательно - на самописном интерпретаторе. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 18:45 |
|
||
|
Реализация бизнес логики в БД
|
|||
|---|---|---|---|
|
#18+
iscrafm Он Ваш "тригер" отключит и сделает то, что нужно. Надо понимать, что бизнес правила, в отличии от декларативных ограничений целостности, не гарантируют соответствие всех данных установленным требованиям. Т.е. бизнес правило применяется только в рамках определённого класса транзакций при определённых условиях, которые необязательно зависят от БД (например правило может применяться только ночью), тогда как декларативные ограничения целостности применяются всегда и ко всем данным. Короче, приложения БД должны быть готовы к тому, что бизнес правило может быть отменено или применяться не всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 19:11 |
|
||
|
Реализация бизнес логики в БД
|
|||
|---|---|---|---|
|
#18+
lockyСойдёт за аргумент? С рассуждениями согласен, но как аргумент не воспринимаю. Вы искуственно создали (описали) условия, в которых выделили "слабое звено". Я могу точно так же сделать, построив цепочку от обратного и прийду к противоположным выводам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2007, 01:48 |
|
||
|
Реализация бизнес логики в БД
|
|||
|---|---|---|---|
|
#18+
locky у мну никогда в текущем коннекте не висит открытая транзакция (разве что - в результате ошибки). С клиента транзакция не открывается, не подтверждается и не откатывается. Транзакция может быть открыта сугубо ХП, внутри ХП и для ХП. Перед выходом из ХП "верхнего уровня" (которая, как правило и открывает транзакцию) транзакция должна быть или подтверждена (если всё ок) или откачена (если всё пльохо). Вы используете одну из моделей управления транзакциями. Но это не значит, что остальные модели неправильные. Об этом четко написано в БОЛ: они равнозначны (с точки зрения свойств: atomicity, consistency, isolation, durability) и имеют свои сферы использования. В нашем случае нет разницы, какой вид управления транзакциями использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2007, 01:58 |
|
||
|
Реализация бизнес логики в БД
|
|||
|---|---|---|---|
|
#18+
mr. Garry Авторизация - встроенная в SQL сервер. Какие действия с какими объектами - долго писать. Сейчас все действия реализованы через ХП. Вот. В принципе, этого достаточно. Если пользователи у вас имеют права на ХП (реализующие бизнес-логику в части изменений данных), но не имеют прав на непосредственный доступ к таблицам (и при этом не имеют доступа к таблицам напрямую через тот же QA или MS), то разницы нет, где делать проверку. Если же доступ (см. в скобках выше) есть, то вам вынесение логики в ХП не поможет в принципе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2007, 02:05 |
|
||
|
Реализация бизнес логики в БД
|
|||
|---|---|---|---|
|
#18+
mcureenab iscrafm Он Ваш "тригер" отключит и сделает то, что нужно. Надо понимать, что бизнес правила, в отличии от декларативных ограничений целостности, не гарантируют соответствие всех данных установленным требованиям. Т.е. бизнес правило применяется только в рамках определённого класса транзакций при определённых условиях, которые необязательно зависят от БД (например правило может применяться только ночью), тогда как декларативные ограничения целостности применяются всегда и ко всем данным. Короче, приложения БД должны быть готовы к тому, что бизнес правило может быть отменено или применяться не всегда. это понятно. А в связи с чем это сказано, т.е. в продолжение или в противовес чему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2007, 15:07 |
|
||
|
Реализация бизнес логики в БД
|
|||
|---|---|---|---|
|
#18+
sqllex mr. Garry Авторизация - встроенная в SQL сервер. Какие действия с какими объектами - долго писать. Сейчас все действия реализованы через ХП. Вот. В принципе, этого достаточно. Если пользователи у вас имеют права на ХП (реализующие бизнес-логику в части изменений данных), но не имеют прав на непосредственный доступ к таблицам (и при этом не имеют доступа к таблицам напрямую через тот же QA или MS), то разницы нет, где делать проверку. Если же доступ (см. в скобках выше) есть, то вам вынесение логики в ХП не поможет в принципе. Повторюсь: mrGarry1. в первую таблицу вносится 1 строка - Id_выписки (primary key), Id_пациента, Ходе_лечения, Врач, ...); 2. во вторую таблицу пишется список назначенных препаратов - Id_выписки (foreign key), Id_препарата, Дозировка, ... В данном случае это одна операция создания объекта - выписки (а не несколько операций создания выписки и нескольких назначений). И одной хранимкой тут обойтись не получается, если, конечно, не передавать все данные в виде XML и не парсить их внутри ХП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2007, 10:15 |
|
||
|
Реализация бизнес логики в БД
|
|||
|---|---|---|---|
|
#18+
iscrafmОн Ваш "тригер" отключит и сделает то, что нужно. А как можно отключить триггер из-под ограниченной учетной записи??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2007, 10:18 |
|
||
|
Реализация бизнес логики в БД
|
|||
|---|---|---|---|
|
#18+
mr. Garry Повторюсь: Не надо. Почитайте лучше о транзакциях в БОЛ. И, в частности, ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/udb9/html/052c6ef6-8854-4d26-b6b5-0d4ccf6d1018.htm Запускайте хоть 10 ХП в одной транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2007, 10:24 |
|
||
|
Реализация бизнес логики в БД
|
|||
|---|---|---|---|
|
#18+
mr. GarryВ данном случае это одна операция создания объекта - выписки (а не несколько операций создания выписки и нескольких назначений). И одной хранимкой тут обойтись не получается, если, конечно, не передавать все данные в виде XML и не парсить их внутри ХП. Можно и в виде XML можно и ещё как нибудь. ИМХО, в зрелых СУБД оформить системную транзакцию одной процедурой вполне реально. Супротив системных транзакций бизнес транзакции могут длиться очень долго, управление в них может многократно переходить от сервера к клиенту и пользователю. Бизнес транзакции обычно не могут быть выполнены одним вызовом ХП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2007, 16:46 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34962698&tid=1544166]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
167ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 519ms |

| 0 / 0 |
