powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / использование хранимых процедур
25 сообщений из 343, страница 4 из 14
использование хранимых процедур
    #36280188
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmЛПЕсть трехзвенка - на фиг бы мне сдались хранимые процедуры. (исключая вопросы производительности, из за которых конечно же может понадобиться заниматься размазыванием).
"нафиг бы"? Речь о чем-то конкретном или просто о барышнях рассуждаем которых пощупать нет возможности? А то назвали что-то нехорошим словом, а потом сказали, что даже не понимаете что там написано. Скучно.
в оракле есть пакеты, и миллион хранимок это не про него
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280204
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmЯ просто высказал собственное мнение, что логика обработки данных лучше смотрится в СУБД. Чисто имхо. это не означает, что ее нельзя вынести в средний слой. просто я, лично, такое не проповедую. Мне пользоваться простыми SQL предложениями гораздо комфортней и более предсказуемо, чем городить нечто с ORM и обработкой данных на Java,Delphi и т.п. Хотя тоже не отношусь к этому категорично.

Гм. Хотелось бы увидеть эти простые SQL (а не T-SQL, например) предложения, обеспечивающие бизнес-логику и обработку данных.

Бизнес-логика в большинстве приложений (даже очень простых) не сводится к DML. А это значит, что реально таки пишется средний слой, только не на универсальном языке, а на каком-нибудь T-SQL. Ну и все велосипеды, которые обычно уже есть в универсальных платформах - придумываются с нуля.

Впрочем, ORM - это, конечно, зло :)
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280216
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3barrabas
Нужны еще как.
Помимо производительности еще и облегчение администрирования, все права даются на хранимки, а напрямую с таблицами клиент работать не должен. Да и изменение логики проходит проще - без сборки новой версии клиента, а просто заменой логики хранимки на сервере.
Это ты опять про двузвенки говоришь, где причины появления хранимок вполне понятны (как эмуляция application layer).
Да сколько-угодно-звенки!
С точки зрения сервера, управляющего БД, все что к нему обращается снаружи - клиент. И если клиент читает/меняет данные в БД через хранимые процедуры, это:
- во многих случаях, сильно ускоряет работу системы в целом,
- упрощает обеспечение целостности и непротиворечивости данных,
- сильно упрощает сопровождение и развитие системы;
- про разделение доступа к объектам бд тут уже много писали...
DPH3[А вот в трехзвенках ничего из этого уже не нужно...
Ну, тогда dbf-ники на новелловском сервере лучшая БД для вас
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280225
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barrabas
А почему бы и не сделать кэширование отдельно, зачем базу напрягать когда можно этого не делать, вариантов много, это один из вариантов.

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

Более того, если вам нужно кэширование данных от БД на промежуточном уровне, значит, скорее всего, нужно срочно делать шардинг :)
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280231
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3barrabas
А почему бы и не сделать кэширование отдельно, зачем базу напрягать когда можно этого не делать, вариантов много, это один из вариантов.

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

Более того, если вам нужно кэширование данных от БД на промежуточном уровне, значит, скорее всего, нужно срочно делать шардинг :)
у нас нету 3го слоя
я гипотетически рассуждаю.
пока он нам не нужен, но вообще есть идея wcf сервиса
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280233
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barrabasПроще на самом деле.
Меньше действий
с процедурами:
1. исправил / закомитил в svn/cvs/меркуриал
2. выполнил

без процедур:
1. Исправил / закомитил
2. собрал
3. выложил / в зависимости от слоя еще и всех выгнать из проги может понадобится
4. сказал всем перезайти.

Ой. Я бы сказал, за такой набор действий убивать надо :)
Правильный вариант:
1. Исправил
2. Закоммитил
3. Собрал релиз
4. Отдал в тестирование
5. Отдал в эксплуатацию

И тут наличие шага "собрал" - оно гораздо удобнее, так как гарантирует, что то, что отдано в тестирование - и окажется на продакшне.
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280247
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmРечь о чем-то конкретном или
Речь об ценности и полезности хранимок в трехзвенках. Гипотетических хранимок в гипотетических трезвенках. Общие соображения.

А то назвали что-то нехорошим словом, а потом сказали, что даже не понимаете что там написано. Скучно.
Я не сказал, что не понимаю :)
Не хочу понимать. Не люблю я разбираться вот в таком вот перловом скотоложестве :)
А что, там какой-то шедевр, заслуживающий пристального внимания?

