|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Вероятность отваливания перегруженной СУБД все-таки повыше. А апп-сервера очень легко резервируются. (Все это при прочих равных - т.е. конфигурация СУБД одна и та-же, но в одном случае есть апп-сервера, выполняющие часть работы, а в другом только СУБД) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2010, 16:53 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Alex SВероятность отваливания перегруженной СУБД все-таки повыше. А апп-сервера очень легко резервируются. (Все это при прочих равных - т.е. конфигурация СУБД одна и та-же, но в одном случае есть апп-сервера, выполняющие часть работы, а в другом только СУБД) с чего бы одинокой субд быть более перегруженой если ресурсов она будет тратить много меньше чем апп сервер+субд+гоняние трафика между апп-сервером и субд ? от того что ты зарезервируешь апп-сервер субд под апп-сервером надежней одинокой субд не станет. да и резервировать одинокую субд (standby, репликация, лог шипинг) и гонять RO репорты на стендбай не так уж сложно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2010, 17:36 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
iscrafm Ты свою семёрку пробовал запихнуть в терминалку? Нет!? А ведь это и есть самая прямая трёх звенка для тебя. Лучше ты никогда не сделаешь ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2010, 06:09 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Oracle\MySQL\WEB\Programmer\DBA, ты имеешь виду 7-ку BMW? Или что "свою семерку"? набор твоей несвязанной речи не понял. А понятие о трехзвенках в образе терминалов - поражает. Где такому только учат? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2010, 10:32 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Стас АгарковСкажите, пожалуйста, в чем плюсы и минусы хранимых процедур? В каких проектах их стоит использовать, а в каких не стоит? Или дайте ссылку, где про это можно почитать. С учетом названия темы как бы противопосталяются SQL-запросы и ХП. Хотя последние задумывались как процедурное расширение декларитивного SQL, а не противопоставление, периодически такие вопросы возникают, и в коллетиве разработчиков одного проекта поскольку альтернативы имеют место. Например, противопоставляется вызов SQL - звапрос из клиентской проги вызову ХП возвращающей курсор. Действительно, во втором случае типа все SQL оказываются в ХП (а не в клиентском коде), что упрощает доработки, сопровождение, особенно када в проекте много проггеров, и есть четкое разделение между клиентскими проггерами и БД серверными. Но тут вот возникает частный практический момент, на который бы мне хотелось узнать мыстли коллег(речь о частном случае при использовании компонент доступа клиентских прог, а не общий вопрос): Компоненты доступа к БД для прог типа Дельфи (ДиректОраклАксцесс) или АПЕКса в случае создания окон редактирования при использовании запросов по умолчанию обеспечивают так называемую оптимистическую блокироку. Т.е. запиманют начальные данные в окне, и перед сохранением проверяют не изменились ли они. Т.е. если два юзера откроют это окно, один внесет исправления и зафиксирует, то второй не сможет внести изменения затерев работу первого. Это просто заложено в компоненты их разработчиками. Если же вызывается ХП с курсором, то это просто вызов ф-ии и все: компонеты не обеспечивают никакой изоляции. Меня интересует как решаю это другие: 1)использут ХП возвращающие клиентам куросоры, и сами реализуют изолязацию сессий клиентов. (Оптимистическую блокировку по любому тока на клиенте, писсимистичекая может напряч: вообще второй такое окно не откроет) 2)использут ХП возвращающие клиентам куросоры и забиват на всякие там блокировки: все равно юзер не докажет шо он шо-то вносил, а оно пропало. 3)вызывают запросы из проги, и компоненты берут все скучные весчи на себя. Это особенно интересно када клиентские проггеры и серверные разные челы: первые мало думают о многопользовательности: им формы бы налобать покрасивше, а вторые не знают че там у них в клиенте вообще делается. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2010, 00:08 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.! с чего бы одинокой субд быть более перегруженой если ресурсов она будет тратить много меньше чем апп сервер+субд+гоняние трафика между апп-сервером и субд ? от того что ты зарезервируешь апп-сервер субд под апп-сервером надежней одинокой субд не станет. да и резервировать одинокую субд (standby, репликация, лог шипинг) и гонять RO репорты на стендбай не так уж сложно.Ну, процедурные расширения тоже не святым духом работают, не знаю что займет больше ресурсов: передача результатов одиночного запроса (то что вы называете гонянием трафика) или хранение этого буфера в процессе процедурного расширения - дисковый кеш, блокировки и все такое. Если в первом случае субд отдала данные и свободна, то во втором ? И это на фоне большого количества конкурирующих сессий в субд. Разумеется, что во первом случае уже апп-сервер потребляет ресурсы при обработке данных, и, возможно даже бОльшие - это уж как система построена. Но в таком случае это могут быть ресурсы уже другой машины (машин). Нередко приходится видеть вообще умопомрачительные вещи, реализованные в субд: типа разбора всяких файловых форматов, всякие парсеры, работа с pipe-ами, портами, отслеживание изменений в дисковых папках, работа с e-mail и т.п. Имхо это совсем не разумное использование ресурсов СУБД. Еще рано или поздно в таких системах появляется парсер формул, реализованный на субд, а то и несколько. А все из-за выбранной архитектуры. Впрочем, все imho. Мой выбор (апп-сервер(свой) и субд) был сделан 10 лет назад и я не пожалел. Более того, сейчас я вижу много конкурирующих проектов в своей отрасли, переходящих к такой архитектуре. Средства при этом используются различные (покупные j2ee сервера, свои разработки) но движение в сторону n-звеньев есть. Кстати стало проще интегрироваться с такими системами, имеющимися у заказчика - многие стали поддерживать SOAP. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2010, 14:02 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Alex SНо в таком случае это могут быть ресурсы уже другой машины (машин). тут не понял, хп конечно чудес не сотворит и имея сильно меньше ресурсов конечно большую нагрузку не потянет, но вот с сопоставимыми ресурсами вполне потянет. Alex S Нередко приходится видеть вообще умопомрачительные вещи, реализованные в субд: типа разбора всяких файловых форматов, всякие парсеры, работа с pipe-ами, портами, отслеживание изменений в дисковых папках, работа с e-mail и т.п. Имхо это совсем не разумное использование ресурсов СУБД. Еще рано или поздно в таких системах появляется парсер формул, реализованный на субд, а то и несколько. А все из-за выбранной архитектуры. архитектура тут не причем, тут проблема в адекватности архитектора, кто-то кидается в крайности апп-сервера пытаясь на жава реализовать ядро субд изобретая неповоротливые велосипеды, кто-то все пихает в субд. лично мне апп-сервер с логикой в хп нравится гораздо больше. Alex Sно движение в сторону n-звеньев есть. как-то это движение шибко забуксовало пробежавшись по кругу кидаясь в крайности от извращенному натягивания ООП на реляционный движек до оо-субд до боли напоминают сетевые субд десятый год никак не придя к какому-то вменяемому решению. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2010, 20:37 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Alex SYo.! с чего бы одинокой субд быть более перегруженой если ресурсов она будет тратить много меньше чем апп сервер+субд+гоняние трафика между апп-сервером и субд ? от того что ты зарезервируешь апп-сервер субд под апп-сервером надежней одинокой субд не станет. да и резервировать одинокую субд (standby, репликация, лог шипинг) и гонять RO репорты на стендбай не так уж сложно.Ну, процедурные расширения тоже не святым духом работают, не знаю что займет больше ресурсов: передача результатов одиночного запроса (то что вы называете гонянием трафика) или хранение этого буфера в процессе процедурного расширения - дисковый кеш, блокировки и все такое. Если в первом случае субд отдала данные и свободна, то во втором ? И это на фоне большого количества конкурирующих сессий в субд. Разумеется, что во первом случае уже апп-сервер потребляет ресурсы при обработке данных, и, возможно даже бОльшие - это уж как система построена. Но в таком случае это могут быть ресурсы уже другой машины (машин). Нередко приходится видеть вообще умопомрачительные вещи, реализованные в субд: типа разбора всяких файловых форматов, всякие парсеры, работа с pipe-ами, портами, отслеживание изменений в дисковых папках, работа с e-mail и т.п. Имхо это совсем не разумное использование ресурсов СУБД. Еще рано или поздно в таких системах появляется парсер формул, реализованный на субд, а то и несколько. А все из-за выбранной архитектуры. Впрочем, все imho. Мой выбор (апп-сервер(свой) и субд) был сделан 10 лет назад и я не пожалел. Более того, сейчас я вижу много конкурирующих проектов в своей отрасли, переходящих к такой архитектуре. Средства при этом используются различные (покупные j2ee сервера, свои разработки) но движение в сторону n-звеньев есть. Кстати стало проще интегрироваться с такими системами, имеющимися у заказчика - многие стали поддерживать SOAP.По-моему, упускается из виду то, что бизнес-логика всё-таки часто должна работать с данными, а средства АПП-сервера работать с данными не умеют. В них просто нету таких средств; любую работу с данными придётся реализовывать с нуля, всю-всю работу с множествами, с разпределением вычислений на процессоры и т.д., и т.п. Дополнительно: превозносимая многими возможность разделения системы на сотни дешёвых АПП-серверов объсняется тем-же - приложения не работают с общими данными. Если можно данные в БД разделить на независимые кусочки, тогда и такие БД можно разнести на сотни и тысячи независимых дешёвых СУБД-серверов... Если взять большие системы с серьёзными АПП-слоями типа SAP, то в них БЛ не перенесена на уровень АПП-сервера, у них некое промежуточное решение: на уровне АПП-сервера сделано фактически только хранилище бизнес-логики. Т.е. это значит, что БЛ только хранится в АПП-сервере, но выполняется в СУБД. Это требует очень больших затрат ресурсов на разработку, и компенсируется уменьшением зависимости от разработчика СУБД, что, конечно, важно для компании, затративший на создание системы труд сотен разработчиков (разработчиков в широком смысле) в течении десятков лет. Бизнес, давая такое задание разработчикам, должен очень серьёзно подумать, за счёт чего и в какие сроки окупится это многократное увеличение затрат ресурсов на разработку. А вот примеров реализации более-менее сложной (требующей какой-то работы с данными, а не только запросов Key-Value) логики именно в АПП-сервере (и исполняемой именно на АПП-сервере) я не знаю, и нынешние моления на ORM "применять всегда и везде" считаю абсурдными. И ещё раз хочу заметить (на это уже обращали внимание), что в n-уровневой архитектуре бизнес-логика практически всегда распределяется между уровнями (т.е. нет уровня без бизнес-логики) - собственно, в этом и смысл такой архитектуры. Нужно уж очень сильно искуственно противиться такому разделению, чтоб его не было. Т.е., ИМХО, правильнеый путь: - БЛ распределяется по уровням - на уровене клиента - логика с минимумом сложности и без обращения к данным - на уровне АПП-сервера - логика с минимумом обращения к данным и с работой с внешними по отношению к СУБД объектами. - на уровне СУБД-сервера - логика, связанная с работой с данными Само собой, если логики, связанной с работой с данными нет (а таких приложений немало), то можно использовать и всякие ORM, и использовать СУБД толькло как хранилище. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 10:05 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
alexeyvg Дополнительно: превозносимая многими возможность разделения системы на сотни дешёвых АПП-серверов объсняется тем-же - приложения не работают с общими данными. Если можно данные в БД разделить на независимые кусочки, тогда и такие БД можно разнести на сотни и тысячи независимых дешёвых СУБД-серверов... - где-то видели работающий пример реализации Вашей идеи распределения логики по многим дешевым СУБД? (интересно почему Вы не использовали модный термин "шардинг"?). Если говорить о кластеризации на уровне Application-сервера, то это реально работает ;) alexeyvg Само собой, если логики, связанной с работой с данными нет (а таких приложений немало), то можно использовать и всякие ORM, и использовать СУБД толькло как хранилище. - улыбнуло. Если я правильно понял последний тезис, то ORM можно использовать там где нет данных? Или я не понимаю что такое "логика, связанная с работой с данными"? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 12:27 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalovalexeyvg Дополнительно: превозносимая многими возможность разделения системы на сотни дешёвых АПП-серверов объсняется тем-же - приложения не работают с общими данными. Если можно данные в БД разделить на независимые кусочки, тогда и такие БД можно разнести на сотни и тысячи независимых дешёвых СУБД-серверов... - где-то видели работающий пример реализации Вашей идеи распределения логики по многим дешевым СУБД? (интересно почему Вы не использовали модный термин "шардинг"?). Если говорить о кластеризации на уровне Application-сервера, то это реально работает ;)Да, видел. В MySpace использовалось 500 серверов MS SQL Server 2005 (сейчас уже больше) Но там работы с данными нормальной как раз и нет, это иллюстрирует мой тезис о том, что если приложение распаралеливается на много дешёвых апп-серверов, то оно так-же просто распаралеливается на много дешёвых субд-серверов. Что дешёвый апп-сервер будет эту тыщу запросов в секунду обрабатывать, что дешёвый субд-сервер - без разницы. Kachalovalexeyvg Само собой, если логики, связанной с работой с данными нет (а таких приложений немало), то можно использовать и всякие ORM, и использовать СУБД толькло как хранилище. - улыбнуло. Если я правильно понял последний тезис, то ORM можно использовать там где нет данных? Или я не понимаю что такое "логика, связанная с работой с данными"?Совершенно верно поняли. "там где нет данных" - это, конечно не в буквальном смысле абсолютного отсутствия каких либо данных (даже компе в холодильнике работает с данными :-) ), а в смысле хоть какой-то логики работы с данными, кроме работы с одним объектом (считать, показать, изменить, сохранить). Нормальная работа с данными предполагает, что при чтении или изменении нужно согласовывать состояние объекта с состояниями других объектов, лочить данные (в т.ч. и у других объектов, и в т.ч. при чтении) (не потому, что СУБД лохи написали, а потому, что это нужно для бизнес-логики), делать изменения атомарными, откатывать всё при ошибке и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 12:44 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
сабж плавно перерос в обсуждение - 2х или 3-х звенка и - БЛ в БД или нет ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 12:53 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
alexeyvg "там где нет данных" а зачем данной ИС БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 12:55 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
alexeyvg Нормальная работа с данными предполагает, что при чтении или изменении нужно согласовывать состояние объекта с состояниями других объектов, лочить данные (в т.ч. и у других объектов, и в т.ч. при чтении) (не потому, что СУБД лохи написали, а потому, что это нужно для бизнес-логики), делать изменения атомарными, откатывать всё при ошибке и т.п. - все это есть в современных ORM (распределенные объектные транзакции - это важный элемент спецификации EJB) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 13:08 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov - все это есть в современных ORM (распределенные объектные транзакции - это важный элемент спецификации EJB) ejb2 - тупиковая монстроидальная ветвь отмершая где-то на рубеже столетий, ejb3 подрихтованный хибер, обычный орм с совершенно не впечатляющими возможностями... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 13:30 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.!ejb2 - тупиковая монстроидальная ветвь отмершая где-то на рубеже столетий, ejb3 подрихтованный хибер, обычный орм с совершенно не впечатляющими возможностями... - да, ну и ... По делу то есть что сказать? Или секта DBA все еще занята планами порабощения планеты Земля? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 13:46 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov- все это есть в современных ORM (распределенные объектные транзакции - это важный элемент спецификации EJB)Это конечно, так, но вот в чём вопрос - не эффективнее ли транзакции и вообще сложные манипуляции с данными делать на том сервере и на том языке программирования, который для этого и предназначен? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 13:58 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Измученный праздниками моск не справилсо со столь живой полемикой ни о чем. 1. Как можно противопоставлять ХП и SQL? Естественно, во вменяемой СУБД с вменяемым оптимизатором все, что можно сделать на SQL, надо на нем и делать - оно куда эффективней процедурности. А на современном SQL можно очень много чего. Что никак нельзя - в ХП. 2. ХП и примкнувшие к ним instead of триггеры жизненно необходимы во многих случаях, например для сохранения согласованности при вынужденной денормализации БД их нечем заменить. Их разработка - такая же часть разработки БД, как и DDL. 3. Бизнес-логика, описываемая в терминах РМД, связанная именно и только с данными в БД, естественно должна выполняться в РСУБД и нигде еще, РСУБД для этого и предназначены. Логика (возможно, в терминах ООП), внешняя отн. БД, может (и в серьезном проекте должна) выполняться на апп-сервере. Это нормальное разделение кода между уровнями и разработчиками, все остальное - скорее всего кривое проектирование. 4. ХП позволяют отделить ООП разработчиков от "реляционщиков", что почти всегда оправдано и эффективно, даже если это одни и те же люди :) 5. ОРМы, если и применяются, опять-таки должны работать с вьюхами/ХП, абстрагирующими их от реальной РМД, иначе - это кривое проектирование. Исключение - если проект должен работать на любой СУБД (т.е. эффективно - ни на какой). 6. Естественно, все вышесказанное относится только к РСУБД с действительно эффективной обработкой вьюх/триггеров/ХП, а их, к сожалению, очень немного (этак 2-3, как я понимаю :)). 7. Конечно, в случае СУБД попроще или маленького проекта (особенно улыбнуло про хостинг для СУБД) можно изгаляться как угодно - оно все равно как-то да заработает. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 14:53 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
vadiminfo авторКомпоненты доступа к БД для прог типа Дельфи (ДиректОраклАксцесс) или АПЕКса в случае создания окон редактирования при использовании запросов по умолчанию обеспечивают так называемую оптимистическую блокироку. Т.е. запиманют начальные данные в окне, и перед сохранением проверяют не изменились ли они. Т.е. если два юзера откроют это окно, один внесет исправления и зафиксирует, то второй не сможет внести изменения затерев работу первого. Это просто заложено в компоненты их разработчиками. Если же вызывается ХП с курсором, то это просто вызов ф-ии и все: компонеты не обеспечивают никакой изоляции. Меня интересует как решаю это другие: 1)использут ХП возвращающие клиентам куросоры, и сами реализуют изолязацию сессий клиентов. (Оптимистическую блокировку по любому тока на клиенте, писсимистичекая может напряч: вообще второй такое окно не откроет) 2)использут ХП возвращающие клиентам куросоры и забиват на всякие там блокировки: все равно юзер не докажет шо он шо-то вносил, а оно пропало. 3)вызывают запросы из проги, и компоненты берут все скучные весчи на себя. Это особенно интересно када клиентские проггеры и серверные разные челы: первые мало думают о многопользовательности: им формы бы налобать покрасивше, а вторые не знают че там у них в клиенте вообще делается. И зачем процедуре возвращать курсор? А если не возвращать курсор, то не вижу разницы между запросом и хранимой процедурой в этом случае. Так же все заложено в компоненты. В процедуру просто при ее создании передаются начальные данные и измененные и сравниваются. Та же оптимистическая блокировка. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 15:01 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
baike2000И зачем процедуре возвращать курсор?Чтобы сделать из нее параметризованный вью для следующего уровня (клиент/апп-сервер), например. baike2000А если не возвращать курсор, то не вижу разницы между запросом и хранимой процедурой в этом случае. Так же все заложено в компоненты. В процедуру просто при ее создании передаются начальные данные и измененные и сравниваются. Та же оптимистическая блокировка.Это с какой радости она именно оптимистическая и причем тут компоненты? ХП, за редким исключением, должны жить в рамках внешней транзакции/сессии. И степень изолированности транзакций отнюдь не в ХП задается, это вопрос общего проектирования системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 15:14 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
FavnЧтобы сделать из нее параметризованный вью для следующего уровня (клиент/апп-сервер), например. А зачем для этого курсор? Зачем блокировать таблицу, что бы изменить одну строчку? Или я чего-то не понимаю... Favn Это с какой радости она именно оптимистическая и причем тут компоненты? ХП, за редким исключением, должны жить в рамках внешней транзакции/сессии. И степень изолированности транзакций отнюдь не в ХП задается, это вопрос общего проектирования системы. Вы вопрос читали который задал vadiminfo ? Вот и спрашивайте у него зачем ему оптимистическая блокировка в компонентах. Я просто сказал, что это реализуется без проблем и с ХП. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 15:24 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Favn7. Конечно, в случае СУБД попроще или маленького проекта (особенно улыбнуло про хостинг для СУБД) можно изгаляться как угодно - оно все равно как-то да заработает. - блин, ну вот опять, говорите прямо что все что не Oracle, то не СУБД P.S. Для людей с ограниченным кругозором: хостинг для баз и конкретно на Oracle существует (ради интереса посетите сайт Oracle: тынц ) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 18:49 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
baike2000 И зачем процедуре возвращать курсор? Ну в силу того, что курсоры собсно и обеспечивают механизм позволяющий языкам не поддерживающим множество (Дельфи, С, PL/SQL) записей получать данные из языков поддерживающих таковые (SQL). Иначе, SQL должен быть в теле клиентской проге, т.е. посылаться на сервер. Ну, по крайней мере, так в Оракле. Ну и типа в теории как бы. baike2000 А если не возвращать курсор, то не вижу разницы между запросом и хранимой процедурой в этом случае. Так же все заложено в компоненты. В процедуру просто при ее создании передаются начальные данные и измененные и сравниваются. Та же оптимистическая блокировка. Мож я не удачно сформулировал? Если запрос, то мне понятно. А если ХП, то что ей передается и что она возвращает, если это не курсор? И в какой язык? Т.е. на чем пишется клиент? Ну что за СУБД? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 20:07 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
vadiminfo Мож я не удачно сформулировал? Если запрос, то мне понятно. А если ХП, то что ей передается и что она возвращает, если это не курсор? И в какой язык? Т.е. на чем пишется клиент? Ну что за СУБД? Итак, СУБД - MS SQL, клиент .NET, раньше Visual Basic. Процедура возвращает набор данных просто. Ну в теле процедуры обычный select col1,col2 from tbl, можно с параметрами в where. Есть еще процедуры update, insert, delete для одной записи. Соответственно, если удаляется 100 записей из грида, то сто раз вызывается процедура удаления. И никаких блокировок. vadiminfo Ну в силу того, что курсоры собсно и обеспечивают механизм позволяющий языкам не поддерживающим множество (Дельфи, С, PL/SQL) записей получать данные из языков поддерживающих таковые (SQL). Иначе, SQL должен быть в теле клиентской проге, т.е. посылаться на сервер. Ну, по крайней мере, так в Оракле. Ну и типа в теории как бы. Ну вот с MS SQL я работаю по другому, и уже давно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 13:01 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
baike2000Итак, СУБД - MS SQL, клиент .NET, раньше Visual Basic. Процедура возвращает набор данных просто. Ну в теле процедуры обычный select col1,col2 from tbl, можно с параметрами в where. Есть еще процедуры update, insert, delete для одной записи. Соответственно, если удаляется 100 записей из грида, то сто раз вызывается процедура удаления. И никаких блокировок. Ну напиши те плиз простейший пример, чтобы была видна специфакция этого набора в частности. Ну и как выглядит вызов на клиенте. Язык Васик? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 13:09 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Что-то ветка запуталась. Начали с 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 + изменения "на ходу" весьма удобны. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 14:10 |
|
|
start [/forum/topic.php?fid=33&msg=36403419&tid=1548373]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 127ms |
0 / 0 |