Sabina, не всегда, зависит от скрипта
Что касается проверки бизнес правил на клиенте то в 90% случаев )то просто дырка, которая правда срабатывает довольно редко
Потому что правильно проверить бизнес правило на клиенте необъодимо очень четко разбираться в isolation leveles и на нужные документы класть блокировки. Причем для Oracle и MS SQL код будет совершенно разный
Иначе изза racing conditions проверка правила не сработает или сработает не правильно. Сбой такой проверки лишь вопрос вероятности неудачного стечения событий
Когда же код эти проверки делает через всякие абстрактные слои то вообще мрак...
Entity Bean - physical table
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
-
- Уже с Приветом
- Posts: 1564
- Joined: 27 Nov 2001 10:01
- Location: Live free or die
Может я чего то не понимаю но похоже у меня представление о бизнес логике несколько отличается от здесь присутствующих.
В моем понимании это вещи типа balance > XXX and account_no == YYY
ну и т.д.
И мое глубокое убеждение что это не должно отдаваться в БД. Потом, чем дальше вы отпускаете валидацию данных тем дольше клиент будет ждать что бы просто получить сообщенее что нужно ввести все сначала.
Кстати это не просто мое мненее, это весьма стандартный и много раз описаный подход в мире J2EE![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
В моем понимании это вещи типа balance > XXX and account_no == YYY
ну и т.д.
И мое глубокое убеждение что это не должно отдаваться в БД. Потом, чем дальше вы отпускаете валидацию данных тем дольше клиент будет ждать что бы просто получить сообщенее что нужно ввести все сначала.
Кстати это не просто мое мненее, это весьма стандартный и много раз описаный подход в мире J2EE
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
Интересный вы человек! Все у вас в порядке. Удивительно, с таким счастьем - и на свободе. (C) О.Бендер
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
OBender wrote:Может я чего то не понимаю но похоже у меня представление о бизнес логике несколько отличается от здесь присутствующих.
В моем понимании это вещи типа balance > XXX and account_no == YYY
ну и т.д.
Как правило balance>XXX где XXX - установленное значение (зранящееся в какой то таблице) или результат маленькой квери
Например, СуммаПлатежкиКоторуюВыМожетеВыписать < ОстатокНеизрасходованныхСредствВашегоОтдела
Правая часть этого неравенства может изменится за время редактирования
Проверять на клиенте это НЕПРАВИЛЬНО
(хотя и возможно, другое дело что ФИНАЛЬНАЯ проверка все равно должна быть не сервере)
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 1564
- Joined: 27 Nov 2001 10:01
- Location: Live free or die
Ну не стоит цепляться к словам
на клиенте есть масса информации которую можно проверить, например пустые или недопустимые значения.
Но по прежнему все проверки, я считаю, должны делаться чем раньше (возможнее) тем лучше и в J2EE приложении самое позднее это Session Bean перед обращением к DataAccess layer.
![Smile :)](./images/smilies/icon_smile.gif)
Но по прежнему все проверки, я считаю, должны делаться чем раньше (возможнее) тем лучше и в J2EE приложении самое позднее это Session Bean перед обращением к DataAccess layer.
Интересный вы человек! Все у вас в порядке. Удивительно, с таким счастьем - и на свободе. (C) О.Бендер
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
-
- Уже с Приветом
- Posts: 1564
- Joined: 27 Nov 2001 10:01
- Location: Live free or die
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
-
- Уже с Приветом
- Posts: 1377
- Joined: 14 May 2003 20:37
- Location: NY, USA
-
- Уже с Приветом
- Posts: 1071
- Joined: 18 Nov 2003 22:53
- Location: MA
Dmitry67 wrote:update TAB set COL=someexpr WHERE filter
90% это путтак
Организуют цикл по TAB с declare cursor, fetch, проверкой fetch_status
В цикле делают update. Иногда даже filter загоняют в if проверку внутри цикла
Главное что без курсора это не только в стони раз быстрее, но в десятки раз короче по тексту и пишется быстрее
Я заменяю на одну строку, все говорят как круто, и... в следующий раз все равно пишут цикл
Цикл универсальней - можно делать сложную обработку. Т.к. это одноразовая штука, производительность особого значения не имеет.
Мне, помнится даже рекомендовали такой метод, особенно при удалениях (так еще можно лог вести для себя, чего нельзя сделать при апдейте). Если лог есть, потом можно все назад вернуть, без откатов базы.
В общем, администрирование и программирование это разные вещи
![Mentor :umnik1:](./images/smilies/umnik.gif)
-
- Уже с Приветом
- Posts: 1071
- Joined: 18 Nov 2003 22:53
- Location: MA
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
testuser wrote:Т.к. это одноразовая штука, производительность особого значения не имеет.
Теоретики
![Smile :)](./images/smilies/icon_smile.gif)
У нас production можно отключить на ночь на 5 часов для upgrade
За это время должны пройти ВСЕ upgrade scripts.
И еще быть время на restore если не прошло
А тут один скрипт собирался в цикле уныло перебирать записи. На pre-production он это делал 17 часов. Хорошо что вовремя выловили. Я переписал
![Smile :)](./images/smilies/icon_smile.gif)
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 1476
- Joined: 05 Dec 2000 10:01
- Location: Vilnius -> Bonn
Dmitry67 wrote:testuser wrote:Т.к. это одноразовая штука, производительность особого значения не имеет.
Теоретики
У нас production можно отключить на ночь на 5 часов для upgrade
За это время должны пройти ВСЕ upgrade scripts.
И еще быть время на restore если не прошло
А тут один скрипт собирался в цикле уныло перебирать записи. На pre-production он это делал 17 часов. Хорошо что вовремя выловили. Я переписал
Во-во, видимо суровая правда жизни обошла их стороной.
![Smile :)](./images/smilies/icon_smile.gif)
-
- Уже с Приветом
- Posts: 13722
- Joined: 16 Jan 2001 10:01