Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7 8 9 10 .. 14   вперед  Ctrl
 Re: использование хранимых процедур  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10530
iscrafm
ЛП
Есть трехзвенка - на фиг бы мне сдались хранимые процедуры. (исключая вопросы производительности, из за которых конечно же может понадобиться заниматься размазыванием).

"нафиг бы"? Речь о чем-то конкретном или просто о барышнях рассуждаем которых пощупать нет возможности? А то назвали что-то нехорошим словом, а потом сказали, что даже не понимаете что там написано. Скучно.

в оракле есть пакеты, и миллион хранимок это не про него
29 окт 09, 16:09    [7857460]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
DPH3
Guest
iscrafm
Я просто высказал собственное мнение, что логика обработки данных лучше смотрится в СУБД. Чисто имхо. это не означает, что ее нельзя вынести в средний слой. просто я, лично, такое не проповедую. Мне пользоваться простыми SQL предложениями гораздо комфортней и более предсказуемо, чем городить нечто с ORM и обработкой данных на Java,Delphi и т.п. Хотя тоже не отношусь к этому категорично.


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

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

Впрочем, ORM - это, конечно, зло :)
29 окт 09, 16:13    [7857502]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
baracs
Member

Откуда: Москва
Сообщений: 7219
DPH3
barrabas

Нужны еще как.
Помимо производительности еще и облегчение администрирования, все права даются на хранимки, а напрямую с таблицами клиент работать не должен. Да и изменение логики проходит проще - без сборки новой версии клиента, а просто заменой логики хранимки на сервере.

Это ты опять про двузвенки говоришь, где причины появления хранимок вполне понятны (как эмуляция application layer).

Да сколько-угодно-звенки!
С точки зрения сервера, управляющего БД, все что к нему обращается снаружи - клиент. И если клиент читает/меняет данные в БД через хранимые процедуры, это:
- во многих случаях, сильно ускоряет работу системы в целом,
- упрощает обеспечение целостности и непротиворечивости данных,
- сильно упрощает сопровождение и развитие системы;
- про разделение доступа к объектам бд тут уже много писали...
DPH3
[А вот в трехзвенках ничего из этого уже не нужно...

Ну, тогда dbf-ники на новелловском сервере лучшая БД для вас
29 окт 09, 16:16    [7857539]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
DPH3
Guest
barrabas

А почему бы и не сделать кэширование отдельно, зачем базу напрягать когда можно этого не делать, вариантов много, это один из вариантов.


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

Более того, если вам нужно кэширование данных от БД на промежуточном уровне, значит, скорее всего, нужно срочно делать шардинг :)
29 окт 09, 16:17    [7857557]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10530
DPH3
barrabas

А почему бы и не сделать кэширование отдельно, зачем базу напрягать когда можно этого не делать, вариантов много, это один из вариантов.


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

Более того, если вам нужно кэширование данных от БД на промежуточном уровне, значит, скорее всего, нужно срочно делать шардинг :)

у нас нету 3го слоя
я гипотетически рассуждаю.
пока он нам не нужен, но вообще есть идея wcf сервиса
29 окт 09, 16:21    [7857585]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
DPH3
Guest
barrabas
Проще на самом деле.
Меньше действий
с процедурами:
1. исправил / закомитил в svn/cvs/меркуриал
2. выполнил

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


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

И тут наличие шага "собрал" - оно гораздо удобнее, так как гарантирует, что то, что отдано в тестирование - и окажется на продакшне.
29 окт 09, 16:22    [7857589]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
ЛП
Guest
iscrafm
Речь о чем-то конкретном или

Речь об ценности и полезности хранимок в трехзвенках. Гипотетических хранимок в гипотетических трезвенках. Общие соображения.

А то назвали что-то нехорошим словом, а потом сказали, что даже не понимаете что там написано. Скучно.

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

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

2 barrabas
да нет, просто только одна наша, а другие купленные

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

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

2 baracs
И если клиент читает/меняет данные в БД через хранимые процедуры, это:
- во многих случаях, сильно ускоряет работу системы в целом,
- упрощает обеспечение целостности и непротиворечивости данных,
- сильно упрощает сопровождение и развитие системы;
- про разделение доступа к объектам бд тут уже много писали...

В случае, если у СУБД ровно один клиент (а это именно случай многозвенных приложений) - Ваше высказывание неверно по всем пунктам (по некоторым пунктам оно неверно и в случае многих клиентов)
29 окт 09, 16:24    [7857618]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
iscrafm
Member [заблокирован]

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