-------------------------

2 barrabas
да нет, просто только одна наша, а другие купленные
Это объяснение того, почему "всё плохо". А никак не аргумент за то, что "это хорошо" и "это правильно" :)

-------------------

2 baracs
И если клиент читает/меняет данные в БД через хранимые процедуры, это:
- во многих случаях, сильно ускоряет работу системы в целом,
- упрощает обеспечение целостности и непротиворечивости данных,
- сильно упрощает сопровождение и развитие системы;
- про разделение доступа к объектам бд тут уже много писали...
В случае, если у СУБД ровно один клиент (а это именно случай многозвенных приложений) - Ваше высказывание неверно по всем пунктам (по некоторым пунктам оно неверно и в случае многих клиентов)
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280256
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3Гм. Хотелось бы увидеть эти простые SQL (а не T-SQL, например) предложения, обеспечивающие бизнес-логику и обработку данных.


на рисунке - элемент среднего слоя. А ниже один из декомпозированных "пунктиков" сценария бизнес-логики (MRP планирование в данном случае).
Код: plaintext
1.
2.
UPDATE MRP01 SET GR = D.UM,GRAM = D.AM, GRPRC=D.RPRC, GRCOST = D.COST
FROM MRP01 T
INNER JOIN MRP03 D ON D.ITEMNO = T.ITEMNO AND D.PID = T.PID
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280262
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3Бизнес-логика в большинстве приложений (даже очень простых) не сводится к DML. А это значит, что реально таки пишется средний слой, только не на универсальном языке, а на каком-нибудь T-SQL. Ну и все велосипеды, которые обычно уже есть в универсальных платформах - придумываются с нуля.
Если на T-SQL пишется также, как на процедурных языках, то таки да! Получается ужас
Но любым инструментом надо уметь пользоваться...
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280272
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПЯ не сказал, что не понимаю :)
Не хочу понимать. Не люблю я разбираться вот в таком вот перловом скотоложестве :)
А что, там какой-то шедевр, заслуживающий пристального внимания?
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280276
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПbaracs
И если клиент читает/меняет данные в БД через хранимые процедуры, это:
- во многих случаях, сильно ускоряет работу системы в целом,
- упрощает обеспечение целостности и непротиворечивости данных,
- сильно упрощает сопровождение и развитие системы;
- про разделение доступа к объектам бд тут уже много писали...
В случае, если у СУБД ровно один клиент (а это именно случай многозвенных приложений) - Ваше высказывание неверно по всем пунктам (по некоторым пунктам оно неверно и в случае многих клиентов)
А поподробнее?
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280278
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baracs И если клиент читает/меняет данные в БД через хранимые процедуры, это:
- во многих случаях, сильно ускоряет работу системы в целом,

Э, в каких? Ну, кроме серверного курсора по миллиону строк, который, нужен крайне редко (а лучше бы - никогда).
baracs
- упрощает обеспечение целостности и непротиворечивости данных,

Как?

baracs
- сильно упрощает сопровождение и развитие системы;

Ой, а тут - как? Как отдать в тестирование сборку промежуточного сервера - я знаю.
А вот как отдать в тестирование структуру БД....
Я уж молчу про невозможность рефакторинга в SQLе, неразвитость (это мягко сказано) IDE, убогость языковых средств и т.д.

baracs
- про разделение доступа к объектам бд тут уже много писали...

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

baracs
Ну, тогда dbf-ники на новелловском сервере лучшая БД для вас
Ну, моя любимая БД - это IBM DB2. Самый развитый SQL и осознание потребностей трехзвенок :)
Oracle, похоже, по привычке считает, что все приложения - двухзвенные.
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280293
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p.s. 2 ЛП, сорвалось.
нет там ничего сверхестветвенного. Просто пример когда рег.выражения перла помогут просто решить задачу предварительного приведения данных из разных клиент-банков к удобоваримому виду.
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280300
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3barrabasПроще на самом деле.
Меньше действий
с процедурами:
1. исправил / закомитил в svn/cvs/меркуриал
2. выполнил

без процедур:
1. Исправил / закомитил
2. собрал
3. выложил / в зависимости от слоя еще и всех выгнать из проги может понадобится
4. сказал всем перезайти.

Ой. Я бы сказал, за такой набор действий убивать надо :)
Правильный вариант:
1. Исправил
2. Закоммитил
3. Собрал релиз
4. Отдал в тестирование
5. Отдал в эксплуатацию

И тут наличие шага "собрал" - оно гораздо удобнее, так как гарантирует, что то, что отдано в тестирование - и окажется на продакшне.
тестирование это само сабой, для этого есть тестер и тестовый сервак на котором собственно и правится, эти пункты совпадают просто, я их и опустил.
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280306
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm
(MRP планирование в данном случае).


Ой. Так получилось, что MRP системы я писал...
И что, у вас все варианты расчета планов реализованы чистым DMLем?
А эвристики и различные алгоритмы прогнозирования для различных периодов, для различных товаров, для различных переделов у вас как реализуются? Тоже DMLем?
А граничные условия для оценочных функций для планов (обычно задаваемые пользователем в виде выражений) - тоже DMLем?
И линейное программирование вы тоже на DMLе делаете?
Не верю :)

Мне доводилось все это реализовывать средствами БД, на относительно чистом MS SQL...
И нехватка нормального языка сказывалась чрезвычайно...
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280319
> Oracle, похоже, по привычке считает, что все приложения - двухзвенные.

то-то у него cвоих аппликейшн серверов три штуки не считая всяких coherence и прочей middleware хрени
наверна специально всё скупил чтобы испортить и заставить все писать хранимки на pl/sql
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280326
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barrabas
тестирование это само сабой, для этого есть тестер и тестовый сервак на котором собственно и правится, эти пункты совпадают просто, я их и опустил.

А какая сущность отдается в тестирование? Что получает отдел тестирования от отдела разработки? Как для SQLя отмечаются релизы?

(Кстати, особенно это актуально для Oracle, где синтаксический анализатор не слишком качественный. У нас был опыт, когда вставленный лишний пробел (незначащий) приводил к принципиальному изменению запроса).
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280344
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП
2 barrabas
да нет, просто только одна наша, а другие купленные
Это объяснение того, почему "всё плохо". А никак не аргумент за то, что "это хорошо" и "это правильно" :)

нет, это то что есть, и как я писал выше среднего слоя у нас пока нет,
да и собственно если было бы иначе это была бы одна ИС с кучей баз данных.
-------------
Если делать логику на среднем слое, то и воспользоваться ей можно только там и ниже, а вот в БД уже никак, а бывают задачи - написание скрипта где нужно, что то выгрузить получить быстро данные или еще чего, где очень пригодились бы готовые функции, а их в базе нету, придется или делать это в среднем слое и вызвать в клиенте (т.е. пересобирать клиента и прослойку) или дублировать в базе логику.
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280351
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3barrabas
тестирование это само сабой, для этого есть тестер и тестовый сервак на котором собственно и правится, эти пункты совпадают просто, я их и опустил.

А какая сущность отдается в тестирование? Что получает отдел тестирования от отдела разработки? Как для SQLя отмечаются релизы?

(Кстати, особенно это актуально для Oracle, где синтаксический анализатор не слишком качественный. У нас был опыт, когда вставленный лишний пробел (незначащий) приводил к принципиальному изменению запроса).
ничего клиент старый, просто проверить его поведение на измененной тестовой базе, после чего передается скрипт модификации БД тому у кого есть права изменять продакшин.
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280364
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3
(Кстати, особенно это актуально для Oracle, где синтаксический анализатор не слишком качественный . У нас был опыт, когда вставленный лишний пробел (незначащий) приводил к принципиальному изменению запроса).
ой ёёёё
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280371
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3
(Кстати, особенно это актуально для Oracle, где синтаксический анализатор не слишком качественный . У нас был опыт, когда вставленный лишний пробел (незначащий) приводил к принципиальному изменению запроса).
просто план запроса перестраивался из-за изменения текста, а там уж статистика и настройки на тот момент играют роль
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280374
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
двухзвенный оракл> Oracle, похоже, по привычке считает, что все приложения - двухзвенные.
то-то у него cвоих аппликейшн серверов три штуки не считая всяких coherence и прочей middleware хрени
наверна специально всё скупил чтобы испортить и заставить все писать хранимки на pl/sql

Э, ты хочешь поговорить об этом?
Просто, увы, сейчас для компании, предоставляющей решения (а не отдельные компоненты), необходимо иметь сервер приложений. Вот Оракл и купил.
Но при этом возникает ощущение, что при разработки БД Oracle разработчики предполагают, что всякие трехзвенки - это от лукавого.
Ну, например, jdbc драйвер к Oracle - это жуткое глюкалово, работа с Oracle Stream не из БД - тоже, мягко говоря, не безглючна. Всевозможных операций типа select from insert (с нормальной поддержкой на уровне jdbc) до сих пор нет - ну и т.д.
И таких мелочей - довольно много, при активной разработке они заметны.
Зато функциональности для реализации бизнес-логики внутри БД - дофига и все больше и больше.

Да и только после покупки WebLogic можно считать, что у Оракл появился сервер приложений. Орион (в девичестве) - это совсем несерьезно :)
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280391
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3iscrafm
(MRP планирование в данном случае).

Ой. Так получилось, что MRP системы я писал...
И что, у вас все варианты расчета планов реализованы чистым DMLем?
А эвристики и различные алгоритмы прогнозирования для различных периодов, для различных товаров, для различных переделов у вас как реализуются? Тоже DMLем?
А граничные условия для оценочных функций для планов (обычно задаваемые пользователем в виде выражений) - тоже DMLем?
И линейное программирование вы тоже на DMLе делаете?
Не верю :)

чуть выше пример регулярных выражений на перле. А теперь просто представьте это в виде цепочки примитивов. Это я к тому, что если Вы знаете внутренности MRP, то наверняка помните, что он конечно большой, но состоит из цепочки таких примитивов. Рекомендую в материалах APIS этот вопрос посмотреть. Из моих настольных книг в 90-е - Ландватер. Этот учебник хорош тем, что не изобилует ненужной в данном вопросе математикой, а обучает тому же самому с точки зрения пошаговой логики, которая прекрасно ложится на реляционную модель. Переводы лучше не читать, путаница в терминах и половина материала покоцана.
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280396
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3baracs И если клиент читает/меняет данные в БД через хранимые процедуры, это:
- во многих случаях, сильно ускоряет работу системы в целом,

Э, в каких? Ну, кроме серверного курсора по миллиону строк, который, нужен крайне редко (а лучше бы - никогда).
Когда приложение вытягивает из нескольких таблиц по нескольку сотен тыщ строк, чтобы внутри себя их перелопатить и выбрать из этой кучи пару десятков нужных.
DPH3baracs
- упрощает обеспечение целостности и непротиворечивости данных,

Как?
Выполняя необходимые проверки, когда они требуют обращения ко множеству таблиц, не "вылезая" с сервера.
DPH3baracs
- сильно упрощает сопровождение и развитие системы;

Ой, а тут - как? Как отдать в тестирование сборку промежуточного сервера - я знаю.
А вот как отдать в тестирование структуру БД....
Я уж молчу про невозможность рефакторинга в SQLе, неразвитость (это мягко сказано) IDE, убогость языковых средств и т.д.
А БД - это не модуль.
Она плавно развивается, как живой организм. ХП и представления, как раз и помогают смягчать последствия болезней роста.
Ох чую, на разных языках мы говорим
DPH3baracs
- про разделение доступа к объектам бд тут уже много писали...

Э, а что, у вас каждый пользователь системы имеет отдельную учетную запись в БД? И авторизуется прямо в БД?
А разновсякие есть Жизнь, она разнообразна...
DPH3baracs
Ну, тогда dbf-ники на новелловском сервере лучшая БД для вас
Ну, моя любимая БД - это IBM DB2. Самый развитый SQL и осознание потребностей трехзвенок :)
К сожалению, нет возможности осознать всю крутизну...
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36280399
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barrabasпросто план запроса перестраивался из-за изменения текста, а там уж статистика и настройки на тот момент играют роль

Э, я разве говорил про изменение плана?
История следующая: alter table, добавляется nullable колонка.
По идее все замечательно, операция практически мгновенная, реальные строки не меняются.
Но если поставить пробел перед закрывающей ";", то Oracle начинает таки реально добавлять пустое поле во все строки (вывесив table lock). Таблица была большой :(

Отослали багрепорт в Oracle, там признали ошибку.


Вообще, проблем именно с качеством синтаксического анализатора в Oracle хватает. Вплоть до рекомендаций не использовать ANSIшный формат join-ов из-за возможных ошибок (в 10ке, правда, такого уже нет, про 9ку - не знаю).
...
Рейтинг: 0 / 0
25 сообщений из 343, страница 4 из 14
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / использование хранимых процедур
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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