powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Хранимые процедуры против обычных SQL-запросов
25 сообщений из 151, страница 3 из 7
Хранимые процедуры против обычных SQL-запросов
    #36400025
Alex S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятность отваливания перегруженной СУБД все-таки повыше. А апп-сервера очень легко резервируются. (Все это при прочих равных - т.е. конфигурация СУБД одна и та-же, но в одном случае есть апп-сервера, выполняющие часть работы, а в другом только СУБД)
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36400058
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex SВероятность отваливания перегруженной СУБД все-таки повыше. А апп-сервера очень легко резервируются. (Все это при прочих равных - т.е. конфигурация СУБД одна и та-же, но в одном случае есть апп-сервера, выполняющие часть работы, а в другом только СУБД)
с чего бы одинокой субд быть более перегруженой если ресурсов она будет тратить много меньше чем апп сервер+субд+гоняние трафика между апп-сервером и субд ?
от того что ты зарезервируешь апп-сервер субд под апп-сервером надежней одинокой субд не станет. да и резервировать одинокую субд (standby, репликация, лог шипинг) и гонять RO репорты на стендбай не так уж сложно.
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36400373
iscrafm
Ты свою семёрку пробовал запихнуть в терминалку?
Нет!?
А ведь это и есть самая прямая трёх звенка для тебя. Лучше ты никогда не сделаешь
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36400439
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle\MySQL\WEB\Programmer\DBA,

ты имеешь виду 7-ку BMW? Или что "свою семерку"?
набор твоей несвязанной речи не понял. А понятие о трехзвенках в образе терминалов - поражает. Где такому только учат?
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36401970
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стас АгарковСкажите, пожалуйста, в чем плюсы и минусы хранимых процедур? В каких проектах их стоит использовать, а в каких не стоит? Или дайте ссылку, где про это можно почитать.
С учетом названия темы как бы противопосталяются SQL-запросы и ХП.
Хотя последние задумывались как процедурное расширение декларитивного SQL, а не противопоставление, периодически такие вопросы возникают, и в коллетиве разработчиков одного проекта поскольку альтернативы имеют место.
Например, противопоставляется вызов SQL - звапрос из клиентской проги вызову ХП возвращающей курсор.
Действительно, во втором случае типа все SQL оказываются в ХП (а не в клиентском коде), что упрощает доработки, сопровождение, особенно када в проекте много проггеров, и есть четкое разделение между клиентскими проггерами и БД серверными.
Но тут вот возникает частный практический момент, на который бы мне хотелось узнать мыстли коллег(речь о частном случае при использовании компонент доступа клиентских прог, а не общий вопрос):