на рисунке - элемент среднего слоя. А ниже один из декомпозированных "пунктиков" сценария бизнес-логики (MRP планирование в данном случае).
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


К сообщению приложен файл. Размер - 0Kb
29 окт 09, 16:28    [7857644]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
baracs
Member

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

Если на T-SQL пишется также, как на процедурных языках, то таки да! Получается ужас
Но любым инструментом надо уметь пользоваться...
29 окт 09, 16:30    [7857656]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35345
ЛП
Я не сказал, что не понимаю :)
Не хочу понимать. Не люблю я разбираться вот в таком вот перловом скотоложестве :)
А что, там какой-то шедевр, заслуживающий пристального внимания?
29 окт 09, 16:32    [7857677]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
baracs
Member

Откуда: Москва
Сообщений: 7219
ЛП
baracs
И если клиент читает/меняет данные в БД через хранимые процедуры, это:
- во многих случаях, сильно ускоряет работу системы в целом,
- упрощает обеспечение целостности и непротиворечивости данных,
- сильно упрощает сопровождение и развитие системы;
- про разделение доступа к объектам бд тут уже много писали...

В случае, если у СУБД ровно один клиент (а это именно случай многозвенных приложений) - Ваше высказывание неверно по всем пунктам (по некоторым пунктам оно неверно и в случае многих клиентов)

А поподробнее?
29 окт 09, 16:33    [7857688]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
DPH3
Guest
baracs
И если клиент читает/меняет данные в БД через хранимые процедуры, это:
- во многих случаях, сильно ускоряет работу системы в целом,

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

- упрощает обеспечение целостности и непротиворечивости данных,

Как?

baracs

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

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

baracs

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

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

baracs

Ну, тогда dbf-ники на новелловском сервере лучшая БД для вас

Ну, моя любимая БД - это IBM DB2. Самый развитый SQL и осознание потребностей трехзвенок :)
Oracle, похоже, по привычке считает, что все приложения - двухзвенные.
29 окт 09, 16:33    [7857692]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35345
p.s. 2 ЛП, сорвалось.
нет там ничего сверхестветвенного. Просто пример когда рег.выражения перла помогут просто решить задачу предварительного приведения данных из разных клиент-банков к удобоваримому виду.
29 окт 09, 16:37    [7857720]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10530
DPH3
barrabas
Проще на самом деле.
Меньше действий
с процедурами:
1. исправил / закомитил в svn/cvs/меркуриал
2. выполнил

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


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

И тут наличие шага "собрал" - оно гораздо удобнее, так как гарантирует, что то, что отдано в тестирование - и окажется на продакшне.

тестирование это само сабой, для этого есть тестер и тестовый сервак на котором собственно и правится, эти пункты совпадают просто, я их и опустил.
29 окт 09, 16:39    [7857732]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
DPH3
Guest
iscrafm

(MRP планирование в данном случае).


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

Мне доводилось все это реализовывать средствами БД, на относительно чистом MS SQL...
И нехватка нормального языка сказывалась чрезвычайно...
29 окт 09, 16:41    [7857748]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
двухзвенный оракл
Guest
> Oracle, похоже, по привычке считает, что все приложения - двухзвенные.

то-то у него cвоих аппликейшн серверов три штуки не считая всяких coherence и прочей middleware хрени
наверна специально всё скупил чтобы испортить и заставить все писать хранимки на pl/sql
29 окт 09, 16:43    [7857765]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
DPH3
Guest
barrabas

тестирование это само сабой, для этого есть тестер и тестовый сервак на котором собственно и правится, эти пункты совпадают просто, я их и опустил.


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

(Кстати, особенно это актуально для Oracle, где синтаксический анализатор не слишком качественный. У нас был опыт, когда вставленный лишний пробел (незначащий) приводил к принципиальному изменению запроса).
29 окт 09, 16:44    [7857777]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10530
ЛП

2 barrabas
да нет, просто только одна наша, а другие купленные

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

нет, это то что есть, и как я писал выше среднего слоя у нас пока нет,
да и собственно если было бы иначе это была бы одна ИС с кучей баз данных.
-------------
Если делать логику на среднем слое, то и воспользоваться ей можно только там и ниже, а вот в БД уже никак, а бывают задачи - написание скрипта где нужно, что то выгрузить получить быстро данные или еще чего, где очень пригодились бы готовые функции, а их в базе нету, придется или делать это в среднем слое и вызвать в клиенте (т.е. пересобирать клиента и прослойку) или дублировать в базе логику.
29 окт 09, 16:49    [7857809]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10530
DPH3
barrabas

