|
|
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmЛПЕсть трехзвенка - на фиг бы мне сдались хранимые процедуры. (исключая вопросы производительности, из за которых конечно же может понадобиться заниматься размазыванием). "нафиг бы"? Речь о чем-то конкретном или просто о барышнях рассуждаем которых пощупать нет возможности? А то назвали что-то нехорошим словом, а потом сказали, что даже не понимаете что там написано. Скучно. в оракле есть пакеты, и миллион хранимок это не про него ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:09 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmЯ просто высказал собственное мнение, что логика обработки данных лучше смотрится в СУБД. Чисто имхо. это не означает, что ее нельзя вынести в средний слой. просто я, лично, такое не проповедую. Мне пользоваться простыми SQL предложениями гораздо комфортней и более предсказуемо, чем городить нечто с ORM и обработкой данных на Java,Delphi и т.п. Хотя тоже не отношусь к этому категорично. Гм. Хотелось бы увидеть эти простые SQL (а не T-SQL, например) предложения, обеспечивающие бизнес-логику и обработку данных. Бизнес-логика в большинстве приложений (даже очень простых) не сводится к DML. А это значит, что реально таки пишется средний слой, только не на универсальном языке, а на каком-нибудь T-SQL. Ну и все велосипеды, которые обычно уже есть в универсальных платформах - придумываются с нуля. Впрочем, ORM - это, конечно, зло :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:13 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3barrabas Нужны еще как. Помимо производительности еще и облегчение администрирования, все права даются на хранимки, а напрямую с таблицами клиент работать не должен. Да и изменение логики проходит проще - без сборки новой версии клиента, а просто заменой логики хранимки на сервере. Это ты опять про двузвенки говоришь, где причины появления хранимок вполне понятны (как эмуляция application layer). Да сколько-угодно-звенки! С точки зрения сервера, управляющего БД, все что к нему обращается снаружи - клиент. И если клиент читает/меняет данные в БД через хранимые процедуры, это: - во многих случаях, сильно ускоряет работу системы в целом, - упрощает обеспечение целостности и непротиворечивости данных, - сильно упрощает сопровождение и развитие системы; - про разделение доступа к объектам бд тут уже много писали... DPH3[А вот в трехзвенках ничего из этого уже не нужно... Ну, тогда dbf-ники на новелловском сервере лучшая БД для вас ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:16 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabas А почему бы и не сделать кэширование отдельно, зачем базу напрягать когда можно этого не делать, вариантов много, это один из вариантов. Обычно потребность в дополнительном (не средствами БД) кэшировании возникает или при очень высоких нагрузках (ну там сотни и тысячи запросов в секунду), или при очень больших объемах оперативных данных (десятки гигов, нужных ежесекундно - граф друзей, например) или при плохом проектировании БД и архитектуре системы вообще. Последний сценарий - наиболее популярный. Более того, если вам нужно кэширование данных от БД на промежуточном уровне, значит, скорее всего, нужно срочно делать шардинг :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:17 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3barrabas А почему бы и не сделать кэширование отдельно, зачем базу напрягать когда можно этого не делать, вариантов много, это один из вариантов. Обычно потребность в дополнительном (не средствами БД) кэшировании возникает или при очень высоких нагрузках (ну там сотни и тысячи запросов в секунду), или при очень больших объемах оперативных данных (десятки гигов, нужных ежесекундно - граф друзей, например) или при плохом проектировании БД и архитектуре системы вообще. Последний сценарий - наиболее популярный. Более того, если вам нужно кэширование данных от БД на промежуточном уровне, значит, скорее всего, нужно срочно делать шардинг :) у нас нету 3го слоя я гипотетически рассуждаю. пока он нам не нужен, но вообще есть идея wcf сервиса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:21 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabasПроще на самом деле. Меньше действий с процедурами: 1. исправил / закомитил в svn/cvs/меркуриал 2. выполнил без процедур: 1. Исправил / закомитил 2. собрал 3. выложил / в зависимости от слоя еще и всех выгнать из проги может понадобится 4. сказал всем перезайти. Ой. Я бы сказал, за такой набор действий убивать надо :) Правильный вариант: 1. Исправил 2. Закоммитил 3. Собрал релиз 4. Отдал в тестирование 5. Отдал в эксплуатацию И тут наличие шага "собрал" - оно гораздо удобнее, так как гарантирует, что то, что отдано в тестирование - и окажется на продакшне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:22 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmРечь о чем-то конкретном или Речь об ценности и полезности хранимок в трехзвенках. Гипотетических хранимок в гипотетических трезвенках. Общие соображения. А то назвали что-то нехорошим словом, а потом сказали, что даже не понимаете что там написано. Скучно. Я не сказал, что не понимаю :) Не хочу понимать. Не люблю я разбираться вот в таком вот перловом скотоложестве :) А что, там какой-то шедевр, заслуживающий пристального внимания? ------------------------- 2 barrabas да нет, просто только одна наша, а другие купленные Это объяснение того, почему "всё плохо". А никак не аргумент за то, что "это хорошо" и "это правильно" :) ------------------- 2 baracs И если клиент читает/меняет данные в БД через хранимые процедуры, это: - во многих случаях, сильно ускоряет работу системы в целом, - упрощает обеспечение целостности и непротиворечивости данных, - сильно упрощает сопровождение и развитие системы; - про разделение доступа к объектам бд тут уже много писали... В случае, если у СУБД ровно один клиент (а это именно случай многозвенных приложений) - Ваше высказывание неверно по всем пунктам (по некоторым пунктам оно неверно и в случае многих клиентов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:24 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3Гм. Хотелось бы увидеть эти простые SQL (а не T-SQL, например) предложения, обеспечивающие бизнес-логику и обработку данных. на рисунке - элемент среднего слоя. А ниже один из декомпозированных "пунктиков" сценария бизнес-логики (MRP планирование в данном случае). Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:28 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3Бизнес-логика в большинстве приложений (даже очень простых) не сводится к DML. А это значит, что реально таки пишется средний слой, только не на универсальном языке, а на каком-нибудь T-SQL. Ну и все велосипеды, которые обычно уже есть в универсальных платформах - придумываются с нуля. Если на T-SQL пишется также, как на процедурных языках, то таки да! Получается ужас Но любым инструментом надо уметь пользоваться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:30 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПЯ не сказал, что не понимаю :) Не хочу понимать. Не люблю я разбираться вот в таком вот перловом скотоложестве :) А что, там какой-то шедевр, заслуживающий пристального внимания? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:32 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПbaracs И если клиент читает/меняет данные в БД через хранимые процедуры, это: - во многих случаях, сильно ускоряет работу системы в целом, - упрощает обеспечение целостности и непротиворечивости данных, - сильно упрощает сопровождение и развитие системы; - про разделение доступа к объектам бд тут уже много писали... В случае, если у СУБД ровно один клиент (а это именно случай многозвенных приложений) - Ваше высказывание неверно по всем пунктам (по некоторым пунктам оно неверно и в случае многих клиентов) А поподробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:33 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
baracs И если клиент читает/меняет данные в БД через хранимые процедуры, это: - во многих случаях, сильно ускоряет работу системы в целом, Э, в каких? Ну, кроме серверного курсора по миллиону строк, который, нужен крайне редко (а лучше бы - никогда). baracs - упрощает обеспечение целостности и непротиворечивости данных, Как? baracs - сильно упрощает сопровождение и развитие системы; Ой, а тут - как? Как отдать в тестирование сборку промежуточного сервера - я знаю. А вот как отдать в тестирование структуру БД.... Я уж молчу про невозможность рефакторинга в SQLе, неразвитость (это мягко сказано) IDE, убогость языковых средств и т.д. baracs - про разделение доступа к объектам бд тут уже много писали... Э, а что, у вас каждый пользователь системы имеет отдельную учетную запись в БД? И авторизуется прямо в БД? А если нет - то где там разделение доступа, да и разделение для чего? baracs Ну, тогда dbf-ники на новелловском сервере лучшая БД для вас Ну, моя любимая БД - это IBM DB2. Самый развитый SQL и осознание потребностей трехзвенок :) Oracle, похоже, по привычке считает, что все приложения - двухзвенные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:33 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
p.s. 2 ЛП, сорвалось. нет там ничего сверхестветвенного. Просто пример когда рег.выражения перла помогут просто решить задачу предварительного приведения данных из разных клиент-банков к удобоваримому виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:37 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3barrabasПроще на самом деле. Меньше действий с процедурами: 1. исправил / закомитил в svn/cvs/меркуриал 2. выполнил без процедур: 1. Исправил / закомитил 2. собрал 3. выложил / в зависимости от слоя еще и всех выгнать из проги может понадобится 4. сказал всем перезайти. Ой. Я бы сказал, за такой набор действий убивать надо :) Правильный вариант: 1. Исправил 2. Закоммитил 3. Собрал релиз 4. Отдал в тестирование 5. Отдал в эксплуатацию И тут наличие шага "собрал" - оно гораздо удобнее, так как гарантирует, что то, что отдано в тестирование - и окажется на продакшне. тестирование это само сабой, для этого есть тестер и тестовый сервак на котором собственно и правится, эти пункты совпадают просто, я их и опустил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:39 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm (MRP планирование в данном случае). Ой. Так получилось, что MRP системы я писал... И что, у вас все варианты расчета планов реализованы чистым DMLем? А эвристики и различные алгоритмы прогнозирования для различных периодов, для различных товаров, для различных переделов у вас как реализуются? Тоже DMLем? А граничные условия для оценочных функций для планов (обычно задаваемые пользователем в виде выражений) - тоже DMLем? И линейное программирование вы тоже на DMLе делаете? Не верю :) Мне доводилось все это реализовывать средствами БД, на относительно чистом MS SQL... И нехватка нормального языка сказывалась чрезвычайно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:41 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
> Oracle, похоже, по привычке считает, что все приложения - двухзвенные. то-то у него cвоих аппликейшн серверов три штуки не считая всяких coherence и прочей middleware хрени наверна специально всё скупил чтобы испортить и заставить все писать хранимки на pl/sql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:43 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabas тестирование это само сабой, для этого есть тестер и тестовый сервак на котором собственно и правится, эти пункты совпадают просто, я их и опустил. А какая сущность отдается в тестирование? Что получает отдел тестирования от отдела разработки? Как для SQLя отмечаются релизы? (Кстати, особенно это актуально для Oracle, где синтаксический анализатор не слишком качественный. У нас был опыт, когда вставленный лишний пробел (незначащий) приводил к принципиальному изменению запроса). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:44 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП 2 barrabas да нет, просто только одна наша, а другие купленные Это объяснение того, почему "всё плохо". А никак не аргумент за то, что "это хорошо" и "это правильно" :) нет, это то что есть, и как я писал выше среднего слоя у нас пока нет, да и собственно если было бы иначе это была бы одна ИС с кучей баз данных. ------------- Если делать логику на среднем слое, то и воспользоваться ей можно только там и ниже, а вот в БД уже никак, а бывают задачи - написание скрипта где нужно, что то выгрузить получить быстро данные или еще чего, где очень пригодились бы готовые функции, а их в базе нету, придется или делать это в среднем слое и вызвать в клиенте (т.е. пересобирать клиента и прослойку) или дублировать в базе логику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:49 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3barrabas тестирование это само сабой, для этого есть тестер и тестовый сервак на котором собственно и правится, эти пункты совпадают просто, я их и опустил. А какая сущность отдается в тестирование? Что получает отдел тестирования от отдела разработки? Как для SQLя отмечаются релизы? (Кстати, особенно это актуально для Oracle, где синтаксический анализатор не слишком качественный. У нас был опыт, когда вставленный лишний пробел (незначащий) приводил к принципиальному изменению запроса). ничего клиент старый, просто проверить его поведение на измененной тестовой базе, после чего передается скрипт модификации БД тому у кого есть права изменять продакшин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:50 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3 (Кстати, особенно это актуально для Oracle, где синтаксический анализатор не слишком качественный . У нас был опыт, когда вставленный лишний пробел (незначащий) приводил к принципиальному изменению запроса). ой ёёёё ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:53 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3 (Кстати, особенно это актуально для Oracle, где синтаксический анализатор не слишком качественный . У нас был опыт, когда вставленный лишний пробел (незначащий) приводил к принципиальному изменению запроса). просто план запроса перестраивался из-за изменения текста, а там уж статистика и настройки на тот момент играют роль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:55 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
двухзвенный оракл> Oracle, похоже, по привычке считает, что все приложения - двухзвенные. то-то у него cвоих аппликейшн серверов три штуки не считая всяких coherence и прочей middleware хрени наверна специально всё скупил чтобы испортить и заставить все писать хранимки на pl/sql Э, ты хочешь поговорить об этом? Просто, увы, сейчас для компании, предоставляющей решения (а не отдельные компоненты), необходимо иметь сервер приложений. Вот Оракл и купил. Но при этом возникает ощущение, что при разработки БД Oracle разработчики предполагают, что всякие трехзвенки - это от лукавого. Ну, например, jdbc драйвер к Oracle - это жуткое глюкалово, работа с Oracle Stream не из БД - тоже, мягко говоря, не безглючна. Всевозможных операций типа select from insert (с нормальной поддержкой на уровне jdbc) до сих пор нет - ну и т.д. И таких мелочей - довольно много, при активной разработке они заметны. Зато функциональности для реализации бизнес-логики внутри БД - дофига и все больше и больше. Да и только после покупки WebLogic можно считать, что у Оракл появился сервер приложений. Орион (в девичестве) - это совсем несерьезно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:56 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3iscrafm (MRP планирование в данном случае). Ой. Так получилось, что MRP системы я писал... И что, у вас все варианты расчета планов реализованы чистым DMLем? А эвристики и различные алгоритмы прогнозирования для различных периодов, для различных товаров, для различных переделов у вас как реализуются? Тоже DMLем? А граничные условия для оценочных функций для планов (обычно задаваемые пользователем в виде выражений) - тоже DMLем? И линейное программирование вы тоже на DMLе делаете? Не верю :) чуть выше пример регулярных выражений на перле. А теперь просто представьте это в виде цепочки примитивов. Это я к тому, что если Вы знаете внутренности MRP, то наверняка помните, что он конечно большой, но состоит из цепочки таких примитивов. Рекомендую в материалах APIS этот вопрос посмотреть. Из моих настольных книг в 90-е - Ландватер. Этот учебник хорош тем, что не изобилует ненужной в данном вопросе математикой, а обучает тому же самому с точки зрения пошаговой логики, которая прекрасно ложится на реляционную модель. Переводы лучше не читать, путаница в терминах и половина материала покоцана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:00 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3baracs И если клиент читает/меняет данные в БД через хранимые процедуры, это: - во многих случаях, сильно ускоряет работу системы в целом, Э, в каких? Ну, кроме серверного курсора по миллиону строк, который, нужен крайне редко (а лучше бы - никогда). Когда приложение вытягивает из нескольких таблиц по нескольку сотен тыщ строк, чтобы внутри себя их перелопатить и выбрать из этой кучи пару десятков нужных. DPH3baracs - упрощает обеспечение целостности и непротиворечивости данных, Как? Выполняя необходимые проверки, когда они требуют обращения ко множеству таблиц, не "вылезая" с сервера. DPH3baracs - сильно упрощает сопровождение и развитие системы; Ой, а тут - как? Как отдать в тестирование сборку промежуточного сервера - я знаю. А вот как отдать в тестирование структуру БД.... Я уж молчу про невозможность рефакторинга в SQLе, неразвитость (это мягко сказано) IDE, убогость языковых средств и т.д. А БД - это не модуль. Она плавно развивается, как живой организм. ХП и представления, как раз и помогают смягчать последствия болезней роста. Ох чую, на разных языках мы говорим DPH3baracs - про разделение доступа к объектам бд тут уже много писали... Э, а что, у вас каждый пользователь системы имеет отдельную учетную запись в БД? И авторизуется прямо в БД? А разновсякие есть Жизнь, она разнообразна... DPH3baracs Ну, тогда dbf-ники на новелловском сервере лучшая БД для вас Ну, моя любимая БД - это IBM DB2. Самый развитый SQL и осознание потребностей трехзвенок :) К сожалению, нет возможности осознать всю крутизну... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:01 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabasпросто план запроса перестраивался из-за изменения текста, а там уж статистика и настройки на тот момент играют роль Э, я разве говорил про изменение плана? История следующая: alter table, добавляется nullable колонка. По идее все замечательно, операция практически мгновенная, реальные строки не меняются. Но если поставить пробел перед закрывающей ";", то Oracle начинает таки реально добавлять пустое поле во все строки (вывесив table lock). Таблица была большой :( Отослали багрепорт в Oracle, там признали ошибку. Вообще, проблем именно с качеством синтаксического анализатора в Oracle хватает. Вплоть до рекомендаций не использовать ANSIшный формат join-ов из-за возможных ошибок (в 10ке, правда, такого уже нет, про 9ку - не знаю). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:01 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=36280188&tid=1552871]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 394ms |

| 0 / 0 |