Компоненты доступа к БД для прог типа Дельфи (ДиректОраклАксцесс) или АПЕКса в случае создания окон редактирования при использовании запросов по умолчанию обеспечивают так называемую оптимистическую блокироку. Т.е. запиманют начальные данные в окне, и перед сохранением проверяют не изменились ли они. Т.е. если два юзера откроют это окно, один внесет исправления и зафиксирует, то второй не сможет внести изменения затерев работу первого. Это просто заложено в компоненты их разработчиками.
Если же вызывается ХП с курсором, то это просто вызов ф-ии и все: компонеты не обеспечивают никакой изоляции.
Меня интересует как решаю это другие:
1)использут ХП возвращающие клиентам куросоры, и сами реализуют изолязацию сессий клиентов. (Оптимистическую блокировку по любому тока на клиенте, писсимистичекая может напряч: вообще второй такое окно не откроет)
2)использут ХП возвращающие клиентам куросоры и забиват на всякие там блокировки: все равно юзер не докажет шо он шо-то вносил, а оно пропало.
3)вызывают запросы из проги, и компоненты берут все скучные весчи на себя.
Это особенно интересно када клиентские проггеры и серверные разные челы: первые мало думают о многопользовательности: им формы бы налобать покрасивше, а вторые не знают че там у них в клиенте вообще делается.
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36402291
Alex S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!
с чего бы одинокой субд быть более перегруженой если ресурсов она будет тратить много меньше чем апп сервер+субд+гоняние трафика между апп-сервером и субд ?
от того что ты зарезервируешь апп-сервер субд под апп-сервером надежней одинокой субд не станет. да и резервировать одинокую субд (standby, репликация, лог шипинг) и гонять RO репорты на стендбай не так уж сложно.Ну, процедурные расширения тоже не святым духом работают, не знаю что займет больше ресурсов: передача результатов одиночного запроса (то что вы называете гонянием трафика) или хранение этого буфера в процессе процедурного расширения - дисковый кеш, блокировки и все такое. Если в первом случае субд отдала данные и свободна, то во втором ? И это на фоне большого количества конкурирующих сессий в субд. Разумеется, что во первом случае уже апп-сервер потребляет ресурсы при обработке данных, и, возможно даже бОльшие - это уж как система построена. Но в таком случае это могут быть ресурсы уже другой машины (машин).
Нередко приходится видеть вообще умопомрачительные вещи, реализованные в субд: типа разбора всяких файловых форматов, всякие парсеры, работа с pipe-ами, портами, отслеживание изменений в дисковых папках, работа с e-mail и т.п. Имхо это совсем не разумное использование ресурсов СУБД. Еще рано или поздно в таких системах появляется парсер формул, реализованный на субд, а то и несколько. А все из-за выбранной архитектуры.
Впрочем, все imho. Мой выбор (апп-сервер(свой) и субд) был сделан 10 лет назад и я не пожалел. Более того, сейчас я вижу много конкурирующих проектов в своей отрасли, переходящих к такой архитектуре. Средства при этом используются различные (покупные j2ee сервера, свои разработки) но движение в сторону n-звеньев есть. Кстати стало проще интегрироваться с такими системами, имеющимися у заказчика - многие стали поддерживать SOAP.
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36402588
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex SНо в таком случае это могут быть ресурсы уже другой машины (машин).
тут не понял, хп конечно чудес не сотворит и имея сильно меньше ресурсов конечно большую нагрузку не потянет, но вот с сопоставимыми ресурсами вполне потянет.

Alex S
Нередко приходится видеть вообще умопомрачительные вещи, реализованные в субд: типа разбора всяких файловых форматов, всякие парсеры, работа с pipe-ами, портами, отслеживание изменений в дисковых папках, работа с e-mail и т.п. Имхо это совсем не разумное использование ресурсов СУБД. Еще рано или поздно в таких системах появляется парсер формул, реализованный на субд, а то и несколько. А все из-за выбранной архитектуры.

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

Alex Sно движение в сторону n-звеньев есть.
как-то это движение шибко забуксовало пробежавшись по кругу кидаясь в крайности от извращенному натягивания ООП на реляционный движек до оо-субд до боли напоминают сетевые субд десятый год никак не придя к какому-то вменяемому решению.
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36402999
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex SYo.!
с чего бы одинокой субд быть более перегруженой если ресурсов она будет тратить много меньше чем апп сервер+субд+гоняние трафика между апп-сервером и субд ?
от того что ты зарезервируешь апп-сервер субд под апп-сервером надежней одинокой субд не станет. да и резервировать одинокую субд (standby, репликация, лог шипинг) и гонять RO репорты на стендбай не так уж сложно.Ну, процедурные расширения тоже не святым духом работают, не знаю что займет больше ресурсов: передача результатов одиночного запроса (то что вы называете гонянием трафика) или хранение этого буфера в процессе процедурного расширения - дисковый кеш, блокировки и все такое. Если в первом случае субд отдала данные и свободна, то во втором ? И это на фоне большого количества конкурирующих сессий в субд. Разумеется, что во первом случае уже апп-сервер потребляет ресурсы при обработке данных, и, возможно даже бОльшие - это уж как система построена. Но в таком случае это могут быть ресурсы уже другой машины (машин).
Нередко приходится видеть вообще умопомрачительные вещи, реализованные в субд: типа разбора всяких файловых форматов, всякие парсеры, работа с pipe-ами, портами, отслеживание изменений в дисковых папках, работа с e-mail и т.п. Имхо это совсем не разумное использование ресурсов СУБД. Еще рано или поздно в таких системах появляется парсер формул, реализованный на субд, а то и несколько. А все из-за выбранной архитектуры.
Впрочем, все imho. Мой выбор (апп-сервер(свой) и субд) был сделан 10 лет назад и я не пожалел. Более того, сейчас я вижу много конкурирующих проектов в своей отрасли, переходящих к такой архитектуре. Средства при этом используются различные (покупные j2ee сервера, свои разработки) но движение в сторону n-звеньев есть. Кстати стало проще интегрироваться с такими системами, имеющимися у заказчика - многие стали поддерживать SOAP.По-моему, упускается из виду то, что бизнес-логика всё-таки часто должна работать с данными, а средства АПП-сервера работать с данными не умеют.