тестирование это само сабой, для этого есть тестер и тестовый сервак на котором собственно и правится, эти пункты совпадают просто, я их и опустил.


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

(Кстати, особенно это актуально для Oracle, где синтаксический анализатор не слишком качественный. У нас был опыт, когда вставленный лишний пробел (незначащий) приводил к принципиальному изменению запроса).

ничего клиент старый, просто проверить его поведение на измененной тестовой базе, после чего передается скрипт модификации БД тому у кого есть права изменять продакшин.
29 окт 09, 16:50    [7857823]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10530
DPH3

(Кстати, особенно это актуально для Oracle, где синтаксический анализатор не слишком качественный. У нас был опыт, когда вставленный лишний пробел (незначащий) приводил к принципиальному изменению запроса).

ой ёёёё
29 окт 09, 16:53    [7857842]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10530
DPH3

(Кстати, особенно это актуально для Oracle, где синтаксический анализатор не слишком качественный. У нас был опыт, когда вставленный лишний пробел (незначащий) приводил к принципиальному изменению запроса).

просто план запроса перестраивался из-за изменения текста, а там уж статистика и настройки на тот момент играют роль
29 окт 09, 16:55    [7857855]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
DPH3
Guest
двухзвенный оракл
> Oracle, похоже, по привычке считает, что все приложения - двухзвенные.
то-то у него cвоих аппликейшн серверов три штуки не считая всяких coherence и прочей middleware хрени
наверна специально всё скупил чтобы испортить и заставить все писать хранимки на pl/sql


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

Да и только после покупки WebLogic можно считать, что у Оракл появился сервер приложений. Орион (в девичестве) - это совсем несерьезно :)
29 окт 09, 16:56    [7857861]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35345
DPH3
iscrafm

(MRP планирование в данном случае).

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

чуть выше пример регулярных выражений на перле. А теперь просто представьте это в виде цепочки примитивов. Это я к тому, что если Вы знаете внутренности MRP, то наверняка помните, что он конечно большой, но состоит из цепочки таких примитивов. Рекомендую в материалах APIS этот вопрос посмотреть. Из моих настольных книг в 90-е - Ландватер. Этот учебник хорош тем, что не изобилует ненужной в данном вопросе математикой, а обучает тому же самому с точки зрения пошаговой логики, которая прекрасно ложится на реляционную модель. Переводы лучше не читать, путаница в терминах и половина материала покоцана.

К сообщению приложен файл. Размер - 0Kb
29 окт 09, 17:00    [7857891]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
baracs
Member

Откуда: Москва
Сообщений: 7219
DPH3
baracs
И если клиент читает/меняет данные в БД через хранимые процедуры, это:
- во многих случаях, сильно ускоряет работу системы в целом,

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

Когда приложение вытягивает из нескольких таблиц по нескольку сотен тыщ строк, чтобы внутри себя их перелопатить и выбрать из этой кучи пару десятков нужных.
DPH3
baracs

- упрощает обеспечение целостности и непротиворечивости данных,

Как?

Выполняя необходимые проверки, когда они требуют обращения ко множеству таблиц, не "вылезая" с сервера.
DPH3
baracs

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

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

А БД - это не модуль.
Она плавно развивается, как живой организм. ХП и представления, как раз и помогают смягчать последствия болезней роста.
Ох чую, на разных языках мы говорим
DPH3
baracs

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

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

А разновсякие есть Жизнь, она разнообразна...
DPH3
baracs

Ну, тогда dbf-ники на новелловском сервере лучшая БД для вас

Ну, моя любимая БД - это IBM DB2. Самый развитый SQL и осознание потребностей трехзвенок :)

К сожалению, нет возможности осознать всю крутизну...
29 окт 09, 17:01    [7857899]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
DPH3
Guest
barrabas
просто план запроса перестраивался из-за изменения текста, а там уж статистика и настройки на тот момент играют роль


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

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


Вообще, проблем именно с качеством синтаксического анализатора в Oracle хватает. Вплоть до рекомендаций не использовать ANSIшный формат join-ов из-за возможных ошибок (в 10ке, правда, такого уже нет, про 9ку - не знаю).
29 окт 09, 17:01    [7857905]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7 8 9 10 .. 14   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить