|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123 "БЛ - на сервер" - этим всё сказано. Я правильно понимаю, что других преимуществ кроме возможности реализации бизнес-логики у процедур вы привести не можете? Ну а то, что "сервера" разные бывают и можно реализовать БЛ на сервере бех ХП я говорить не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 11:59 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov AndreyPetro123 "БЛ - на сервер" - этим всё сказано. Я правильно понимаю, что других преимуществ кроме возможности реализации бизнес-логики у процедур вы привести не можете? Ну а то, что "сервера" разные бывают и можно реализовать БЛ на сервере бех ХП я говорить не буду. вы не можете понять, что "программист может всё", даже самые бредовые идеи реализовать. Есть только проблема в простоте-адекватности проекта, дешевизне проекта, и выполения поставленной задачи ограниченными рессурсами. "Сложнее всего в мире достигнуть простоты - это крайняя граница опыта и последнее усилие гения". George Sand. уж так случилось, что ООП язык клиента и Мира не реализуется в РСУБД. А хранить НЕпротиворечивые данные - надо. Приведите пример БЛ, которую лучше решать НЕ на сервере или НА сервере без ХП (ХП тут уже есть) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 12:19 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123уж так случилось, что ООП язык клиента и Мира не реализуется в РСУБД. А хранить НЕпротиворечивые данные - надо. Приведите пример БЛ, которую лучше решать НЕ на сервере или НА сервере без ХП (ХП тут уже есть) Вы никак не можете понять, что сервера бывают разные. И это не только сервера РСУБД. На некоторых серверах ООП языки вполне себе реализуются. Но в любом случае все это тема для другого разговора. Я уже писал, что меня не интересуют возможности ХП, как средства реализации бизнес-логики (нормальным ООП-языкам они уступают, но в случае двузвенного приложения других вариантов нет). Я хочу услышать о преимуществах ХП перед SQL-запросами в задаче сохранения/извлечения данных. А вы мне упорно бизнес-логику подсовываете. Есть что сказать кроме бизнес-логики? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 12:32 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov Andrey Мне, например, кажется, что удобнее просто создать таблицу, а потом в соответствующем классе на Java написать четыре SQL-оператора, чем городить еще и промежуточный слой в виде четырех хранимых процедур внутрь которых эти операторы запрятаны. К сожалению, удобнее создать, может прийти в противоречие с удобнее сопровождать, дорабатывать. Особенно если клиентские программеры и серверные разные челы. Серверник пишет SQL, передает его клиентисту, тот лезет в код: зависмость клиента от БД. А так во многих случаях на сервере поменял, а клиентисту даже ниче не говорили. Поменять в БД на сервере одно дело, на нескольких клиентах у заказчика другое, тем более удаленно. А представьте, например, ситуацию SQL стал тормозить со временем. Нуно ехать в командировку там оптимизировать. Шо же и еще потом и с клиентистом связываться? Када сам пишу примеры с клиентами для техпредложений, то пишу SQL в коде клиента, потому шо удобней, быстрей. А када реализуют в промышлненное, то, это удобство, уже вызывает опасения. Не говоря уже о случаях када, клиенты разные, а SQL общие во многих случаях (логика на серверной части приложения). А если хоть в одном случае это так, то уже из единообразия стиля тада и все так делать надежнее, иначе сопровождение может вызывать значительно больше беспокойства. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 12:40 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalovбаза данных, нагруженная большим количеством сложных и простых запросов (что-то не так с нормализацией Вашей базы или с архитектурой, тут либо много простых и мало сложных, либо только сложные и все заросло травой с 90-х) zapros Код: plaintext
Vrode da, a esli po nemu srabatyvaet trigger, delajushij sledujushij shag BP, na kotorom i obnovlenie drugih tablic (pereschet plana dostavki), i posylka uvedomlenij useram ? Vot i poluchaetsya, chto v sistemah s razvitoj BL na XP prostyh zaprosov ne bolshinstvo. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 12:40 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
vadiminfoА так во многих случаях на сервере поменял, а клиентисту даже ниче не говорили.В подавляющем большинстве случаев все ровно наоборот. В случае с процедурами работы по модификации на порядок больше, и выполняться она должна "согласованнее". Типовой случай - в работающей системе добавляют колонку в таблицу. Без процедур это добавление спокой проходит, а потом клиенты начинают использовать эту колонку по мере возникновения потребности. В случае с процедурами сразу же вместе с добавлением колонки надо поменять еще и все CRUD-процедуры - у них изменяется интерфейс и это требует пересборки клиентской части (причем всех клиентов, работавших с этими процедурами). Да, несомненно случаются и такие случаи, когда табличку правят, а интерфейс CRUD-процедур не трогают, но такие случаи вряд ли один процент всех случаев составляют. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 12:54 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov AndreyPetro123уж так случилось, что ООП язык клиента и Мира не реализуется в РСУБД. А хранить НЕпротиворечивые данные - надо. Приведите пример БЛ, которую лучше решать НЕ на сервере или НА сервере без ХП (ХП тут уже есть) Вы никак не можете понять, что сервера бывают разные. И это не только сервера РСУБД. На некоторых серверах ООП языки вполне себе реализуются. ===== на каких? Я пишу как клиента на ЯП-ООП, так и серверную часть на оракле. Однако ОБЪЕКТНО на нём не пишу. Про ООПБД или ОРСУБД давайте не будем, т.к. OFFTOP Но в любом случае все это тема для другого разговора. Я уже писал, что меня не интересуют возможности ХП, как средства реализации бизнес-логики (нормальным ООП-языкам они уступают, но в случае двузвенного приложения других вариантов нет). Я хочу услышать о преимуществах ХП перед SQL-запросами в задаче сохранения/извлечения данных. А вы мне упорно бизнес-логику подсовываете. Есть что сказать кроме бизнес-логики? ===== странное желание у Вас - без БЛ ХП не имеют смысла Типовой случай - в работающей системе добавляют колонку в таблицу ==== что за ИС-калькулятор?. Просто колонку без логики (связей, отчётов, форм) не добавляют ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 12:58 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123===== на каких? Ну например на любом J2EE сервере. :) Petro123странное желание у Вас - без БЛ ХП не имеют смыслаС этим утверждением полностью согласен. Но и разговаривать в таком случае в этом топике (посмотрите на заголовок) не о чем. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 13:05 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov AndreyPetro123===== на каких? Ну например на любом J2EE сервере. :) договорились :) ХП не нужны там, где сервер - импотент - просто хранилище данных. За непротиворечивость данных с точки зрения бизнеса ОН не отвечает. За это отвечают 3 дополнительных сервера, слоя, админа и зарплаты. Я не против этих...других, только решения у них больно дорогие. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 13:17 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
strizheto prostoj zapros ? Vrode da, a esli po nemu srabatyvaet trigger, delajushij sledujushij shag BP, na kotorom i obnovlenie drugih tablic (pereschet plana dostavki), i posylka uvedomlenij useram ? Vot i poluchaetsya, chto v sistemah s razvitoj BL na XP prostyh zaprosov ne bolshinstvo. - именно что "не надо делать сложным то что проще простого" C "Нутилус Помпилиус". Отправлять оповещения пользователям с помощью хранимых процедур или триггеров - это типичное извращение, которое должно реализовываться программно, с помощью нормального ЯП в отдельном уровне (предположительно в сервере приложений). На мой взгляд Вы привели пример того как не надо использовать СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 13:39 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123ХП не нужны там, где сервер - импотент - просто хранилище данных. - опять новинка в терминологии, теперь "сервера импотенты" (всем добавить в избранное). Извините, но Вас реально трудно понять - о чем конкретно идет речь?! Petro123Я не против этих...других, только решения у них больно дорогие. - на сегодняшний день большинство серверов приложений под JavaEE бесплатные или оплачивается только техническая поддержка. Держать на работе DBA который держит всю бизнес-логику системы у себя в голове, тоже небось недешево обходится. Особенно учитывая, что его увольнение автоматически означает полную переделку системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 13:46 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov AndreyДа, несомненно случаются и такие случаи, когда табличку правят, а интерфейс CRUD-процедур не трогают, но такие случаи вряд ли один процент всех случаев составляют. Что-то моя практика, говорит об обратном. У нас полно удаленных клиентов, и случаи када приходится править клиентов не так часто возникают, меньше 10% от всех. Зато када возникают, то геморно. А так нужен тока один серверист, так еще и процедура исправлеия: нужна тока Аська и там, чел который умеет запускать утилиту для команд SQL, PL/SQL. Он тупо копирует из Аськи и все. А это оч просто. Не то шо инсталировать клиентов, да еще на всех компах. Т.е. использование ХП по полной, и всех SQL в ХП имеет разумные доводы. Кроме того, када есть разделение на клиентистов и серверистов, то улучшается специализация. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 13:49 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
KachalovPetro123ХП не нужны там, где сервер - импотент - просто хранилище данных. - опять новинка в терминологии, теперь "сервера импотенты" (всем добавить в избранное). Извините, но Вас реально трудно понять - о чем конкретно идет речь?! Держать на работе DBA который держит всю бизнес-логику системы у себя в голове, тоже небось недешево обходится. Особенно учитывая, что его увольнение автоматически означает полную переделку системы. 1. СУБД не импотент - хранить НЕпротиворечивые для бизнеса данные СУБД импотент - хранить данные (за непротиворечивость отвечает другой) 2. "держать DBA дорого" :) чё-то я не понял, это какой уровень системы проектируем? Вы серьёзно считаете, что решения на J2EE дешевле по стоимости владения? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 14:20 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123 СУБД не импотент - хранить НЕпротиворечивые для бизнеса данные СУБД импотент - хранить данные (за непротиворечивость отвечает другой)Поздравляю с изобретением новых терминов. Осталось только добиться их мирового признания. :) Можете также задуматься о том имеют ли эти термины отношение к ХП. Для этого вам придется сильно над определением "непротиворечивости" поработать. А в остальном мне всегда импонировали экстремистские взгляды. Посему ваш мне тоже нравится. Жаль только, что на практике экстремизм проигрывает более гибким подходам. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 14:30 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
vadiminfoЧто-то моя практика, говорит об обратном.Если у вас бизнес-логика реализована в СУБД, то так скорее всего и есть. Но я уже говорил, что случай использования ХП для бизнес-логики не собираюсь рассматривать в контексте данного топика. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 14:31 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov Andrey, у вас портфолио есть? Я вам привёл свой пример ХП для клиент-сервера 2-х звенки. Заказчик хочет видеть таблицу должников с параметром вверху-ползунком. У меня всегда есть шаблоны, библиотеки и комьюнити http://www.databaseanswers.org/data_models/index.htm для разработки архитектуры. Что кроме слова J2EE есть у вас для "простого народа" на пальцах? Или гербалайфом торгуем? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 14:51 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123 СУБД не импотент - хранить НЕпротиворечивые для бизнеса данные СУБД импотент - хранить данные (за непротиворечивость отвечает другой) - я бы еще добавил определение: "система мачо" - СУБД хранит не противоречивые данные (т. е. СУБД не импотент) и бизнес логика вынесена в отдельный уровень (трехзвенка) на котором данные дополнительно проверяются на непротиворечивость при внесении и изменении Petro123 "держать DBA дорого" :) чё-то я не понял, это какой уровень системы проектируем? - я за перенос бизнес логики из ХП в отдельный уровень (трехзвенка) и использование ХП только в тех случаях когда они дают существенное преимущество по производительности Petro123Вы серьёзно считаете, что решения на J2EE дешевле по стоимости владения? - смотря что сравнивать и учитывать ли случай когда DBA умер (ну ладно - уволился) и оставил в наследство базу с путаной структурой и кучу недокументированных ХП и триггеров. Также еще раз при таких сравнениях придется определиться с масштабами и назначением системы, а то каждый участник топика под системой подразумевает что-то свое и с нездоровой горячностью доказывает свою правоту собеседникам которые имеют в виду что-то иное. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 14:52 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov, "система мачо" +5 согласен. ДОПОЛНИТЕЛЬНЫХ уровней может быть много (вместе с клиентскими). Особенно при нескольких серверах в гетерогенной среде. про 3 звена спорить бессмысленно и лень. Я надеялся что контекст топика про вынос SQL на клиента ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 14:59 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov и использование ХП только в тех случаях когда они дают существенное преимущество по производительности здесь играем (ООП), здесь не играем (процедурные хп), а здесь мы рыбу заворачивали (с) отличный подход сурьезного шпециалиста ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 15:06 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov AndreyvadiminfoЧто-то моя практика, говорит об обратном.Если у вас бизнес-логика реализована в СУБД, то так скорее всего и есть. Но я уже говорил, что случай использования ХП для бизнес-логики не собираюсь рассматривать в контексте данного топика. Не вся, наверное, но на распределение логики между сервеной и клиетской частями приложения выше названные соображения могут влиять. Конечно, есть парни, которые хотят налабать клиента независмомго от СУБД. У них другие приоритеты. Я скептически отношусь к этим идеям, но я помню, что я базист, и потому могу относиться к клиентской части предвзято. Потому не настаиваю, а говорю тока об альтернативах, и о преимуществах, которые, мне кажется, стоит учитывать время от времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 15:07 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
во наговорили :) При небольшом числе клиентов ХП на 1-2 порядка быстрее, т.е вся бизнес логика д.б. в ХП. При росте числа клиентов нагрузка на сервер БД растет. Когда производительность ХП сравняется с клиентом, пора переносить логику на клиента. Критичное число клиентов для среднего железа ~ 500-1000 Однако многие системы используют динамические вычисления, и тогда бизнес логика д.б. в ХП однозначно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 15:10 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalovя считаю что для "серьезной системы" вообще ХП не нужны. Кстати что Вы называете "серьезной системой"?Все просто - как разработчик (ну совсем не DBA), я достаточно сложной считаю систему, для которой имеет смысл распределять работу хотя бы традиционно на троих :) - БД, апп-сервер, клиент. Тогда каждый кусок есть черный ящик для остальных, и своя логика, от остальных независимая, есть в каждом. И при нормальном проектировании тогда логика обработки, формализуемая в реляционных терминах, естественно живет внутри СУБД, объектная - внутри апп-сервера. И противопоставлять их друг другу - просто бред. Kachalovто очевидно что подавляющее большинство таких систем относится к типу OLTP-приложений, которые прекрасно могут обходиться без ХП и где использование ХП означает скорее архитектурную безграмотность разработчика, а не реальную необходимость.Безграмотностью разработчика в любых системах является нежелание разбивать систему на части с описанными интерфейсами между ними. Использование ХП - возможно, не лучший (не самый понятный) интерфейс между БД и апп-сервером, но может быть с успехом заменен на те же вью с триггерами, внутри которых - те же ХП. Тогда и любимые всеми (но по-разному:) ) ОРМы думают, что работают с БД, и разработчик БД в своей части делает все, что считает нужным. KachalovP.S. про масштабирование и кластеризацию в контексте ХП что-то никто не хочет опонировать :) Вопросы типа: "сколько стоит кластеризуемая БД?" явно оказались неудобными Не смешите людей - кластеризация апп-серевера, распараллеливающия обработку логики и кластеризациция БД, распараллеливающия обработку сверхбольших массивов данных - это совершенно разные (и не сключающе друг друга) задачи, противопоставлять их нельзя. И если появилась нечастая необходимость кластеризации именно БД, то стоимость СУБД будет очень небольшим довеском к стоимости железа. Еще раз не о "плюсах", а о необходимости логики в БД: 1. Все, что можно сделать на чистом SQL - надо на нем и делать, процедурная обработка данных - зло . Параллелизм внутри запроса не может заменить никакая процедура, где бы она не находилась, как и оптимизацию этого запроса на основании актуальных данных (статистики). Естественно, писать многостраничные запросы, как и следить за целостностью модели в БД может только специалист в конкретной СУБД, эту БД проектирующий, и выносить все это за рамки БД - бред. Эту логику надо маскировать для использования в следующих уровнях обработки (апп-сервер, например) с помощью вью и/или ХП (в зависимости от СУБД), формируя для этих уровней интерфейс к БД. 2. Все, что нельзя сделать декларативно, но что касается только и именно обработки в рамках реляционной модели - лучше делать внутри БД, она это сделает гораздо эффективнее. Что, опять-таки, позволит разделить логические уровни при проектировании. 3. Внешние отн. реляционной модели задачи естественно могут (и как правило должны) решаться вне СУБД, на следующих уровнях. P.S. С моей точки зрения - данный спор ни о чем, каждый инструмент должен решать свойственные именно ему задачи. И раскидать задачи проекта по соответствующим инструментам есть прямая обязанность проектировщика системы. P.P.S. А ХП именно вместо запросов (а не вместе с ними), т.е. замена декларативного SQL на процедурную обработку - зло безусловное. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 15:13 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov Andrey, Что-то мне непонятны отличия при добавлении колонки в таблицу? Bogdanov AndreyТиповой случай - в работающей системе добавляют колонку в таблицу. Без процедур это добавление спокой проходит, а потом клиенты начинают использовать эту колонку по мере возникновения потребности. В случае с процедурами сразу же вместе с добавлением колонки надо поменять еще и все CRUD-процедуры - у них изменяется интерфейс и это требует пересборки клиентской части (причем всех клиентов, работавших с этими процедурами). Какая разница в обновлении клиента и сервера при использовании процедур или без использования? Изменилась таблица - значит поменялась логика, а это значит надо обновить и сервер и клиента и среднее звено. Или не так? Или я что-то пропустил? Bogdanov AndreyВ случае с процедурами сразу же вместе с добавлением колонки надо поменять еще и все CRUD-процедуры - у них изменяется интерфейс и это требует пересборки клиентской части (причем всех клиентов, работавших с этими процедурами). Если задуматься, то он изменится хоть применяешь, хоть не применяешь процедуры... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 15:25 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
baike2000Или я что-то пропустил? Пропустили: он как раз выдвигал довод, что придется менять и там. Это я говорил, что менять достаточно буит тока на сервере во многих слуях на практике, если все SQL в ХП. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 15:30 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
vadiminfobaike2000Или я что-то пропустил? Пропустили: он как раз выдвигал довод, что придется менять и там. Это я говорил, что менять достаточно буит тока на сервере во многих слуях на практике, если все SQL в ХП. С этим я очень даже согласен. Ну я говорю именно про колонку в таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 15:34 |
|
|
start [/forum/topic.php?fid=33&msg=36407752&tid=1548373]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 309ms |
total: | 441ms |
0 / 0 |