В них просто нету таких средств; любую работу с данными придётся реализовывать с нуля, всю-всю работу с множествами, с разпределением вычислений на процессоры и т.д., и т.п.

Дополнительно: превозносимая многими возможность разделения системы на сотни дешёвых АПП-серверов объсняется тем-же - приложения не работают с общими данными. Если можно данные в БД разделить на независимые кусочки, тогда и такие БД можно разнести на сотни и тысячи независимых дешёвых СУБД-серверов...

Если взять большие системы с серьёзными АПП-слоями типа SAP, то в них БЛ не перенесена на уровень АПП-сервера, у них некое промежуточное решение: на уровне АПП-сервера сделано фактически только хранилище бизнес-логики.

Т.е. это значит, что БЛ только хранится в АПП-сервере, но выполняется в СУБД.

Это требует очень больших затрат ресурсов на разработку, и компенсируется уменьшением зависимости от разработчика СУБД, что, конечно, важно для компании, затративший на создание системы труд сотен разработчиков (разработчиков в широком смысле) в течении десятков лет.
Бизнес, давая такое задание разработчикам, должен очень серьёзно подумать, за счёт чего и в какие сроки окупится это многократное увеличение затрат ресурсов на разработку.

А вот примеров реализации более-менее сложной (требующей какой-то работы с данными, а не только запросов Key-Value) логики именно в АПП-сервере (и исполняемой именно на АПП-сервере) я не знаю, и нынешние моления на ORM "применять всегда и везде" считаю абсурдными.

И ещё раз хочу заметить (на это уже обращали внимание), что в n-уровневой архитектуре бизнес-логика практически всегда распределяется между уровнями (т.е. нет уровня без бизнес-логики) - собственно, в этом и смысл такой архитектуры. Нужно уж очень сильно искуственно противиться такому разделению, чтоб его не было.

Т.е., ИМХО, правильнеый путь:
- БЛ распределяется по уровням
- на уровене клиента - логика с минимумом сложности и без обращения к данным
- на уровне АПП-сервера - логика с минимумом обращения к данным и с работой с внешними по отношению к СУБД объектами.
- на уровне СУБД-сервера - логика, связанная с работой с данными

Само собой, если логики, связанной с работой с данными нет (а таких приложений немало), то можно использовать и всякие ORM, и использовать СУБД толькло как хранилище.
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36403266
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Дополнительно: превозносимая многими возможность разделения системы на сотни дешёвых АПП-серверов объсняется тем-же - приложения не работают с общими данными. Если можно данные в БД разделить на независимые кусочки, тогда и такие БД можно разнести на сотни и тысячи независимых дешёвых СУБД-серверов...
- где-то видели работающий пример реализации Вашей идеи распределения логики по многим дешевым СУБД? (интересно почему Вы не использовали модный термин "шардинг"?). Если говорить о кластеризации на уровне Application-сервера, то это реально работает ;)

alexeyvg
Само собой, если логики, связанной с работой с данными нет (а таких приложений немало), то можно использовать и всякие ORM, и использовать СУБД толькло как хранилище.
- улыбнуло. Если я правильно понял последний тезис, то ORM можно использовать там где нет данных? Или я не понимаю что такое "логика, связанная с работой с данными"?
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36403302
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalovalexeyvg
Дополнительно: превозносимая многими возможность разделения системы на сотни дешёвых АПП-серверов объсняется тем-же - приложения не работают с общими данными. Если можно данные в БД разделить на независимые кусочки, тогда и такие БД можно разнести на сотни и тысячи независимых дешёвых СУБД-серверов...
- где-то видели работающий пример реализации Вашей идеи распределения логики по многим дешевым СУБД? (интересно почему Вы не использовали модный термин "шардинг"?). Если говорить о кластеризации на уровне Application-сервера, то это реально работает ;)Да, видел.

В MySpace использовалось 500 серверов MS SQL Server 2005 (сейчас уже больше)

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

Что дешёвый апп-сервер будет эту тыщу запросов в секунду обрабатывать, что дешёвый субд-сервер - без разницы.

Kachalovalexeyvg
Само собой, если логики, связанной с работой с данными нет (а таких приложений немало), то можно использовать и всякие ORM, и использовать СУБД толькло как хранилище.
- улыбнуло. Если я правильно понял последний тезис, то ORM можно использовать там где нет данных? Или я не понимаю что такое "логика, связанная с работой с данными"?Совершенно верно поняли.

"там где нет данных" - это, конечно не в буквальном смысле абсолютного отсутствия каких либо данных (даже компе в холодильнике работает с данными :-) ), а в смысле хоть какой-то логики работы с данными, кроме работы с одним объектом (считать, показать, изменить, сохранить).

Нормальная работа с данными предполагает, что при чтении или изменении нужно согласовывать состояние объекта с состояниями других объектов, лочить данные (в т.ч. и у других объектов, и в т.ч. при чтении) (не потому, что СУБД лохи написали, а потому, что это нужно для бизнес-логики), делать изменения атомарными, откатывать всё при ошибке и т.п.
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36403324
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сабж плавно перерос в обсуждение
- 2х или 3-х звенка
и
- БЛ в БД или нет
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36403327
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
"там где нет данных"
а зачем данной ИС БД?
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36403357
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Нормальная работа с данными предполагает, что при чтении или изменении нужно согласовывать состояние объекта с состояниями других объектов, лочить данные (в т.ч. и у других объектов, и в т.ч. при чтении) (не потому, что СУБД лохи написали, а потому, что это нужно для бизнес-логики), делать изменения атомарными, откатывать всё при ошибке и т.п.
- все это есть в современных ORM (распределенные объектные транзакции - это важный элемент спецификации EJB)
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36403419
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kachalov
- все это есть в современных ORM (распределенные объектные транзакции - это важный элемент спецификации EJB)
ejb2 - тупиковая монстроидальная ветвь отмершая где-то на рубеже столетий, ejb3 подрихтованный хибер, обычный орм с совершенно не впечатляющими возможностями...
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36403454
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!ejb2 - тупиковая монстроидальная ветвь отмершая где-то на рубеже столетий, ejb3 подрихтованный хибер, обычный орм с совершенно не впечатляющими возможностями...
- да, ну и ... По делу то есть что сказать? Или секта DBA все еще занята планами порабощения планеты Земля?
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36403477
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov- все это есть в современных ORM (распределенные объектные транзакции - это важный элемент спецификации EJB)Это конечно, так, но вот в чём вопрос - не эффективнее ли транзакции и вообще сложные манипуляции с данными делать на том сервере и на том языке программирования, который для этого и предназначен?
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36403587
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Измученный праздниками моск не справилсо со столь живой полемикой ни о чем.

1. Как можно противопоставлять ХП и SQL? Естественно, во вменяемой СУБД с вменяемым оптимизатором все, что можно сделать на SQL, надо на нем и делать - оно куда эффективней процедурности. А на современном SQL можно очень много чего. Что никак нельзя - в ХП.
2. ХП и примкнувшие к ним instead of триггеры жизненно необходимы во многих случаях, например для сохранения согласованности при вынужденной денормализации БД их нечем заменить. Их разработка - такая же часть разработки БД, как и DDL.
3. Бизнес-логика, описываемая в терминах РМД, связанная именно и только с данными в БД, естественно должна выполняться в РСУБД и нигде еще, РСУБД для этого и предназначены. Логика (возможно, в терминах ООП), внешняя отн. БД, может (и в серьезном проекте должна) выполняться на апп-сервере. Это нормальное разделение кода между уровнями и разработчиками, все остальное - скорее всего кривое проектирование.
4. ХП позволяют отделить ООП разработчиков от "реляционщиков", что почти всегда оправдано и эффективно, даже если это одни и те же люди :)
5. ОРМы, если и применяются, опять-таки должны работать с вьюхами/ХП, абстрагирующими их от реальной РМД, иначе - это кривое проектирование. Исключение - если проект должен работать на любой СУБД (т.е. эффективно - ни на какой).
6. Естественно, все вышесказанное относится только к РСУБД с действительно эффективной обработкой вьюх/триггеров/ХП, а их, к сожалению, очень немного (этак 2-3, как я понимаю :)).
7. Конечно, в случае СУБД попроще или маленького проекта (особенно улыбнуло про хостинг для СУБД) можно изгаляться как угодно - оно все равно как-то да заработает.
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36403600
baike2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo

авторКомпоненты доступа к БД для прог типа Дельфи (ДиректОраклАксцесс) или АПЕКса в случае создания окон редактирования при использовании запросов по умолчанию обеспечивают так называемую оптимистическую блокироку.
Т.е. запиманют начальные данные в окне, и перед сохранением проверяют не изменились ли они. Т.е. если два юзера откроют это окно, один внесет исправления и зафиксирует, то второй не сможет внести изменения затерев работу первого. Это просто заложено в компоненты их разработчиками.
Если же вызывается ХП с курсором, то это просто вызов ф-ии и все: компонеты не обеспечивают никакой изоляции.
Меня интересует как решаю это другие:
1)использут ХП возвращающие клиентам куросоры, и сами реализуют изолязацию сессий клиентов. (Оптимистическую блокировку по любому тока на клиенте, писсимистичекая может напряч: вообще второй такое окно не откроет)
2)использут ХП возвращающие клиентам куросоры и забиват на всякие там блокировки: все равно юзер не докажет шо он шо-то вносил, а оно пропало.
3)вызывают запросы из проги, и компоненты берут все скучные весчи на себя.
Это особенно интересно када клиентские проггеры и серверные разные челы: первые мало думают о многопользовательности: им формы бы налобать покрасивше, а вторые не знают че там у них в клиенте вообще делается.

И зачем процедуре возвращать курсор?

А если не возвращать курсор, то не вижу разницы между запросом и хранимой процедурой в этом случае. Так же все заложено в компоненты. В процедуру просто при ее создании передаются начальные данные и измененные и сравниваются. Та же оптимистическая блокировка.
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36403632
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
baike2000И зачем процедуре возвращать курсор?Чтобы сделать из нее параметризованный вью для следующего уровня (клиент/апп-сервер), например.
baike2000А если не возвращать курсор, то не вижу разницы между запросом и хранимой процедурой в этом случае. Так же все заложено в компоненты. В процедуру просто при ее создании передаются начальные данные и измененные и сравниваются. Та же оптимистическая блокировка.Это с какой радости она именно оптимистическая и причем тут компоненты? ХП, за редким исключением, должны жить в рамках внешней транзакции/сессии. И степень изолированности транзакций отнюдь не в ХП задается, это вопрос общего проектирования системы.
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36403659
baike2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FavnЧтобы сделать из нее параметризованный вью для следующего уровня (клиент/апп-сервер), например.
А зачем для этого курсор?
Зачем блокировать таблицу, что бы изменить одну строчку? Или я чего-то не понимаю...

Favn
Это с какой радости она именно оптимистическая и причем тут компоненты? ХП, за редким исключением, должны жить в рамках внешней транзакции/сессии. И степень изолированности транзакций отнюдь не в ХП задается, это вопрос общего проектирования системы.

Вы вопрос читали который задал vadiminfo ?
Вот и спрашивайте у него зачем ему оптимистическая блокировка в компонентах. Я просто сказал, что это реализуется без проблем и с ХП.
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36404077
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Favn7. Конечно, в случае СУБД попроще или маленького проекта (особенно улыбнуло про хостинг для СУБД) можно изгаляться как угодно - оно все равно как-то да заработает.
- блин, ну вот опять, говорите прямо что все что не Oracle, то не СУБД

P.S. Для людей с ограниченным кругозором: хостинг для баз и конкретно на Oracle существует (ради интереса посетите сайт Oracle: тынц )
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36404185
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baike2000

И зачем процедуре возвращать курсор?

Ну в силу того, что курсоры собсно и обеспечивают механизм позволяющий языкам не поддерживающим множество (Дельфи, С, PL/SQL) записей получать данные из языков поддерживающих таковые (SQL). Иначе, SQL должен быть в теле клиентской проге, т.е. посылаться на сервер. Ну, по крайней мере, так в Оракле. Ну и типа в теории как бы.

baike2000
А если не возвращать курсор, то не вижу разницы между запросом и хранимой процедурой в этом случае. Так же все заложено в компоненты. В процедуру просто при ее создании передаются начальные данные и измененные и сравниваются. Та же оптимистическая блокировка.
Мож я не удачно сформулировал? Если запрос, то мне понятно. А если ХП, то что ей передается и что она возвращает, если это не курсор? И в какой язык? Т.е. на чем пишется клиент?
Ну что за СУБД?
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36405075
baike2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo
Мож я не удачно сформулировал? Если запрос, то мне понятно. А если ХП, то что ей передается и что она возвращает, если это не курсор? И в какой язык? Т.е. на чем пишется клиент?
Ну что за СУБД?

Итак, СУБД - MS SQL, клиент .NET, раньше Visual Basic.
Процедура возвращает набор данных просто. Ну в теле процедуры обычный select col1,col2 from tbl, можно с параметрами в where.
Есть еще процедуры update, insert, delete для одной записи.
Соответственно, если удаляется 100 записей из грида, то сто раз вызывается процедура удаления. И никаких блокировок.

vadiminfo
Ну в силу того, что курсоры собсно и обеспечивают механизм позволяющий языкам не поддерживающим множество (Дельфи, С, PL/SQL) записей получать данные из языков поддерживающих таковые (SQL). Иначе, SQL должен быть в теле клиентской проге, т.е. посылаться на сервер. Ну, по крайней мере, так в Оракле. Ну и типа в теории как бы.

Ну вот с MS SQL я работаю по другому, и уже давно.
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36405098
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baike2000Итак, СУБД - MS SQL, клиент .NET, раньше Visual Basic.
Процедура возвращает набор данных просто. Ну в теле процедуры обычный select col1,col2 from tbl, можно с параметрами в where.
Есть еще процедуры update, insert, delete для одной записи.
Соответственно, если удаляется 100 записей из грида, то сто раз вызывается процедура удаления. И никаких блокировок.

Ну напиши те плиз простейший пример, чтобы была видна специфакция этого набора в частности.
Ну и как выглядит вызов на клиенте. Язык Васик?
...
Рейтинг: 0 / 0
Хранимые процедуры против обычных SQL-запросов
    #36405271
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то ветка запуталась.
Начали с XP vs palin SQL кончили спорами про 2x vs 3x tiers.

imho наличие APP сервере позволяет
1 абстрагироваться от хранения,
2 вынести на него безопасность
3 использовать один и тот же API для разных приложений (например JSP + JAVA для сайта и C++ "толстое приложение")
4 реализовать кеширование для не OLTP данных
5 масштабировать сложные не OLTP расчеты или обработку асинхронных сбор потоковых данных
6 документировать/поддерживать версии методов. В продвинутых APP серверах публикация нового метода будет автоматически исполнятся с нужными зависимостями.

В то же время, XP могут быть своего рода APP Сервером.

Минусы - не решаются пункты 4-5 а из 6 доступно лишь изменение "на ходу". Контроль версий сложен, совмещение версий за пределами транзакций вообще невозможно.

Плюсом APP Сервера на XP является простота языка. Для небольшого проекта достаточно dba и кодера интерфесов/сайта.Можно "на ходу" исправлять бизнес-логику, что доступно лишь на весьма продвинутых серверах приложений (п. 6).

Для небольшого проекта и 2-3 разработчиков 1+2+3 + изменения "на ходу" весьма удобны.
...
Рейтинг: 0 / 0
25 сообщений из 151, страница 3 из 7
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Хранимые процедуры против обычных SQL-запросов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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