|
|
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
хотел бы узнать какой прирост производительности дает использование хранимых процедур. интересует именно прирост скорости, про всякие вещи типа вынос кода и прочее я в курсе. просто интересно, насколько увеличивается скорость, может гдето есть сравнительные тесты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 18:04 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
По сравнению с чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 18:10 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
если исходить из чисто теоретических предпосылок - хранимые процедуры должны быть всегда быстрее. конкретный процент зависит от многих факторов, в т.ч. от СУБД :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 18:31 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Денис Ильин, хочется для каждой субд, наподобие таблицы. название субд и процент прироста скорости для каждой записи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 18:38 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Денис Ильин если исходить из чисто теоретических предпосылок - хранимые процедуры должны быть всегда быстрее. А нельзя ли эти "теоретические предпосылки" огласить?.. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 18:52 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Денис Ильинесли исходить из чисто теоретических предпосылок - хранимые процедуры должны быть всегда быстрее. конкретный процент зависит от многих факторов, в т.ч. от СУБД :)Опять же, по сравнению с чем? По сравнению с SQL-запросами - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 18:54 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
miksoftДенис Ильинесли исходить из чисто теоретических предпосылок - хранимые процедуры должны быть всегда быстрее. конкретный процент зависит от многих факторов, в т.ч. от СУБД :)Опять же, по сравнению с чем? По сравнению с SQL-запросами - нет. имеется ввиду что запрос к базе данных оформляется в виде хранимой процедуры и вызывается из кода или же запрос выполняется в приложении (т.е. тело запроса находится в самой программе) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 19:04 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
гуня хочется для каждой субд, наподобие таблицы. название субд и процент прироста скорости для каждой записи Обломись. Те СУБД, которые вообще имеют хранимые процедуры используют их совершенно разными способами. А уж "прирост скорости для каждой записи" это вообще перл. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 19:08 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, так не важно каким способом, главное это то что если не использются процедуры то время одно, а когда используется время другое. вот интересно сильно ли будут отличия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 19:18 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
А нельзя ли эти "теоретические предпосылки" огласить?.. ну как же - не тратится время на разбор SQL выражени, и т.п., например :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 19:24 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
хочется для каждой субд, наподобие таблицы. название субд и процент прироста скорости для каждой записи уу.. как всё запущенно :) ну, ... если у кого то есть пара-тройка месяцев свободного времени, то мне тоже было бы (чисто теоретический интерес) интересно поглядеть на такую :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 19:26 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ДИну как же - не тратится время на разбор SQL выражени, и т.п., например :) чешуя. хотите Вы или нет, запрос не может выполниться каким-то волшебным образом в одном случае, и неволшебным - в другом. Сервер всегда парсит sql, пришел он с клиента или выполняется в процедуре на сервере. С точки зрения выполнения запросов абсолютно до лампы, с клиента они передаются на сервер или берутся сервером из процедуры. Другое дело - обработка записей. Понятно что выполнить запрос, передать данные на клиента, обработать, и вернуть обратно будет гораздо дольше чем выполнить процедуру, которая все то же самое делает на сервере. Но процедура будет быстрее только потому, что нет пересылки данных на клиента и обратно. Т.е. нет сетевого трафика, только и всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 20:32 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
резюмирую гуне: Если выполнить select count, с клиента или в процедуре, время выполнения будет абсолютно одинаковым. Советую еще раз подумать, что с чем Вы пытаетесь сравнить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 20:35 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Сервер всегда парсит sql, пришел он с клиента или выполняется в процедуре на сервере. может файрбёрд и парсит, но sql server компилирует в момент первого выполнения (составляет план запроса, ищет подходящие индексы и т.д.). После этого "использует свои предыдущие наработки" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 21:38 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Если выполнить select count, с клиента или в процедуре, время выполнения будет абсолютно одинаковым. это точно. O(n) всегда будет работать за O(n). использование хранимых процедур почти всегда оправданно, прежде всего из соображений безопасности, а не скорости. Если парсить sql код пришедший от клиента, то это чревато sql инъекциями. Решение без разбора клиентского sql кода от подобных инъекций защищено практически на 100%. +можно гибко раздавать права на таблицы (точнее - вообще их не давать, давать права только на хранимые процедуры). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 21:43 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Денис Ильин Сервер всегда парсит sql, пришел он с клиента или выполняется в процедуре на сервере. может файрбёрд и парсит, но sql server компилирует в момент первого выполнения (составляет план запроса, ищет подходящие индексы и т.д.). После этого "использует свои предыдущие наработки" :)KDV говорил не об этом. Сам скажет о чём :) Я же хочу уточнить насчёт FB vs MSSQL. FB таки строит план выполнения в момент загрузки процедуры в кеш метаданных. Причём полный план, для всех запросов процедуры. А вот MSSQL "умничает" - смотрит на значения параметров и может скомпилировать далеко не всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 21:48 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
гуня пишет: > хотел бы узнать какой прирост производительности дает использование > хранимых процедур. Это зависит очень сильно от конкретной СУБД и того, как там реализованы процедуры. Без конкретной СУБД обсуждать это бессмысленно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 22:30 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Денис Ильин но sql server компилирует в момент первого выполнения (составляет план запроса, ищет подходящие индексы и т.д.). После этого "использует свои предыдущие наработки" :) Ооооо... А догадывается он о том, что новый поступивший запрос соответствует этим "предыдущим наработкам" не иначе как телепатически. Хотя, что там ему составлять-то, с его rule-based оптимизатором... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 22:31 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ДИможет файрбёрд и парсит, но sql server компилирует в момент первого выполнения (составляет план запроса, ищет подходящие индексы и т.д.). После этого "использует свои предыдущие наработки" ну и какая разница? допустим, запрос "первый раз" пришел с клиента, и тот же запрос первый раз выполняется в хранимой процедуре. Что, MS SQL не будет его "парсить"??? ДИЕсли парсить sql код пришедший от клиента, то это чревато sql инъекциями. весьма сомнительное утверждение. Возможно, Вы под "парсить" имеете в виду что-то отличное от проверки корректности пришедшего с клиента SQL, и т.д. Можно и процедуру написать так, что в ней тоже будут возможны sql-injections. Так что про них тут, на мой взгляд, не в кассу. В контексте вопроса автора я бы эту тему не развивал. hvladА вот MSSQL "умничает" - смотрит на значения параметров и может скомпилировать далеко не всё. тем не менее, возможно моя информация устарела, но раньше были жалобы, что в MS SQL процедуры выполняются медленно. И были вопросы, "а в ФБ тоже процедуры выполняются медленнее, чем SQL?". И все-таки, я ставлю на то, что автор вопроса спрашивает именно о более быстрой обработке данных процедурами на сервере, в отличие от комбинированной обработки данных клиент+сервер+клиент. Здесь все равно, MS SQL препарит все запросы в процедуре, или не все. p.s. в любом случае, сам вопрос хреновый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 22:52 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
весьма сомнительное утверждение. Возможно, Вы под "парсить" имеете в виду что-то отличное от проверки корректности пришедшего с клиента SQL, и т.д. ну, и т.д. - проверка прав к таблицам, из которых идёт выборка, посторение и кеширование плана запроса, и т.д., этапов много. тем не менее, возможно моя информация устарела, но раньше были жалобы, что в MS SQL процедуры выполняются медленно. И были вопросы, "а в ФБ тоже процедуры выполняются медленнее, чем SQL?". видимо, это было как то слишком давно. я такого никогда не замечал :) Ооооо... А догадывается он о том, что новый поступивший запрос соответствует этим "предыдущим наработкам" не иначе как телепатически. в смысле? хранимая процедурка то таже самая? все правильные индексы уже выбранны. иногда статистика хромает, но её то можно собрать заново :yes: Можно и процедуру написать так, что в ней тоже будут возможны sql-injections. да, это правда. если использовать динамический SQL. но этот вариант практически не использует какие либо преимущества хранимых процедур :) поэтому когда я вижу динамический SQL, я прошу его переписать по человечески. Потому что негоже это. кстати, я так чувствую, сами ответы показывают, насколько разные они, хранимые процедуры, в разных RDBSM. Не факт что сравнение будет имет хоть какую то корректность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 23:20 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Хотя, что там ему составлять-то, с его rule-based оптимизатором... А можно с этого места немного поподробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 01:04 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Денис Ильинесли исходить из чисто теоретических предпосылок - хранимые процедуры должны быть всегда быстрее. конкретный процент зависит от многих факторов, в т.ч. от СУБД :) Это неправда. Как раз потому неправда, что в процедуре используется план выполнения, который был создан в момент первого запуска до очередной перекомпиляции, которая может случиться нескоро. Например, в процедуре выборка из таблицы по битовому полю, причём значение отбора передаётся через параметр процедуры. В этом поле, допустим, значение 1 - это 0.1 процент данных, остальные 99.9 - это значение 0. Пусть есть индекс по этому полю. Если впервые запустить процедуру с параметром, равным 0, то в качестве плана будет полный скан таблицы, и он сохранится до перекомпиляции процедуры. Если же выбрку делать обычным запросом, то всё будет ок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 01:20 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
AlbatrossДенис Ильинесли исходить из чисто теоретических предпосылок - хранимые процедуры должны быть всегда быстрее. конкретный процент зависит от многих факторов, в т.ч. от СУБД :) Это неправда. Как раз потому неправда, что в процедуре используется план выполнения, который был создан в момент первого запуска до очередной перекомпиляции, которая может случиться нескоро. Например, в процедуре выборка из таблицы по битовому полю, причём значение отбора передаётся через параметр процедуры. В этом поле, допустим, значение 1 - это 0.1 процент данных, остальные 99.9 - это значение 0. Пусть есть индекс по этому полю. Если впервые запустить процедуру с параметром, равным 0, то в качестве плана будет полный скан таблицы, и он сохранится до перекомпиляции процедуры. Если же выбрку делать обычным запросом, то всё будет ок.В MS SQL появились индексы по битовым полям? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 01:37 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
SergSuperВ MS SQL появились индексы по битовым полям? Давненько, а что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 01:46 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyА можно с этого места немного поподробнее? Хотите сказать, что MS отрастил своему SQL серверу cost-based оптимизатор? В какой версии? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 11:51 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Хотите сказать, что MS отрастил своему SQL серверу cost-based оптимизатор? В какой версии? а в какой версии у него был rule-based ? =) Зачем отращивать то, что уже было с рождения ? (как минимум с 2000 версии) А вообще динамический sql (при желании) ведь тоже параметризуется (что исключает инджекшен) и кэшируется. Так что имхо ХП более важны с точки зрения безопасности и интерфейса БД к своим клиентам, чем с точки зрения скорости Кстати иногда динамический sql все равно нужен (что-бы не положить сервер неподьемным запросом), но собираться он должен все равно в ХП для инкапсуляции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 13:46 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov lockyА можно с этого места немного поподробнее? Хотите сказать, что MS отрастил своему SQL серверу cost-based оптимизатор? В какой версии? Насчет 6.5. не уверен (давно было), так что скажу - минимум с 7-ки. Лет 11 уже, поди, минуло. хотя и в 6.5, кажись, уже было.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 14:39 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
StalkerS А вообще динамический sql (при желании) ведь тоже параметризуется (что исключает инджекшен) В оракле с этим получше будет :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 14:40 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov пишет: > Хотите сказать, что MS отрастил своему SQL серверу cost-based > оптимизатор? В какой версии? Он в MSSQL с рождения cost-based. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 18:02 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky пишет: > Насчет 6.5. не уверен (давно было), так что скажу - минимум с 7-ки. Лет > 11 уже, поди, минуло. С 3-ки. Хотя вы даже не знаете наверное о существовании такой версии. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 18:04 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
MasterZiv С 3-ки. Хотя вы даже не знаете наверное о существовании такой версии. И называлась она совсем не MSSQL ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 18:22 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
MasterZiv locky пишет: > Насчет 6.5. не уверен (давно было), так что скажу - минимум с 7-ки. Лет > 11 уже, поди, минуло. С 3-ки. Хотя вы даже не знаете наверное о существовании такой версии. Ну, с трёшки так с трёшки, спорить не буду. Я начал с 6.5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 20:03 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky В оракле с этим получше будет :( инджекшн там вообще не возможен ? А это как ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 01:05 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
StalkerSlocky В оракле с этим получше будет :( инджекшн там вообще не возможен ? А это как ? Возможен. Но, емнип, при помощи чего-то вроде DBMS_SQL можно создавать запросы с переменным к-вом параметров. в скуле мне пока известен единственный способ создать такое Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 01:11 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Ну, плейсхолдеры особенно и не нужны. Лично мне хватает возможности передавать в хранимую процедуру в качестве параметра какой нибудь XML. Вот честно - из почти 2-х тысяч хранимок динамический sql только в 5..6..и штучках, и то - в процедурках административного характера, пользователь их даже и не зовёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 08:54 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
SergSupr В MS SQL появились индексы по битовым полям? Даже в 2000 были. Из EM их создать нельзя было, но вручную - пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 09:14 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
hvlad пишет: > И называлась она совсем не MSSQL ;) Да, называлась она SQLServer. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 10:07 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Ну, про производительность вроде бы все уже сказали (что по сравнению с просто SQLем разницы никакой, прирост может быть за счет экономии сетевого трафика при реализации последовательности select с промежуточной обработкой, падение может быть из-за логики пересчета плана запроса). Раньше, когда миром правили двузвенки, хранимки активно использовались для отделения бизнес-логики (собственно хранимки) от логики хранения (таблички) и визуализации (клиент). По мере перехода на трехзвенки, смысл хранимок несколько снижается (ну, кроме совсем уж экстремальных задач с требованиями к производительности). Правда, вроде бы еще используют хранимки для обхождения ограничений и проблем ORMов (по крайней мере в мире .Net это обычная практика, судя по форумам). Зачем они сейчас еще нужны - не знаю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2009, 13:54 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3Ну, про производительность вроде бы все уже сказали (что по сравнению с просто SQLем разницы никакой, прирост может быть за счет экономии сетевого трафика при реализации последовательности select с промежуточной обработкой, падение может быть из-за логики пересчета плана запроса). Раньше, когда миром правили двузвенки, хранимки активно использовались для отделения бизнес-логики (собственно хранимки) от логики хранения (таблички) и визуализации (клиент). По мере перехода на трехзвенки, смысл хранимок несколько снижается (ну, кроме совсем уж экстремальных задач с требованиями к производительности). Правда, вроде бы еще используют хранимки для обхождения ограничений и проблем ORMов (по крайней мере в мире .Net это обычная практика, судя по форумам). Зачем они сейчас еще нужны - не знаю :) Нужны еще как. Помимо производительности еще и облегчение администрирования, все права даются на хранимки, а напрямую с таблицами клиент работать не должен. Да и изменение логики проходит проще - без сборки новой версии клиента, а просто заменой логики хранимки на сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 09:44 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabas Да и изменение логики проходит проще - без сборки новой версии клиента, а просто заменой логики хранимки на сервере. Можно посмотреть на пример такого изменения логики? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 13:02 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov barrabas Да и изменение логики проходит проще - без сборки новой версии клиента, а просто заменой логики хранимки на сервере. Можно посмотреть на пример такого изменения логики? да легко. 1. банальная трудновыявляемая ошибка, неправильный результат на определенных параметрах, подправил процедуру и всё, никаких пересборок проекта. 2. Добавить например аудит или ещё чего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 13:07 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 barrabas DPH3... По мере перехода на трехзвенки , смысл хранимок несколько снижается (ну, кроме совсем уж экстремальных задач с требованиями к производительности). ... Зачем они сейчас еще нужны - не знаю :) Нужны еще как. Помимо производительности еще и облегчение администрирования, все права даются на хранимки, а напрямую с таблицами клиент работать не должен. Да и изменение логики проходит проще - без сборки новой версии клиента, а просто заменой логики хранимки на сервере. Выделенное цветом Вы с первого раза не заметили? В трехзвенках (многозвенках) - клиент не работает с таблицами, изменение логики происходит без пересборки клиента, итд. Т.е. плюсов от использования хранимок не наблюдается. А минусы наблюдаются (размазывание логики, дополнительная раздача прав, и прочие мелкие радости администрирования). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 13:08 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Проще на самом деле. Меньше действий с процедурами: 1. исправил / закомитил в svn/cvs/меркуриал 2. выполнил без процедур: 1. Исправил / закомитил 2. собрал 3. выложил / в зависимости от слоя еще и всех выгнать из проги может понадобится 4. сказал всем перезайти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 13:11 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП2 barrabas DPH3... По мере перехода на трехзвенки , смысл хранимок несколько снижается (ну, кроме совсем уж экстремальных задач с требованиями к производительности). ... Зачем они сейчас еще нужны - не знаю :) Нужны еще как. Помимо производительности еще и облегчение администрирования, все права даются на хранимки, а напрямую с таблицами клиент работать не должен. Да и изменение логики проходит проще - без сборки новой версии клиента, а просто заменой логики хранимки на сервере. Выделенное цветом Вы с первого раза не заметили? В трехзвенках (многозвенках) - клиент не работает с таблицами, изменение логики происходит без пересборки клиента, итд. Т.е. плюсов от использования хранимок не наблюдается. А минусы наблюдаются (размазывание логики, дополнительная раздача прав, и прочие мелкие радости администрирования). а средний слой пересобирать не нужно ? стопить сервис там и другие прелести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 13:13 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ИХМО средний слой бы тоже делал без логики, а чисто передатчиком команд и результатов, на нем бы сделал кэширование (если нужно), ну и что то специфическое с чем нормальная субд хуже справится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 13:17 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabasМеньше действий с процедурами: 1. исправил / закомитил в svn/cvs/меркуриал 2. выполнил Получил в лоб "object in use", пошёл всех выгонять из базы. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 13:27 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 barrabas а средний слой пересобирать не нужно ? Вы таки определитесь, про Вы клиентскую часть говорили или нет - когда отвечали на сообщение про трехзвенки. А так я могу и серверные (СУБД-шные) хранимые процедуры пересобирать. На дотнете хранимку наваяю, в сиквел засуну. И такую модификацию логики придумаю, что пользователей выгнать придется. ИХМО средний слой бы тоже делал без логики, а чисто передатчиком команд и результатов, на нем бы сделал кэширование (если нужно), ну и что то специфическое с чем нормальная субд хуже справится. Вот и занахуа такой средний слой нужен, спрашивается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 13:28 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПВот и занахуа такой средний слой нужен, спрашивается? чтобы исключить ЛПразмазывание логики, дополнительная раздача прав, и прочие мелкие радости администрирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 13:31 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmЛПВот и занахуа такой средний слой нужен, спрашивается? чтобы исключить ЛПразмазывание логики, дополнительная раздача прав, и прочие мелкие радости администрирования. Так убить его совсем, этот "средний слой без логики". И не будет никакого размазывания, раздачи прав, и прочих мелких радостей. Всё в СУБД жить будет Уж с кэшированием(которое barrabas предлагает оставить в среднем слое) сервер БД справится как-нибудь. Приложение или двузвенное, или многозвенное. Если решили (по каким-либо причинам) делать многозвенку - то совершенно логично именно туда и запихнуть логику, права, и прочие мелкие радости. А иначе просто зачем. Сделать средний слой, но ничего туда не положить - ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 13:39 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛППриложение или двузвенное, или многозвенное. Если решили (по каким-либо причинам) делать многозвенку - то совершенно логично именно туда и запихнуть логику, права, и прочие мелкие радости. А иначе просто зачем. Сделать средний слой, но ничего туда не положить - ??? много ложится на средний слой. А вот логика - не всегда. Действительно, часто проще и оптимальней отдать обработку данных тому, кто эти данные хранит - СУБД. Но, кроме обработки данных есть куча другой логики, а вообще: 1. управление контентом системы 2. права доступа 3. управление данными (в смысле различные БД) 4... впрочем этого уже достаточно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 13:50 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 iscrafm много ложится на средний слой. А вот логика - не всегда. Что-то как-то я этого не понимаю. Что это за логика такая, что не влезет в произвольный средний слой, но при этом влезет в совсем даже не произвольный слой СУБД (не произвольный - потому что чаще всего реляционный, а ежели не реляционный, то и еще более непроизвольный). 1. управление контентом системы 2. права доступа 3. управление данными (в смысле различные БД) Я совсем потерял ход Вашей мысли. Это Вы привели пример того, что ложится в средний слой (но не ложится в СУБД), или пример того, что ложится в СУБД (но не ложится в средний слой)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 14:12 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov barrabasМеньше действий с процедурами: 1. исправил / закомитил в svn/cvs/меркуриал 2. выполнил Получил в лоб "object in use", пошёл всех выгонять из базы. в оракле мне такого не разу не встречалось, про другие базы сказать ничего не могу, т.к. не работал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 14:39 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП2 iscrafm много ложится на средний слой. А вот логика - не всегда. Что-то как-то я этого не понимаю. Что это за логика такая, что не влезет в произвольный средний слой, но при этом влезет в совсем даже не произвольный слой СУБД (не произвольный - потому что чаще всего реляционный, а ежели не реляционный, то и еще более непроизвольный). 1. управление контентом системы 2. права доступа 3. управление данными (в смысле различные БД) Я совсем потерял ход Вашей мысли. Это Вы привели пример того, что ложится в средний слой (но не ложится в СУБД), или пример того, что ложится в СУБД (но не ложится в средний слой)? да хоть работа с разными базами которые о друг друге ничего знать не должны. потом всякие там генерации и отправки писем с отчетами (в базе не очень удобно генерить всякие ексели и пдф, а на С# легко), клиент назал сгенерить всем клиентам, и средний слой зашуршал, а данные в базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 14:44 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП ======= 1. управление контентом системы 2. права доступа 3. управление данными (в смысле различные БД) ======= Я совсем потерял ход Вашей мысли. Это Вы привели пример того, что ложится в средний слой (но не ложится в СУБД), или пример того, что ложится в СУБД (но не ложится в средний слой)? это пример того, что лежит в среднем слое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 14:51 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 barrabas да хоть работа с разными базами которые о друг друге ничего знать не должны. Пожалейте мой мозг. Я задаю вопрос одному человеку, получаю ответ от другого. Причем вопрос "или - или", а ответ "да хоть бы и накуй". потом всякие там генерации и отправки писем с отчетами (в базе не очень удобно генерить всякие ексели и пдф, а на С# легко), клиент назал сгенерить всем клиентам, и средний слой зашуршал, а данные в базе. Серверы отчетов отменили??? Даже если отменили... Вот эта Ваша гипотетическая самописная отчетная система - Вы её к чему привели? Это по Вашему пример "среднего слоя без логики, а логика в СУБД" ? Хз, по мне так это самый что ни на есть пример двузвенной клиент-серверной системы, с логикой в СУБД и рисованием экселей и рассылкой писем на клинте. ------------------------------ 2 iscrafm это пример того, что лежит в среднем слое. Дык с таким я и не спорю. Я очень даже "за" - за то, что ежели уж средний слой образовался, то всякие управления правами и прочие радости надо делать именно там. Непонятки возникли по поводу предложения barrabas'а делать средний слой безнихуа, с одним лишь перенаправлением сиквеловских запросов и (непонятно зачем) кешированием. Насчет логики, не влезающий в средний слой, можете прокомментировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 14:58 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП Даже если отменили... Вот эта Ваша гипотетическая самописная отчетная система - Вы её к чему привели? Это по Вашему пример "среднего слоя без логики, а логика в СУБД" ? Хз, по мне так это самый что ни на есть пример двузвенной клиент-серверной системы, с логикой в СУБД и рисованием экселей и рассылкой писем на клинте. Нет. С клиента ушла только команда сделать и разослать, он начал дальше работать и ничего генерить не будет. К средний слой начал дергать процедуры сервера для получения данных, сгенерил отчеты, отправил, ну и лог отправил кому надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 15:10 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП Дык с таким я и не спорю. Я очень даже "за" - за то, что ежели уж средний слой образовался, то всякие управления правами и прочие радости надо делать именно там. Непонятки возникли по поводу предложения barrabas'а делать средний слой безнихуа, с одним лишь перенаправлением сиквеловских запросов и (непонятно зачем) кешированием. Почему прям без ничего, с логикой но со своей, логика обработки данных в базе, такие команды слой просто передает. Если нужно засветить ИС через внешку, например, я бы заюзал WCF, а не светил базу в инете, это уже средний слой. А почему бы и не сделать кэширование отдельно, зачем базу напрягать когда можно этого не делать, вариантов много, это один из вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 15:19 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabasЛП Даже если отменили... Вот эта Ваша гипотетическая самописная отчетная система - Вы её к чему привели? Это по Вашему пример "среднего слоя без логики, а логика в СУБД" ? Хз, по мне так это самый что ни на есть пример двузвенной клиент-серверной системы, с логикой в СУБД и рисованием экселей и рассылкой писем на клинте. Нет. С клиента ушла только команда сделать и разослать, он начал дальше работать и ничего генерить не будет. К средний слой начал дергать процедуры сервера для получения данных, сгенерил отчеты, отправил, ну и лог отправил кому надо. Нет. Этот Ваш "средний" (отчетный) слой - не есть средний слой в классической многозвенной архитектуре. Он не форсирует дальнейшую работу "через себя". Это самый что ни на есть клиент для СУБД, живущий своей жизнью, не мешающий жить другим клиентам с подобной, но иначе реализованной функциональностью, и не мещающий жить другим клиентам со сколь угодно другой фунциональностью. То, что он куда-то что-то рассылает по запросу кого-то третьего, который в это время занят чем-то четвёртым - это вообще дело десятое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 15:23 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП Насчет логики, не влезающий в средний слой, можете прокомментировать? комментировать особо нечего. Я просто высказал собственное мнение, что логика обработки данных лучше смотрится в СУБД. Чисто имхо. это не означает, что ее нельзя вынести в средний слой. просто я, лично, такое не проповедую. Мне пользоваться простыми SQL предложениями гораздо комфортней и более предсказуемо, чем городить нечто с ORM и обработкой данных на Java,Delphi и т.п. Хотя тоже не отношусь к этому категорично. если быстрее и надежней будет так, как показано ниже, то почему нет. Всему свое место Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 15:25 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabasПочему прям без ничего Почему? По Вашим словам. Если нужно засветить ИС через внешку Этак договоримся до того, что связку MS SQL Server + MS ISA Server будем считать примером многозвенного приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 15:25 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabas Нужны еще как. Помимо производительности еще и облегчение администрирования, все права даются на хранимки, а напрямую с таблицами клиент работать не должен. Да и изменение логики проходит проще - без сборки новой версии клиента, а просто заменой логики хранимки на сервере. Это ты опять про двузвенки говоришь, где причины появления хранимок вполне понятны (как эмуляция application layer). А вот в трехзвенках ничего из этого уже не нужно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 15:27 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov barrabasМеньше действий с процедурами: 1. исправил / закомитил в svn/cvs/меркуриал 2. выполнил Получил в лоб "object in use", пошёл всех выгонять из базы. Это где такое? В смысле, какая СУБД выдает такие штуки при рекомпиляции ХП? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 15:37 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПbarrabasПочему прям без ничего Почему? По Вашим словам. Если нужно засветить ИС через внешку Этак договоримся до того, что связку MS SQL Server + MS ISA Server будем считать примером многозвенного приложения. так собственно чем WCF не средний слой, в нем можно как раз кучу логики не относящейся к БД реализовать 2 DPH3 с правами БД конечно я загнул, но пересобирать и выпускать в продакшен средний слой сложнее, нежели просто заменить процедуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 15:40 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
baracsDimitry Sibiryakov barrabasМеньше действий с процедурами: 1. исправил / закомитил в svn/cvs/меркуриал 2. выполнил Получил в лоб "object in use", пошёл всех выгонять из базы. Это где такое? В смысле, какая СУБД выдает такие штуки при рекомпиляции ХП? FireBird ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 15:41 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 iscrafm если быстрее и надежней будет так, как показано ниже Не надо аргументировать примерами экстремального говнокода Мысль понятна, в общем. Против возможности (и зачастую целесообразности) реализации логики в БД я не возражаю. Но тогда вынос управления правами в средний слой выглядит странно, а аргументы типа "различные СУБД" так и вообще выглядят невозможно. ИМХО, если (по каким-либо причинам логика зашита в БД, то надо иметь в БД по возможности всё остальное (всякое там управление правами). Если же логика в среднем слое, то и управление правами итд итп там же должно лежать. И надобности в хранимках в этом случае как бы и нету вообще (с чего обсуждение и началось). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 15:41 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 barrabas так собственно чем WCF не средний слой, в нем можно как раз кучу логики не относящейся к БД реализовать По Вашему "средний слой" - это "где можно кучу всякой логики реализовать"? Я и на клиенте могу навалить реализовть кучу всякой логики, но средним слоем он от этого не станет. Даже не сомневайтесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 15:44 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП2 iscrafm если быстрее и надежней будет так, как показано ниже Не надо аргументировать примерами... а что в нем написано? :) ЛПНо тогда вынос управления правами в средний слой выглядит странно, а аргументы типа "различные СУБД" так и вообще выглядят невозможно. Вы просто наверное не встречались с таким. Когда в комплекс завязаны много компаний с различными системами и СУБД, то выглядит это очень даже "возможно" ЛПИМХО, если (по каким-либо причинам логика зашита в БД, то надо иметь в БД по возможности всё остальное (всякое там управление правами). Если же логика в среднем слое, то и управление правами итд итп там же должно лежать. И надобности в хранимках в этом случае как бы и нету вообще (с чего обсуждение и началось). в примитивных случаях конечно. Ничего кроме СУБД не нужно в принципе. Я говорю о больших системах. Кстати, в какой из СУБД будете держать управление доступом если их несколько. Ну и конечно же, в трехзвенках клиент не работает с СУБД. Для СУБД 500 пользователей системы - это один Сервер приложений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 15:51 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmbaracsDimitry Sibiryakov Получил в лоб "object in use", пошёл всех выгонять из базы. Это где такое? В смысле, какая СУБД выдает такие штуки при рекомпиляции ХП? FireBirdНет такого в FireBird. Но менять метаданные на ходу действительно весьма не рекомендуется. Ещё с момента начальной реализации PSQL Borland'ом. Ничего, когда-нибудь и это исправим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 15:52 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
hvladiscrafmbaracsDimitry Sibiryakov Получил в лоб "object in use", пошёл всех выгонять из базы. Это где такое? В смысле, какая СУБД выдает такие штуки при рекомпиляции ХП? FireBirdНет такого в FireBird. ну значит у меня под этим именем MySQL скрывается. Вот же замаскировался жук. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 15:55 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 iscrafm а что в нем написано? :) Я в сортах овна не разбираюсь :) Кстати, в какой из СУБД будете держать управление доступом если их несколько. Именно в среднем слое буду держать управление доступом. Потому что СУБД несколько. Проще сопровождать одну систему раздачи прав, чем несколько. И по этой же самой причине буду стараться держать логику с том же самом (а может и немножко другом) среднем слое - потому что сопровождать одну кучку бизнес-логики гораздо проще, чем многие множества куч, тем более размазанных по каким-то там хранимкам. Есть трехзвенка - на фиг бы мне сдались хранимые процедуры. (исключая вопросы производительности, из за которых конечно же может понадобиться заниматься размазыванием). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 15:59 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП2 barrabas так собственно чем WCF не средний слой, в нем можно как раз кучу логики не относящейся к БД реализовать По Вашему "средний слой" - это "где можно кучу всякой логики реализовать"? Я и на клиенте могу навалить реализовть кучу всякой логики, но средним слоем он от этого не станет. Даже не сомневайтесь. а по теме, чем WCF-сервер не средний слой между базой и клиентом, та же программа в виде сервиса или приложения, слушает порт, принимает команды с клиента, выдает ему результат. У нас 4ре разные ИС, а баз разных и того больше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:00 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
это вопрос как я понял "религиозный" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:05 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabasУ нас 4ре разные ИС, а баз разных и того больше И бизнес-логика, как я понимаю, у Вас размазана по четырем разным ИС и еще большему количеству баз, где она лежит в миллионе разнообразных хранимок. С чем Вас и поздравляю. Увольте там кого-нибудь. Наймите другого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:06 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПЕсть трехзвенка - на фиг бы мне сдались хранимые процедуры. (исключая вопросы производительности, из за которых конечно же может понадобиться заниматься размазыванием). "нафиг бы"? Речь о чем-то конкретном или просто о барышнях рассуждаем которых пощупать нет возможности? А то назвали что-то нехорошим словом, а потом сказали, что даже не понимаете что там написано. Скучно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:08 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПbarrabasУ нас 4ре разные ИС, а баз разных и того больше И бизнес-логика, как я понимаю, у Вас размазана по четырем разным ИС и еще большему количеству баз, где она лежит в миллионе разнообразных хранимок. С чем Вас и поздравляю. Увольте там кого-нибудь. Наймите другого. да нет, просто только одна наша, а другие купленные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:08 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmЛПЕсть трехзвенка - на фиг бы мне сдались хранимые процедуры. (исключая вопросы производительности, из за которых конечно же может понадобиться заниматься размазыванием). "нафиг бы"? Речь о чем-то конкретном или просто о барышнях рассуждаем которых пощупать нет возможности? А то назвали что-то нехорошим словом, а потом сказали, что даже не понимаете что там написано. Скучно. в оракле есть пакеты, и миллион хранимок это не про него ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:09 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmЯ просто высказал собственное мнение, что логика обработки данных лучше смотрится в СУБД. Чисто имхо. это не означает, что ее нельзя вынести в средний слой. просто я, лично, такое не проповедую. Мне пользоваться простыми SQL предложениями гораздо комфортней и более предсказуемо, чем городить нечто с ORM и обработкой данных на Java,Delphi и т.п. Хотя тоже не отношусь к этому категорично. Гм. Хотелось бы увидеть эти простые SQL (а не T-SQL, например) предложения, обеспечивающие бизнес-логику и обработку данных. Бизнес-логика в большинстве приложений (даже очень простых) не сводится к DML. А это значит, что реально таки пишется средний слой, только не на универсальном языке, а на каком-нибудь T-SQL. Ну и все велосипеды, которые обычно уже есть в универсальных платформах - придумываются с нуля. Впрочем, ORM - это, конечно, зло :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:13 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3barrabas Нужны еще как. Помимо производительности еще и облегчение администрирования, все права даются на хранимки, а напрямую с таблицами клиент работать не должен. Да и изменение логики проходит проще - без сборки новой версии клиента, а просто заменой логики хранимки на сервере. Это ты опять про двузвенки говоришь, где причины появления хранимок вполне понятны (как эмуляция application layer). Да сколько-угодно-звенки! С точки зрения сервера, управляющего БД, все что к нему обращается снаружи - клиент. И если клиент читает/меняет данные в БД через хранимые процедуры, это: - во многих случаях, сильно ускоряет работу системы в целом, - упрощает обеспечение целостности и непротиворечивости данных, - сильно упрощает сопровождение и развитие системы; - про разделение доступа к объектам бд тут уже много писали... DPH3[А вот в трехзвенках ничего из этого уже не нужно... Ну, тогда dbf-ники на новелловском сервере лучшая БД для вас ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:16 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabas А почему бы и не сделать кэширование отдельно, зачем базу напрягать когда можно этого не делать, вариантов много, это один из вариантов. Обычно потребность в дополнительном (не средствами БД) кэшировании возникает или при очень высоких нагрузках (ну там сотни и тысячи запросов в секунду), или при очень больших объемах оперативных данных (десятки гигов, нужных ежесекундно - граф друзей, например) или при плохом проектировании БД и архитектуре системы вообще. Последний сценарий - наиболее популярный. Более того, если вам нужно кэширование данных от БД на промежуточном уровне, значит, скорее всего, нужно срочно делать шардинг :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:17 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3barrabas А почему бы и не сделать кэширование отдельно, зачем базу напрягать когда можно этого не делать, вариантов много, это один из вариантов. Обычно потребность в дополнительном (не средствами БД) кэшировании возникает или при очень высоких нагрузках (ну там сотни и тысячи запросов в секунду), или при очень больших объемах оперативных данных (десятки гигов, нужных ежесекундно - граф друзей, например) или при плохом проектировании БД и архитектуре системы вообще. Последний сценарий - наиболее популярный. Более того, если вам нужно кэширование данных от БД на промежуточном уровне, значит, скорее всего, нужно срочно делать шардинг :) у нас нету 3го слоя я гипотетически рассуждаю. пока он нам не нужен, но вообще есть идея wcf сервиса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:21 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabasПроще на самом деле. Меньше действий с процедурами: 1. исправил / закомитил в svn/cvs/меркуриал 2. выполнил без процедур: 1. Исправил / закомитил 2. собрал 3. выложил / в зависимости от слоя еще и всех выгнать из проги может понадобится 4. сказал всем перезайти. Ой. Я бы сказал, за такой набор действий убивать надо :) Правильный вариант: 1. Исправил 2. Закоммитил 3. Собрал релиз 4. Отдал в тестирование 5. Отдал в эксплуатацию И тут наличие шага "собрал" - оно гораздо удобнее, так как гарантирует, что то, что отдано в тестирование - и окажется на продакшне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:22 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmРечь о чем-то конкретном или Речь об ценности и полезности хранимок в трехзвенках. Гипотетических хранимок в гипотетических трезвенках. Общие соображения. А то назвали что-то нехорошим словом, а потом сказали, что даже не понимаете что там написано. Скучно. Я не сказал, что не понимаю :) Не хочу понимать. Не люблю я разбираться вот в таком вот перловом скотоложестве :) А что, там какой-то шедевр, заслуживающий пристального внимания? ------------------------- 2 barrabas да нет, просто только одна наша, а другие купленные Это объяснение того, почему "всё плохо". А никак не аргумент за то, что "это хорошо" и "это правильно" :) ------------------- 2 baracs И если клиент читает/меняет данные в БД через хранимые процедуры, это: - во многих случаях, сильно ускоряет работу системы в целом, - упрощает обеспечение целостности и непротиворечивости данных, - сильно упрощает сопровождение и развитие системы; - про разделение доступа к объектам бд тут уже много писали... В случае, если у СУБД ровно один клиент (а это именно случай многозвенных приложений) - Ваше высказывание неверно по всем пунктам (по некоторым пунктам оно неверно и в случае многих клиентов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:24 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3Гм. Хотелось бы увидеть эти простые SQL (а не T-SQL, например) предложения, обеспечивающие бизнес-логику и обработку данных. на рисунке - элемент среднего слоя. А ниже один из декомпозированных "пунктиков" сценария бизнес-логики (MRP планирование в данном случае). Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:28 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3Бизнес-логика в большинстве приложений (даже очень простых) не сводится к DML. А это значит, что реально таки пишется средний слой, только не на универсальном языке, а на каком-нибудь T-SQL. Ну и все велосипеды, которые обычно уже есть в универсальных платформах - придумываются с нуля. Если на T-SQL пишется также, как на процедурных языках, то таки да! Получается ужас Но любым инструментом надо уметь пользоваться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:30 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПЯ не сказал, что не понимаю :) Не хочу понимать. Не люблю я разбираться вот в таком вот перловом скотоложестве :) А что, там какой-то шедевр, заслуживающий пристального внимания? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:32 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПbaracs И если клиент читает/меняет данные в БД через хранимые процедуры, это: - во многих случаях, сильно ускоряет работу системы в целом, - упрощает обеспечение целостности и непротиворечивости данных, - сильно упрощает сопровождение и развитие системы; - про разделение доступа к объектам бд тут уже много писали... В случае, если у СУБД ровно один клиент (а это именно случай многозвенных приложений) - Ваше высказывание неверно по всем пунктам (по некоторым пунктам оно неверно и в случае многих клиентов) А поподробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:33 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
baracs И если клиент читает/меняет данные в БД через хранимые процедуры, это: - во многих случаях, сильно ускоряет работу системы в целом, Э, в каких? Ну, кроме серверного курсора по миллиону строк, который, нужен крайне редко (а лучше бы - никогда). baracs - упрощает обеспечение целостности и непротиворечивости данных, Как? baracs - сильно упрощает сопровождение и развитие системы; Ой, а тут - как? Как отдать в тестирование сборку промежуточного сервера - я знаю. А вот как отдать в тестирование структуру БД.... Я уж молчу про невозможность рефакторинга в SQLе, неразвитость (это мягко сказано) IDE, убогость языковых средств и т.д. baracs - про разделение доступа к объектам бд тут уже много писали... Э, а что, у вас каждый пользователь системы имеет отдельную учетную запись в БД? И авторизуется прямо в БД? А если нет - то где там разделение доступа, да и разделение для чего? baracs Ну, тогда dbf-ники на новелловском сервере лучшая БД для вас Ну, моя любимая БД - это IBM DB2. Самый развитый SQL и осознание потребностей трехзвенок :) Oracle, похоже, по привычке считает, что все приложения - двухзвенные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:33 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
p.s. 2 ЛП, сорвалось. нет там ничего сверхестветвенного. Просто пример когда рег.выражения перла помогут просто решить задачу предварительного приведения данных из разных клиент-банков к удобоваримому виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:37 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3barrabasПроще на самом деле. Меньше действий с процедурами: 1. исправил / закомитил в svn/cvs/меркуриал 2. выполнил без процедур: 1. Исправил / закомитил 2. собрал 3. выложил / в зависимости от слоя еще и всех выгнать из проги может понадобится 4. сказал всем перезайти. Ой. Я бы сказал, за такой набор действий убивать надо :) Правильный вариант: 1. Исправил 2. Закоммитил 3. Собрал релиз 4. Отдал в тестирование 5. Отдал в эксплуатацию И тут наличие шага "собрал" - оно гораздо удобнее, так как гарантирует, что то, что отдано в тестирование - и окажется на продакшне. тестирование это само сабой, для этого есть тестер и тестовый сервак на котором собственно и правится, эти пункты совпадают просто, я их и опустил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:39 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm (MRP планирование в данном случае). Ой. Так получилось, что MRP системы я писал... И что, у вас все варианты расчета планов реализованы чистым DMLем? А эвристики и различные алгоритмы прогнозирования для различных периодов, для различных товаров, для различных переделов у вас как реализуются? Тоже DMLем? А граничные условия для оценочных функций для планов (обычно задаваемые пользователем в виде выражений) - тоже DMLем? И линейное программирование вы тоже на DMLе делаете? Не верю :) Мне доводилось все это реализовывать средствами БД, на относительно чистом MS SQL... И нехватка нормального языка сказывалась чрезвычайно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:41 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
> Oracle, похоже, по привычке считает, что все приложения - двухзвенные. то-то у него cвоих аппликейшн серверов три штуки не считая всяких coherence и прочей middleware хрени наверна специально всё скупил чтобы испортить и заставить все писать хранимки на pl/sql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:43 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabas тестирование это само сабой, для этого есть тестер и тестовый сервак на котором собственно и правится, эти пункты совпадают просто, я их и опустил. А какая сущность отдается в тестирование? Что получает отдел тестирования от отдела разработки? Как для SQLя отмечаются релизы? (Кстати, особенно это актуально для Oracle, где синтаксический анализатор не слишком качественный. У нас был опыт, когда вставленный лишний пробел (незначащий) приводил к принципиальному изменению запроса). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:44 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП 2 barrabas да нет, просто только одна наша, а другие купленные Это объяснение того, почему "всё плохо". А никак не аргумент за то, что "это хорошо" и "это правильно" :) нет, это то что есть, и как я писал выше среднего слоя у нас пока нет, да и собственно если было бы иначе это была бы одна ИС с кучей баз данных. ------------- Если делать логику на среднем слое, то и воспользоваться ей можно только там и ниже, а вот в БД уже никак, а бывают задачи - написание скрипта где нужно, что то выгрузить получить быстро данные или еще чего, где очень пригодились бы готовые функции, а их в базе нету, придется или делать это в среднем слое и вызвать в клиенте (т.е. пересобирать клиента и прослойку) или дублировать в базе логику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:49 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3barrabas тестирование это само сабой, для этого есть тестер и тестовый сервак на котором собственно и правится, эти пункты совпадают просто, я их и опустил. А какая сущность отдается в тестирование? Что получает отдел тестирования от отдела разработки? Как для SQLя отмечаются релизы? (Кстати, особенно это актуально для Oracle, где синтаксический анализатор не слишком качественный. У нас был опыт, когда вставленный лишний пробел (незначащий) приводил к принципиальному изменению запроса). ничего клиент старый, просто проверить его поведение на измененной тестовой базе, после чего передается скрипт модификации БД тому у кого есть права изменять продакшин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:50 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3 (Кстати, особенно это актуально для Oracle, где синтаксический анализатор не слишком качественный . У нас был опыт, когда вставленный лишний пробел (незначащий) приводил к принципиальному изменению запроса). ой ёёёё ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:53 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3 (Кстати, особенно это актуально для Oracle, где синтаксический анализатор не слишком качественный . У нас был опыт, когда вставленный лишний пробел (незначащий) приводил к принципиальному изменению запроса). просто план запроса перестраивался из-за изменения текста, а там уж статистика и настройки на тот момент играют роль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:55 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
двухзвенный оракл> Oracle, похоже, по привычке считает, что все приложения - двухзвенные. то-то у него cвоих аппликейшн серверов три штуки не считая всяких coherence и прочей middleware хрени наверна специально всё скупил чтобы испортить и заставить все писать хранимки на pl/sql Э, ты хочешь поговорить об этом? Просто, увы, сейчас для компании, предоставляющей решения (а не отдельные компоненты), необходимо иметь сервер приложений. Вот Оракл и купил. Но при этом возникает ощущение, что при разработки БД Oracle разработчики предполагают, что всякие трехзвенки - это от лукавого. Ну, например, jdbc драйвер к Oracle - это жуткое глюкалово, работа с Oracle Stream не из БД - тоже, мягко говоря, не безглючна. Всевозможных операций типа select from insert (с нормальной поддержкой на уровне jdbc) до сих пор нет - ну и т.д. И таких мелочей - довольно много, при активной разработке они заметны. Зато функциональности для реализации бизнес-логики внутри БД - дофига и все больше и больше. Да и только после покупки WebLogic можно считать, что у Оракл появился сервер приложений. Орион (в девичестве) - это совсем несерьезно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 16:56 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3iscrafm (MRP планирование в данном случае). Ой. Так получилось, что MRP системы я писал... И что, у вас все варианты расчета планов реализованы чистым DMLем? А эвристики и различные алгоритмы прогнозирования для различных периодов, для различных товаров, для различных переделов у вас как реализуются? Тоже DMLем? А граничные условия для оценочных функций для планов (обычно задаваемые пользователем в виде выражений) - тоже DMLем? И линейное программирование вы тоже на DMLе делаете? Не верю :) чуть выше пример регулярных выражений на перле. А теперь просто представьте это в виде цепочки примитивов. Это я к тому, что если Вы знаете внутренности MRP, то наверняка помните, что он конечно большой, но состоит из цепочки таких примитивов. Рекомендую в материалах APIS этот вопрос посмотреть. Из моих настольных книг в 90-е - Ландватер. Этот учебник хорош тем, что не изобилует ненужной в данном вопросе математикой, а обучает тому же самому с точки зрения пошаговой логики, которая прекрасно ложится на реляционную модель. Переводы лучше не читать, путаница в терминах и половина материала покоцана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:00 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3baracs И если клиент читает/меняет данные в БД через хранимые процедуры, это: - во многих случаях, сильно ускоряет работу системы в целом, Э, в каких? Ну, кроме серверного курсора по миллиону строк, который, нужен крайне редко (а лучше бы - никогда). Когда приложение вытягивает из нескольких таблиц по нескольку сотен тыщ строк, чтобы внутри себя их перелопатить и выбрать из этой кучи пару десятков нужных. DPH3baracs - упрощает обеспечение целостности и непротиворечивости данных, Как? Выполняя необходимые проверки, когда они требуют обращения ко множеству таблиц, не "вылезая" с сервера. DPH3baracs - сильно упрощает сопровождение и развитие системы; Ой, а тут - как? Как отдать в тестирование сборку промежуточного сервера - я знаю. А вот как отдать в тестирование структуру БД.... Я уж молчу про невозможность рефакторинга в SQLе, неразвитость (это мягко сказано) IDE, убогость языковых средств и т.д. А БД - это не модуль. Она плавно развивается, как живой организм. ХП и представления, как раз и помогают смягчать последствия болезней роста. Ох чую, на разных языках мы говорим DPH3baracs - про разделение доступа к объектам бд тут уже много писали... Э, а что, у вас каждый пользователь системы имеет отдельную учетную запись в БД? И авторизуется прямо в БД? А разновсякие есть Жизнь, она разнообразна... DPH3baracs Ну, тогда dbf-ники на новелловском сервере лучшая БД для вас Ну, моя любимая БД - это IBM DB2. Самый развитый SQL и осознание потребностей трехзвенок :) К сожалению, нет возможности осознать всю крутизну... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:01 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabasпросто план запроса перестраивался из-за изменения текста, а там уж статистика и настройки на тот момент играют роль Э, я разве говорил про изменение плана? История следующая: alter table, добавляется nullable колонка. По идее все замечательно, операция практически мгновенная, реальные строки не меняются. Но если поставить пробел перед закрывающей ";", то Oracle начинает таки реально добавлять пустое поле во все строки (вывесив table lock). Таблица была большой :( Отослали багрепорт в Oracle, там признали ошибку. Вообще, проблем именно с качеством синтаксического анализатора в Oracle хватает. Вплоть до рекомендаций не использовать ANSIшный формат join-ов из-за возможных ошибок (в 10ке, правда, такого уже нет, про 9ку - не знаю). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:01 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3 Ну, моя любимая БД - это IBM DB2. Самый развитый SQL и осознание потребностей трехзвенок :) Oracle, похоже, по привычке считает, что все приложения - двухзвенные. все проще, в оракле pl/sql уже лет 20 развивается и одна конструкция pl/sql часто и густо заменяет десяток строк любого языка апп-сервера. а то, что фаны дб2 любят трехзвенки - не секрет. аналог pl/sql там только появился, а до этого код на сервере приходилось реализовывать дедовским способом типа чистого С или кабола. sql/pl в db2 практически никто не использует, оно и понятно, разбираться в новом языке, который имеет лишь базовые конструкции и тучу нюансов при переносе на другую платформу никому не хочется. действительно проще взять какой-нить хибер и ипать мозг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:02 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
baracsЭ, а что, у вас каждый пользователь системы имеет отдельную учетную запись в БД? И авторизуется прямо в БД? У нас да, БД доверяет авторизации ОСи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:04 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm Рекомендую в материалах APIS этот вопрос посмотреть. API C S конечно же имеется ввиду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:05 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabasbaracsЭ, а что, у вас каждый пользователь системы имеет отдельную учетную запись в БД? И авторизуется прямо в БД? У нас да, БД доверяет авторизации ОСи. на юзеров права и навешиваются. На предыдущей работе были юзеры в таблице, и таблица с правами, а коннект под одним. По разному бывает. Сейчас, например, не нужно вставлять проверки кругом на право доступа к объекту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:07 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabasbaracsЭ, а что, у вас каждый пользователь системы имеет отдельную учетную запись в БД? И авторизуется прямо в БД? У нас да, БД доверяет авторизации ОСи. У нас тоже То не я писал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:08 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm Это я к тому, что если Вы знаете внутренности MRP, то наверняка помните, что он конечно большой, но состоит из цепочки таких примитивов. Рекомендую в материалах APIS этот вопрос посмотреть. Из моих настольных книг в 90-е - Ландватер. Этот учебник хорош тем, что не изобилует ненужной в данном вопросе математикой, а обучает тому же самому с точки зрения пошаговой логики, которая прекрасно ложится на реляционную модель. Переводы лучше не читать, путаница в терминах и половина материала покоцана. Э, с пошаговой логикой там просто. Но там есть множественность выбора примитивов на каждом шаге. И для разных сущностей разные набор этих примитвов. И для разных переделов. И все это нужно динамически менять и выбирать. И пользователи, увы, очень любят добавлять свои эвристики и доработки алгоритмов планирования - так что все равно приходится алгоритмику генерации планов (с оптимизациями) делать очень гибкой. Это все делается, конечно - но чистым DML не обойтись, приходится использовать хранимки, T-SQL и т.п. P.S. А еще есть кошмар скользящего среднего и оптимизации закупок с выбором окна расчета скольжения. В общем, на любом универсальном языке это бы писалось на порядок проще и работало бы за миллисекунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:09 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3 И пользователи, увы, очень любят добавлять свои эвристики и доработки алгоритмов планирования - так что все равно приходится алгоритмику генерации планов (с оптимизациями) делать очень гибкой. Это все делается, конечно - но чистым DML не обойтись, приходится использовать хранимки, T-SQL и т.п. т.е. здесь у нас трехзвенка, здесь чуток хранимок, а это мы рыбу заворачивали интересный подход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:14 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.! все проще, в оракле pl/sql уже лет 20 развивается и одна конструкция pl/sql часто и густо заменяет десяток строк любого языка апп-сервера. а то, что фаны дб2 любят трехзвенки - не секрет. аналог pl/sql там только появился, а до этого код на сервере приходилось реализовывать дедовским способом типа чистого С или кабола. sql/pl в db2 практически никто не использует, оно и понятно, разбираться в новом языке, который имеет лишь базовые конструкции и тучу нюансов при переносе на другую платформу никому не хочется. действительно проще взять какой-нить хибер и ипать мозг. Ну, Yo!, это же не серьезно, сам же все знаешь. И что хранимки на DB2 писались (давно) на C, потом еще на пяти языках (включая какой-то PLSQL подобный), сейчас вообще реализовали оракловый PL/SQL (приделанный по просьбе мигрирующих с Оракла). Впрочем, идеология DB2, насколько я понимаю, изначально предполагала, что бизнес-логику пишут на подходящем языке, вставляя туда SQL-операторы. Может быть и вызывая этот код прямо в контексте сервера - это уж как кому надо :) Кстати, а чем PL/SQL мощнее какой-нибудь Java? Приведи пример. P.S. Хибернейт (как и прочие ORM) - это зло. По крайней мере при высокой нагрузке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:16 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.! т.е. здесь у нас трехзвенка, здесь чуток хранимок, а это мы рыбу заворачивали интересный подход. В том проекте, где я делал MRP - увы, никакой трехзвенки, обычный клиент-сервер. Это было уже лет шесть назад, что-ли. Еще MS SQL 2000... Пара сотен таблиц (только на один модуль), тысячи хранимок. Ностальгия, переходящая в кошмар. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:18 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3 Кстати, а чем PL/SQL мощнее какой-нибудь Java? Приведи пример. в большинстве случаев кода меньше. ну и всякие bulk collect и forall, потом синтаксис проще (не нужно создавать объекты типа sqlcommand (или как он там уже) и биндить переменные) , а просто писать sql в процедуре и все. Но многие вещи конечно удобнее сделать в яве или вообще нельзя в pl/sql. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:23 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabasbaracsЭ, а что, у вас каждый пользователь системы имеет отдельную учетную запись в БД? И авторизуется прямо в БД? У нас да, БД доверяет авторизации ОСи. Интранет? Корпоративная система? Небольшое число пользователей? Просто у меня в последних проектах (что накладывает отпечаток, угу), число пользователей системы далеко за 100K... Там все равно авторизацию на уровне БД не сделать. Впрочем, в моих корпоративных системах тоже регулярно нужны были гибкие права, всяческие ограничения на колонки и отдельные строки по хитрым алгоритмам, так что средствами БД это не реализовать (ну, может быть через Oracle Vault, но слишком он дорого стоит). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:28 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3Впрочем, в моих корпоративных системах тоже регулярно нужны были гибкие права, всяческие ограничения на колонки и отдельные строки по хитрым алгоритмам, так что средствами БД это не реализовать (ну, может быть через Oracle Vault, но слишком он дорого стоит). М.б. просто не умеете?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:31 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3barrabasbaracsЭ, а что, у вас каждый пользователь системы имеет отдельную учетную запись в БД? И авторизуется прямо в БД? У нас да, БД доверяет авторизации ОСи. Интранет? Корпоративная система? Небольшое число пользователей? Просто у меня в последних проектах (что накладывает отпечаток, угу), число пользователей системы далеко за 100K... Там все равно авторизацию на уровне БД не сделать. Впрочем, в моих корпоративных системах тоже регулярно нужны были гибкие права, всяческие ограничения на колонки и отдельные строки по хитрым алгоритмам, так что средствами БД это не реализовать (ну, может быть через Oracle Vault, но слишком он дорого стоит). ясно что не инет, Сайт - один юзер, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:32 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabas в большинстве случаев кода меньше. ну и всякие bulk collect и forall, Ну, тут бы я поспорил, сильно зависит от языка и задачи. Например, наследование и лямбды позволяют написать очень компактные алгоритмы :) потом синтаксис проще (не нужно создавать объекты типа sqlcommand (или как он там уже) и биндить переменные) , а просто писать sql в процедуре и все. Тут конечно :) Хотя если отделить DAO от BL в коде, то особо сложности синтаксиса не видишь. Ну и если использовать всяческий DB2 embedded sql, то там запросы тоже пишутся прямо в коде и биндинг не нужен(а потом работает препроцессор). Правда, я таким не пользовался :) А вообще, у меня как-то в последнее время число запросов к БД (различных) все сокращается и сокращается. Даже если сложная логика, сложные данные, разнообразная обработка - удается обходиться очень компактным DAO layer. И вряд ли это следствие задач - задачи то довольно разные (правда, почти все с приличной нагрузкой). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:39 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
pkarklinDPH3Впрочем, в моих корпоративных системах тоже регулярно нужны были гибкие права, всяческие ограничения на колонки и отдельные строки по хитрым алгоритмам, так что средствами БД это не реализовать (ну, может быть через Oracle Vault, но слишком он дорого стоит). М.б. просто не умеете?! О, а расскажите, как. Обычная задача - дерево объектов. Операции модификации (для простоты) затрагивает только один объект. Операции просмотра - поддеревья, не положенное видеть нельзя. Права пользователю выдаются на вершины, права наследуются и перекрываются. Права зависят от времени суток и дня недели (по времени пользователя, а не сервера - они в разных временных поясах, да и пояса эти разные). Расписание меняется достаточно часто (до двух раз в день - легко). Но при этом по конкретной команде конкретному пользователю на короткое время могут давать не положенные ему права :) Объектов - сравнительно мало, где-то сотня тысяч. Пользователей - пара десятков, совсем несерьезно. Права - фактически индивидуальны. Схема несколько упрощена (там еще некоторые права выдавались автоматом при особых состояниях системы, например, по рекомендации модуля управления рисками). БД - ну, например, Oracle 10.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:47 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3А еще есть кошмар скользящего среднего и оптимизации закупок с выбором окна расчета скольжения. В общем, на любом универсальном языке это бы писалось на порядок проще и работало бы за миллисекунды. работало бы, писалось бы... а в чем разница между 1с и 1мс при подобном планировании? Мы же не MES реального времени говорим. Конечно, некоторые фрагменты среднего слоя используют и тот же T-SQL, если требуется. например: старый MS SQL2000 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:47 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3 И что хранимки на DB2 писались (давно) на C, потом еще на пяти языках уже перетиралось тут не раз, на С писалось у всех, но все постепенно перешли на следующую ступень - на языки 4GL. и только дб2 пропустил революцию и все кропал по старинке, в терминах оракла это завется технологией препроцессоров, говорят в оракле вымершая в 80-х годах прошлого столетия. поняв, что на дедовских технологиях далеко не уедешь ибм выкатил sql/pl где-то лет 10 назад, но в то время как раз была мода 3-tier и подавляющее большинство действительно так его и завет "какой-то PLSQL подобный" ... DPH3 Впрочем, идеология DB2, насколько я понимаю, изначально предполагала, что бизнес-логику пишут на подходящем языке, вставляя туда SQL-операторы. Может быть и вызывая этот код прямо в контексте сервера - это уж как кому надо :) да не умеет дб2 ту же жаву в контексте сервера пускать, только как fenced. уже два раза обсасывали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:48 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3Объектов - сравнительно мало, где-то сотня тысяч. Пользователей - пара десятков, совсем несерьезно. Это имеет принципиальное значение?! К примеру: Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. DPH3Права пользователю выдаются на вершины, права наследуются и перекрываются. Права зависят от времени суток и дня недели (по времени пользователя, а не сервера - они в разных временных поясах, да и пояса эти разные). Расписание меняется достаточно часто (до двух раз в день - легко). Но при этом по конкретной команде конкретному пользователю на короткое время могут давать не положенные ему права :) И... Какие, собственно, у Вас трудности, реализовать ACL средставами реляционной СУБД?! DPH3БД - ну, например, Oracle 10.1 Ну, как Вы поняли, у меня все это на MS SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:05 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm работало бы, писалось бы... а в чем разница между 1с и 1мс при подобном планировании? Мы же не MES реального времени говорим. Конечно, некоторые фрагменты среднего слоя используют и тот же T-SQL, если требуется. например: Ну, у меня построение цепочки планов для компании на год на основании прогноза занимало до двух часов. А уточнение прогноза закупок - да, в 10 секунд помещался, хотя и повозился. Кстати, то же на MS SQL 2000 :) Там основные проблемы - в том, что план закупок еще требовал накладывания ограничений (по объему склада, по зависимости цены закупки от объема, по выбору поставщика среди альтернативных, по учету особенностей данного поставщика (разные возможные графики, разный разрыв между заказом и поставкой, разные цены, разные скидки, разные приоритеты, разные кванты доставки). И все это оптимизировать по эвристикам или перебором. Ну и требовалось, например, приделать к этому игру в "что, если" (если мы сейчас закажем то-то по особой скидочной цене, то как изменится общий бюджет закупок по товарному направлению) - а тут уже требовалась производительность. А, еще и перемещения между складами филиалов. И еще прогноз потребления считался разнообразно (разные алгоритмы вычисления среднего (скользящие с разными окнами, меняющиеся окна, смена алгоритма расчета на лету). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:06 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3Там основные проблемы - в том, что план закупок еще требовал накладывания ограничений (по объему склада, по зависимости цены закупки от объема, по выбору поставщика среди альтернативных, по учету особенностей данного поставщика (разные возможные графики, разный разрыв между заказом и поставкой, разные цены, разные скидки, разные приоритеты, разные кванты доставки). И все это оптимизировать по эвристикам или перебором. Ну и требовалось, например, приделать к этому игру в "что, если" (если мы сейчас закажем то-то по особой скидочной цене, то как изменится общий бюджет закупок по товарному направлению) - а тут уже требовалась производительность. А, еще и перемещения между складами филиалов. И еще прогноз потребления считался разнообразно (разные алгоритмы вычисления среднего (скользящие с разными окнами, меняющиеся окна, смена алгоритма расчета на лету). Вы кого тут хотите этим удивить?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:08 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
pkarklin И... Какие, собственно, у Вас трудности, реализовать ACL средствами реляционной СУБД?! Кодом на SQL/T-SQL - практически никаких (ну, с деревьями чуть помучаться, но делал и не раз). Средствами администрирования БД и выставлением грантов на хранимые процедуры - боюсь, что никак. Тут-то речь шла о том, что использование хранимых процедур позволяет упростить контроль прав доступа. Иногда (если можно просто отгрантовать роли на уровне администратора БД) - это так. Но в моей практике встроенных возможностей не хватает, приходится писать код для авторизации. А тут уже разницы между средним уровнем и T-SQL не наблюдается (по крайней мере, в пользу TSQL). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:12 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
pkarklin Вы кого тут хотите этим удивить?! Да никого :) Просто как-то сомневаюсь, что это удобнее и быстрее делать на T-SQL, нежели чем на java :) По крайней мере, мне - точно не удобнее.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:14 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3Кодом на SQL/T-SQL - практически никаких (ну, с деревьями чуть помучаться, но делал и не раз). Все прекрасно работает на "голом" транзакте. DPH3Но в моей практике встроенных возможностей не хватает, приходится писать код для авторизации. Да, приходится, но я проектирую необходимую модель и пишу его на T-SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:15 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3Просто как-то сомневаюсь , что это удобнее и быстрее делать на T-SQL, нежели чем на java :) По крайней мере, мне - точно не удобнее .... Вот. Золотые слова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:16 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.!sql/pl в db2 практически никто не использует, оно и понятно, разбираться в новом языке, который имеет лишь базовые конструкции и тучу нюансов при переносе на другую платформу никому не хочется. действительно проще взять какой-нить хибер и ипать мозг.Ой! То есть меня, например, практически не существует? Категорически не согласен! Появился SQL PL в 7-й, кажется, версии, то есть он не намного моложе Java, к примеру. Или молодую Джаву тоже использовать не надо? ;) По поводу "тучи нюансов при переносе на другую платформу" хотелось бы подробнее - я как-то всегда считал PL SQL единым для DB2 LUW, т.е. для практически всех Oracle-совместимых платформ (ну, кроме "совсем уже устаревших"(c) мейнфреймов и iSeries). Yo.!да не умеет дб2 ту же жаву в контексте сервера пускать, только как fenced. уже два раза обсасывали.Ну да, теряем на переключении контекста. Зато и не лицензируем ресурсы, используемые Java. Кстати, где-то там же обсасывали, что PL/SQL тоже выполняется отдельной вирт. машиной, не зря же native-компиляцию для него придумали. Она, конечно, лучше "вписана" в СУБД, чем Java, но спасает ли это от переключения контекстов? Кстати, о "лишь базовых конструкциях" - в последнем DB2 9.7 SQL PL в части обработки данных в БД функционально ничем не хуже PL/SQL. А остальное, ИМХО, всяко лучше на Java писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:16 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3 Но в моей практике встроенных возможностей не хватает, приходится писать код для авторизации. А тут уже разницы между средним уровнем и T-SQL не наблюдается (по крайней мере, в пользу TSQL). ну если у мсскл не наблюдается понаблюдайте у оракла - oracle label security (Oracle Vault слегка из другой оперы). с деревьями же даже мсскл научился работать в мсскл2005. ЗЫ. oracle 10.1 снят с супорта ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:16 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabasпотом синтаксис проще (не нужно создавать объекты типа sqlcommand (или как он там уже) и биндить переменные) , а просто писать sql в процедуре и все.Почитайте про SQLJ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:19 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.! уже перетиралось тут не раз, на С писалось у всех, но все постепенно перешли на следующую ступень - на языки 4GL. и только дб2 пропустил революцию и все кропал по старинке, в терминах оракла это завется технологией препроцессоров, говорят в оракле вымершая в 80-х годах прошлого столетия. поняв, что на дедовских технологиях далеко не уедешь ибм выкатил sql/pl где-то лет 10 назад, но в то время как раз была мода 3-tier и подавляющее большинство действительно так его и завет "какой-то PLSQL подобный" ... Угу. Только Oracle так и продолжает рассчитывать на 4GL, а мода то убежала в сторону 3-tier, где нужно уже не это, а нормальные драйвера :) Про что я, собственно, и говорю. Правда, чем 4GL лучше, нежели универсальные managed языки - мне тоже не понятно. Чем plain C - более менее понимаю, да. подавляющее большинство действительно так его и завет "какой-то PLSQL подобный" ... Если я правильно читаю новости, то в 9.5 включили именно поддержку синтаксиса PL-SQL. Т.е. запуск оракловских хранимок без переписывания, прямо как есть. (Последствия такого запуска - за свой счет, как водится). да не умеет дб2 ту же жаву в контексте сервера пускать, только как fenced. уже два раза обсасывали. Там обсуждение так быстро сваливалось в флейм, что я так и не понял, до чего там договорились :) Как я понял, в любом случае разницы между sql/pl и java - нет (для DB2). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:27 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
baracsЛПbaracs И если клиент читает/меняет данные в БД через хранимые процедуры, это: - во многих случаях, сильно ускоряет работу системы в целом, - упрощает обеспечение целостности и непротиворечивости данных, - сильно упрощает сопровождение и развитие системы; - про разделение доступа к объектам бд тут уже много писали... В случае, если у СУБД ровно один клиент (а это именно случай многозвенных приложений) - Ваше высказывание неверно по всем пунктам (по некоторым пунктам оно неверно и в случае многих клиентов) А поподробнее? А чего подробнее то? Про скорость работы переобсосано миллион раз. Использование хранимок может дать как увеличение скорости работы (за счет отсутствия необходимости компиляции плана выполнения), так и уменьшение скорости (за счет того, что этот самый гвздиками приколоченый план не учитывает изменение входных параметров и изменившуюся статистику низлежащих данных). Однозначного выигрыша от использования ХП нет ни для случая одного клиента ака средний слой, ни для многих клиентов ака классическая двузвенка. Обеспечение целостности и непротиворечивости данных - так оно вообще не с помощью ХП делаться должно. Нормализация, констрейнты - да, упрощает обеспечение целостности и непротиворечивости. Обеспечивать целостность хранимками - нет, не упрощает, только усложняет. Причем если обеспечивать целостность SQL-кодом, то нет разницы, где этот код расположен, в хранимке на сервере, или в теле программы в одном единственном клиенте (ака средний слой). Одинаково неудобно. Аргумент "упрощение сопровождения и развития" - для одного клиента неверно. Для многих клиентов - верно (проще сопровождать код на одном сервере, чем на многих клиентов), а для одного - нет (что на одном сервере код сопровождать, что на одном клиенте). Те же самые соображения в ответ на аргумент "разделение доступа к объектам". Что рулить доступом к объектам на одном единственном сервере, что рулить доступом к объектам на одном единственном клиенте - нет разницы. Вернее, разница есть, и она не в пользу хранимок. Рулить доступом к объектам на клиенте я могу любым удобным мне способом. Любым. Удобным. Мне. Чего нельзя сказать про управление доступом к хранимкам и прочим объектам на сервере БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:31 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
FavnПоявился SQL PL в 7-й, кажется, версии, то есть он не намного моложе Java, к примеру. Или молодую Джаву тоже использовать не надо? ;) дык, только вот жава - мейнстрим, а об существовании sql/pl и половина db2 кодеров не подозревает. Favn PL SQL единым для DB2 LUW только вот сам luw не единый, а до v9 и для luw нужно было С компилятор для sql/pl таскать. FavnОна, конечно, лучше "вписана" в СУБД, чем Java, но спасает ли это от переключения контекстов? скорострельность pl/sql далеко не единственная, а главное не главная фича :) FavnКстати, о "лишь базовых конструкциях" - в последнем DB2 9.7 SQL PL в части обработки данных в БД функционально ничем не хуже PL/SQL. А остальное, ИМХО, всяко лучше на Java писать. ну ерунду не говорите, там нет базовых конструкций. нет аналога пакетам, нет реф-курсоров, нет и трети функий из базовых пакетов оракла. посмотрите чего может эмулировать db2 9.7 в плане pl/sql, он же и половины конструкций не переваривает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:33 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.! ну если у мсскл не наблюдается понаблюдайте у оракла - oracle label security (Oracle Vault слегка из другой оперы). с деревьями же даже мсскл научился работать в мсскл2005. Э, с деревьями я и в MS SQL 2000 спокойно справлялся, делов-то. А label security читал, нужной гибкости все равно не получается (по датам). Да и денег, насколько я помню, стоит :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:36 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3 Угу. Только Oracle так и продолжает рассчитывать на 4GL, а мода то убежала в сторону 3-tier, где нужно уже не это, а нормальные драйвера :) Про что я, собственно, и говорю. субд нужна нормальная, а не архаизм с драйверами ;) DPH3Правда, чем 4GL лучше, нежели универсальные managed языки - мне тоже не понятно. Чем plain C - более менее понимаю, да. дорого сопровождать. managed языки оторваны от субд, 4GL же может отслеживать поломаные DDLом процедуры, ну и ресурсы/скорострельность интереснее гораздо. DPH3Как я понял, в любом случае разницы между sql/pl и java - нет (для DB2). есть sql/pl работает как not fenced, т.е. в ядре db2, вне адресного пространства, как и любой пхп например. просто для пхп нет препроцессора, а для жабы выкатили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:49 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
"т.е. в ядре db2, вне адресного пространства" следует читать как т.е. в ядре db2, жаба же работает вне адресного пространства ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:50 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3 А label security читал, нужной гибкости все равно не получается (по датам). Да и денег, насколько я помню, стоит :) с датами то чего проще ? параметризованый вью - дешевого и сердито ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:56 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП Рулить доступом к объектам на клиенте я могу любым удобным мне способом. Любым. Удобным. Мне. Чего нельзя сказать про управление доступом к хранимкам и прочим объектам на сервере БД. А можно более подробно, что в вашем понимании есть "клиент" и что есть "рулить доступом"? Потому как я не понимаю - каким это образом можно "рулить доступом с клиента". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 20:00 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 locky А можно более подробно, что в вашем понимании есть "клиент" В контексте предыдущего обсуждения "клиент БД" = "средний слой многозвенки" Доступ, соответственно, к объектам этого же самого среднего слоя (до объектов БД конечного пользователя никто и не допустит в обход среднего слоя). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 20:07 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПОбеспечение целостности и непротиворечивости данных - так оно вообще не с помощью ХП делаться должно. Нормализация, констрейнты - да, упрощает обеспечение целостности и непротиворечивости. Обеспечивать целостность хранимками - нет, не упрощает, только усложняет. Если Вы про Domain, Entity и прочая, то да, это делается декларативным способом, но существует еще ограничения бизнес-логики, например, клиент не может оформить заказ на условиях предоплаты на сумму более 5 000 руб, если у него еще нет выполненных заказов на условиях предоплаты на общую сумму не менее 25 000 руб. ЛППричем если обеспечивать целостность SQL-кодом, то нет разницы, где этот код расположен , в хранимке на сервере, или в теле программы в одном единственном клиенте (ака средний слой). Есть, и принципиальная. Система, в которой прямой доступ к таблицам закрыт, а вся работа организована через вьюхи и хп является самодостаточно устойчивой (про права админа не будем, ибо против лома нет приема). А в Вашей схеме, если код, обеспечивающий целостность данных, расположен в одном клиенте , то другой клиент , не содержащий такого кода, подключившись к бд может привести ее в неконсистентное состояние. И без разницы, что это за клиент - апп.сервер в трехзвенке или классической приложение в классической двузвенке. ЛПТе же самые соображения в ответ на аргумент "разделение доступа к объектам". Что рулить доступом к объектам на одном единственном сервере, что рулить доступом к объектам на одном единственном клиенте - нет разницы. А почему он у Вас "один единственный"?! Чем это гарантируется, или, наконец, что может помешать подключиться к базе другим клиентом?! ЛПВернее, разница есть, и она не в пользу хранимок. Заблуждаетесь, IMHO. ЛПРулить доступом к объектам на клиенте я могу любым удобным мне способом . Любым. Удобным. Мне. Опять, 25. Но это не значит, что не любимый и не удобный лично Вам способ не существует и дает целый ряд преимуществ. ЛПЧего нельзя сказать про управление доступом к хранимкам и прочим объектам на сервере БД. Безусловно, этого нельзя сказать, если не знаешь, как это делается. ;) Ибо реализация ACL (включая row & cell level security) на стороне реляционной СУБД делается не просто предоставлением (или не предоставление) доступа к тому или иному модулю с кодом в бд, а чуть сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 20:08 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 pkarklin Если Вы про Domain, Entity и прочая, то да, это делается декларативным способом, но существует еще ограничения бизнес-логики, например, клиент не может оформить заказ на условиях предоплаты на сумму более 5 000 руб, если у него еще нет выполненных заказов на условиях предоплаты на общую сумму не менее 25 000 руб. Не спорю. И такие ограничения бизнес-логики можно придумать, что реализовывать их на T-SQL - весьма тоскливое занятие. Одна из причин для "посмотреть в сторону многозвенок". Или какого-нибудь унылого говна с офигенно развитым внедренным в СУБД супер-мега-пл-т-эскюэль Есть, и принципиальная. Система, в которой прямой доступ к таблицам закрыт, а вся работа организована через вьюхи и хп является самодостаточно устойчивой (про права админа не будем, ибо против лома нет приема). А в Вашей схеме, если код, обеспечивающий целостность данных, расположен в одном клиенте , то другой клиент , не содержащий такого кода, подключившись к бд может привести ее в неконсистентное состояние. Товарисч pkarklin, Вы вообще как, внимательно сообщения читаете, прежде чем на них отвечать берётесь? Какой такой другой клиент, если русским по белому и неоднократно сказано, что клиент для БД - один единственный? А почему он у Вас "один единственный"?! По определению. По начальным данным диалога с baracs. Потому что других клиентов пристрелили из ружья. Чем это гарантируется, или, наконец, что может помешать подключиться к базе другим клиентом?! Вам подсказать способы, как не дать другим подключиться, или сами додумаетесь? Думаю, что сами справитесь. Я в Вас верю. Опять, 25. Но это не значит, что не любимый и не удобный лично Вам способ не существует и дает целый ряд преимуществ. То, что существует удобный лично мне способ - вовсе не означает, что не удобный мне способ не существует. Я нигде такого и не говорил. В чем Вы меня пытались убедить - не понял. Неудобный (не самый удобный для меня) способ - разумеется существует. Для данной конкретной СУБД существующий неудобный способ может быть единственным. Для кого-то другого (для каких-то других задач) этот способ может быть вполне хорошим. А мне то до этого какое дело, если этот кому-то для чего-то удобный способ - не подходит мне и для конкретной задачи? Безусловно, этого нельзя сказать, если не знаешь, как это делается. ;) Ибо реализация ACL (включая row & cell level security) на стороне реляционной СУБД делается не просто предоставлением (или не предоставление) доступа к тому или иному модулю с кодом в бд, а чуть сложнее. Это уже детали, к чему именно и какую именно секьюрити надо обеспечивать. В трехзвенке, BTW, эти детали вообще мало волнуют мозг. Чего не скажешь об. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 20:30 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Как ДБА, скажу. Любителей размазывать sql код по приложению - надо стрелять грязным тапком. ------------------------- There’s no silver bullet! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 20:33 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyКак ДБА, скажу. Любителей размазывать sql код по приложению - надо стрелять грязным тапком. Правильно. Любителей размазывать логику по приложени ям (кусок кода в СУБД, кусок кода где-то еще, в WCF-сервисе каком-нибудь) - стрелять двумя грязными тапками, и контрольный выстрел нестиранными трусами. Только не думайте, что приложение перестает быть приложением только от того, что крутится в том же процессе, что и MS SQL Server (к примеру) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 20:46 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП, уточню. Любителей выносить код sql за пределы SP - стрелять мокрыми тряпками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 20:51 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyЛП, уточню. Любителей выносить код sql за пределы SP - стрелять мокрыми тряпками. Типо хп - эт не приложение вовсе, а так, насрано. Понятно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 20:53 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПИ такие ограничения бизнес-логики можно придумать, что реализовывать их на T-SQL - весьма тоскливое занятие. Вы правы, какие только ограничение не придумают бизнес овнеры. И они так легко реализуется реляционными способами с реляционно же хранящимися данными. А то как насмотришься, как некоторые на апп. сервере и джоинить пытаются и прочая, получив плоские наборы с сервера СУБД, дабы реализовать ТАМ ограничения целостности или секьюрность, то волосы дыбом встают. Зачем им, спрашивается, клиент-серверная СУБД?! ЛПОдна из причин для "посмотреть в сторону многозвенок". Чур, меня, чур... ЛПТоварисч pkarklin, Вы вообще как, внимательно сообщения читаете, прежде чем на них отвечать берётесь? Какой такой другой клиент, если русским по белому и неоднократно сказано, что клиент для БД - один единственный? По определению. По начальным данным диалога с baracs. Потому что других клиентов пристрелили из ружья. Не надо меня возить мордой по столу по топику. Это не Вы ли продекларировали: ЛПВ случае, если у СУБД ровно один клиент (а это именно случай многозвенных приложений) - Ваше высказывание неверно по всем пунктам ( по некоторым пунктам оно неверно и в случае многих клиентов ) Будем снова перетирать про быстродействие и удобство сопровождения, раз уж Вы упомянули только про некоторые пункты?! ЛПВам подсказать способы, как не дать другим подключиться, или сами додумаетесь? Думаю, что сами справитесь. Я в Вас верю. Я так же верю, что и Вы найдете способ подключиться в обход "одного клиента". ЛПТо, что существует удобный лично мне способ - вовсе не означает, что не удобный мне способ не существует. Я нигде такого и не говорил. В чем Вы меня пытались убедить - не понял. Вас?! Да упаси Господи Вас в чем то убеждать. Влез в этот тред тока с целью предостеречь неокрепшие умы читающих его от апологетов "логики на клиенте" (фокспро\аксесс форева!!!). ЛПНеудобный (не самый удобный для меня) способ - разумеется существует. Для данной конкретной СУБД существующий неудобный способ может быть единственным. Для кого-то другого (для каких-то других задач) этот способ может быть вполне хорошим. А мне то до этого какое дело, если этот кому-то для чего-то удобный способ - не подходит мне и для конкретной задачи? Простите, кто на ком стоял?! ((с) п. Преображенский) Т.е. что Вам не подходит и для какой, собственно, задачи? ЛПЭто уже детали, к чему именно и какую именно секьюрити надо обеспечивать. В трехзвенке, BTW, эти детали вообще мало волнуют мозг. Чего не скажешь об. Это пять!!! "Детали" идут лесом!!! Трехзвенка все делает без "деталей", т.е. без мозга. Видел я результаты такой безмозговой деятельности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 20:56 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛППравильно. Любителей размазывать логику по приложени ям ( кусок кода в СУБД, кусок кода где-то еще, в WCF-сервисе каком-нибудь ) - стрелять двумя грязными тапками, и контрольный выстрел нестиранными трусами. Гм... Вы так делаете?! Кмк, мы тут перетирали про код на клиенте или в хп, а не и . ЛПТолько не думайте, что приложение перестает быть приложением только от того, что крутится в том же процессе, что и MS SQL Server (к примеру) :) Поддержу Вас в Вашем демогагическом начинании, а программа на ASM - это приложение для процессора, а процессор - приложение для материнской платы и т.д. и т.п. Самим Вам не смешно?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 21:06 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПlockyЛП, уточню. Любителей выносить код sql за пределы SP - стрелять мокрыми тряпками. Типо хп - эт не приложение вовсе, а так, насрано. Понятно :) Нет, это типа мне очень не нравится рыскать по стопиццоттысяч разным шарповским модулям, пытаясь выяснить где какой sql код есть, что он делает, где возможны проблемы, где точки входа и модификации и т.д. В то же время в случае использования только SP я имею проблемы только с dsql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 21:09 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 pkarklin А то как насмотришься, как некоторые на апп. сервере и джоинить пытаются и прочая, получив плоские наборы с сервера СУБД, дабы реализовать ТАМ ограничения целостности или секьюрность, то волосы дыбом встают. Угу. А как посмотришь на курсорные трактора внутре хранимок - что дыбом должно вставать? Оно канешн на каком-нибудь расширении SQL, и аж внутре хранимки лежит, и за это этому унылому говну можно простить его внешний вид :) Не надо меня возить мордой по столу по топику. Надо. Если Вы с первого раза не понимаете, то как еще. Это не Вы ли продекларировали: Я. Какое-то слово непонятно? Будем снова перетирать про быстродействие и удобство сопровождения, раз уж Вы упомянули только про некоторые пункты?! Перетирать идите мух с котлетами в мясорубке. Я ясно высказался, что высказывание barack неверно по всем пунктам в случае одного клиента, и по некоторым - в случае многих клиентов. Яснее - не умею. Пусть кто-нибудь другой попробует объяснить Вам разницу между "один" и "много", и между "все" и "некоторые". Влез в этот тред тока с целью предостеречь неокрепшие умы читающих его от апологетов "логики на клиенте" (фокспро\аксесс форева!!!). Вы дурак, простите? Где Вы увидели фокспро/аксес? Вам что-то приглючилось, и Вы решили предостеречь неокрепшие умы от Ваших собственных глюков? Когда протрезвеете - приходите, может удастся пообщаться. Вы так делаете?! Кмк, мы тут перетирали про код на клиенте или в хп, а не и. Нет. Так делают (собираются делать) некоторые другие участники этого обсуждения. Поддержу Вас в Вашем демогагическом начинании, а программа на ASM - это приложение для процессора, а процессор - приложение для материнской платы и т.д. и т.п. Самим Вам не смешно?! Не, не смешно. За размазывание логики про приложению на АСМе - тоже стрелять тапком. Я серьезен как никогда. Демагогии - ноль. Когда-нибудь поймете. Как протрезвеете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 21:14 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 ЛП. Думаю, что в этом вопросе, Вам следует идти до конца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 21:18 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПНет. Так делают (собираются делать) некоторые другие участники этого обсуждения. . ну ну, по моему кто то никак не поймет, что логику работу с данными размазывать никто не собирается, зачем?, это как раз произойдет если вынести её на среднее звено, а тут окажется что нужен триггер или джоб. А если есть задачи которые к базе отношения не имеют и к клиенту тоже, то где же ей находится как не на другом слое, раз в в базе и на клиенте ей делать нечего и это не повод выносить туда всё остальное, т.к. с базой может работать еще и другой клиент или сервис ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 21:24 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 barrabas это как раз произойдет если вынести её на среднее звено, а тут окажется что нужен триггер или джоб. Ума не приложу, зачем может понадобиться триггер, если логика обработки данных вынесена на средний слой :) Ну да и ладно. А если есть задачи которые к базе отношения не имеют и к клиенту тоже О, это вообще не сюда - что-то ни к чему не относящееся. Ему ни хранимки не помогут, ни отсутствие хранимок не помешает. Программирование фотошопа этажом выше. раз в в базе и на клиенте ей делать нечего и это не повод Это не повод называть это нечто средним слоем. Не называйте это "ни к чему не относящееся" средним слоем - и ни малейших возражений не получите на свои высказывания. Правда невелика будет и ценность этих высказываний в контексте обсуждения "хранимок в трехзвенке" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 21:39 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП2 barrabas это как раз произойдет если вынести её на среднее звено, а тут окажется что нужен триггер или джоб. Ума не приложу, зачем может понадобиться триггер, если логика обработки данных вынесена на средний слой :) Ну да и ладно. А если есть задачи которые к базе отношения не имеют и к клиенту тоже О, это вообще не сюда - что-то ни к чему не относящееся. Ему ни хранимки не помогут, ни отсутствие хранимок не помешает. Программирование фотошопа этажом выше. раз в в базе и на клиенте ей делать нечего и это не повод Это не повод называть это нечто средним слоем. Не называйте это "ни к чему не относящееся" средним слоем - и ни малейших возражений не получите на свои высказывания. Правда невелика будет и ценность этих высказываний в контексте обсуждения "хранимок в трехзвенке" клиентское приложение коннектится к сервису, ни о базе и о чем другом ему знать не нужно, сервис, в свою очередь, откликаясь на запросы клиента, стучится к нескольким базам (ну скажем для сверки данных в разных ИС) и выдает что нужно клиенту, тут же нужно разослать отчеты клиентам, данные получаем с СУБД, а формируются файлы нужного формата на среднем слое - сервисе, каждый занят своим делом, никакой проблемы с размазываем логики, ни какой проблемы для ДБА. Я вижу смысл в трехзвенке если не нужно "светить" базу в инете, при работе с несколькими базами, но просто так чтобы было, типа чтобы ХП не писать, а писать классы в еще одном проекте, не вижу смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 22:01 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyНет, это типа мне очень не нравится рыскать по стопиццоттысяч разным шарповским модулям, пытаясь выяснить где какой sql код есть, что он делает, где возможны проблемы, где точки входа и модификации и т.д. В то же время в случае использования только SP я имею проблемы только с dsqlВ имеете дело только с dsql и "рыскаете по стопиццоттысяч разным шарповским модулям пытаясь выснить где какая процедурка вызывается, зачем и где возможны проблемы..." :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 22:12 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 barrabas клиентское приложение коннектится к сервису, ни о базе и о чем другом ему знать не нужно, сервис, в свою очередь, откликаясь на запросы клиента, стучится к нескольким базам У меня Windows стучится к Windows Server Update Services, и ничего винда не знает про то,что WSUS стучится в MS SQL Server, чего-то оттуда выдирает, отсылает, умирает. На Ваш взгляд это - трехзвенка? Если да, то протоколируем разногласие. Я вижу смысл в трехзвенке если не нужно "светить" базу в инете Чтобы не светить базу в интернете, я вижу смысл в фаерволе. Протоколируем разногласие. при работе с несколькими базами Работать с разными базами под разными СУБД на разных физических серверах - я вижу смысл через linked servers (для ms sql server), или аналогичными способами в других СУБД (ежели это не огнептиц). Смысла городить трехзвенку только для одновременной работы с разными базами - я не вижу. Протоколируем разногласие. но просто так чтобы было, типа чтобы ХП не писать, а писать классы в еще одном проекте, не вижу смысла. Писать всё равно придется, хоть ХП, хоть классы Проект всё равно будет, хоть в Visual Studio, хоть в SQL Server Management Studio. Я предпочитаю программировать там, где мне это делать удобнее. На языке, более подходящем для реализации выбраных паттернов. Кстате, совершеннейший нефакт, что это всегда будет VS. Вы предпочитаете делать ХП лишь бы не писать классы? Протоколируем разногласие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 22:20 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreylockyНет, это типа мне очень не нравится рыскать по стопиццоттысяч разным шарповским модулям, пытаясь выяснить где какой sql код есть, что он делает, где возможны проблемы, где точки входа и модификации и т.д. В то же время в случае использования только SP я имею проблемы только с dsqlВ имеете дело только с dsql и "рыскаете по стопиццоттысяч разным шарповским модулям пытаясь выснить где какая процедурка вызывается, зачем и где возможны проблемы..." :) Ниасилил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 22:21 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyНиасилил.Вы пишете, что если приложение ходит в базу используя sql, то у вас возникают проблемы с поиском точек входа. Объясните мне куда деваются эти проблемы в случае использования SP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 22:28 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreylockyНиасилил.Вы пишете, что если приложение ходит в базу используя sql, то у вас возникают проблемы с поиском точек входа. Объясните мне куда деваются эти проблемы в случае использования SP. Потому что я ВИЖУ все точки входа. простым, банальным до жути запросом, получающим список хранимых процедур. Каким бананом мне получить точки входа в БД, если sql код размазан по шарповскому приложению - я представляю с трудом. каким образом идентифицировать - каким именно кодом производится DM над теми или иным таблицами/view - я представляю с трудом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 22:31 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyПотому что я ВИЖУ все точки входа. простым, банальным до жути запросом, получающим список хранимых процедур. Этот список хранимых процедур как-нибудь помогает: - выяснить где какой sql код есть - что он делает - где возможны проблемы ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 22:37 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky Каким бананом мне получить точки входа в БД, если sql код размазан по шарповскому приложению - я представляю с трудом. каким образом идентифицировать - каким именно кодом производится DM над теми или иным таблицами/view - я представляю с трудом. За шарп не скажу, а для Дельфийского проекта я бы использовал FAR с его Alt-F7. А вот как Вы найдёте то же самое в груде ХП, использующих dsql (т.е. без возможности посмотреть зависимости) - я не представляю даже с трудом. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 22:38 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky Потому что я ВИЖУ все точки входа. простым, банальным до жути запросом, получающим список хранимых процедур. И каким образом этот запрос помогает вам понять кто какие процедуры и зачем вызывает. Вы точно также, как и в случае с SQL не имеете никакого представления о том, каким именно кодом осуществляется вызов этих процедур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 22:42 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Набежали то, набежали :) Отвечу всем по порядку. Имея список процедур я могу 1. Выяснить, где какой код выполняется. Где идет обращение к той или иной таблице/view, процедуре, функции и т.д. Если обращение идёт к таблице/view я знаю характер обращения (i/u/d/s/truncate/something else) 2. я знаю список потенциальных проблем, как-то - неправильный паттернй, неправильные обращения к процедурам етк. 3. я имею возможность посмотреть список зависимостей. определенную проблему представляет DSQL, но его, по счастию, крайне мало, и все места его использования (ну кто бы мог подумать!) я тоже могу посмотреть, имея на руках хранимые процедуры. ------------------------- There’s no silver bullet! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 00:12 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyИмея список процедур я могу 1. Выяснить, где какой код выполняется. Каким это таким волшебным образом??? Вот вам список процедур: storedprocedure1 storedprocedure2 storedprocedure3 Выясните, пожалуйста, где какой код выполняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 00:59 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПlockyИмея список процедур я могу 1. Выяснить, где какой код выполняется. Каким это таким волшебным образом??? Вот вам список процедур: storedprocedure1 storedprocedure2 storedprocedure3 Выясните, пожалуйста, где какой код выполняется. Прошу прощения, а вы не могли бы привести код этих процедур? А то телепат, знаете-ли, в отпуске ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 01:37 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Ах да, видимо, я не слишком понятно выразился :) Не только списочный состав процедур, но и сами процедуры, ессно. Впрочем, как ДБА, если я получаю список процедур из БД при помощи запроса - я аналогичным образом получаю и тело процедур. ------------------------- There’s no silver bullet! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 01:38 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 locky Прошу прощения, а вы не могли бы привести код этих процедур? А то телепат, знаете-ли, в отпуске Мог бы, конечно, хоть Вы и сказали, что списка имеющихся процедур Вам достаточно. Первая - Select * From dbo.TableValuedFunction1() Вторая зашифрована Третья в дотнетовской сборке лежит, извиняй борода, декомпилятора нэма. Ах да, видимо, я не слишком понятно выразился :) Почему же. Предельно понятно. если я получаю список процедур из БД при помощи запроса - я аналогичным образом получаю и тело процедур. Иехх... а я то думал, что Вы - волшебник. Умеете из имени процедуры напрямую в мозг её код читать и сразу понимать, с нулевыми усилиями. Все стопиццоттысяч сиквеловских простыней сразу. Ну ладно. По имеющимся телам стопиццоттысяч процедур Вы легко сумеете понять, что там за SQL код, что он делает, и где проблемы (особенно - где проблемы, это моментом выясняется). Я тебе конечно верю, разве могут быть сомненья, я и сам всё это делал, это наш с тобой секрет (с) Непонятно только, что мешает такую же операцию с шарповыми модулями проделать. Лежат себе DataAccessLayerComponents в отдельном проекте, называющемся DataAccessLayerComponents.csproj, наследуют себе от какого-нибудь базового класса, иерархия смотрится без каких-либо запросов, в обычном ObjectBrowser, SQL код смотрится в мало отличающихся CRUD методах, где всё это добро потом используется - видно с одного клика Find usage. Если стопиццоттысяц хранимых процедур не представляет проблему, то и здесь проблемы быть не должно. Ну, это конечно же при условии, что сумели из грязного тапка застрелить внутреннего вредителя - до того, как он успел размазать хорошо структурированный DataAccess-код ровным слоем по всему солюшену. Если из грязного тапка промахнулись - бяда, бяда, огорчение. Не промахнитесь в следующий раз, когда внутренний вредитель попробует до сиквеловских процедур добраться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 02:13 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПНу ладно. По имеющимся телам стопиццоттысяч процедур Вы легко сумеете понять, что там за SQL код, что он делает, и где проблемы (особенно - где проблемы, это моментом выясняется). Я тебе конечно верю, разве могут быть сомненья, я и сам всё это делал, это наш с тобой секрет (с) Опытные ДБА используют спецтулзы, для поиска потенциальных проблем. ЛП Непонятно только, что мешает такую же операцию с шарповыми модулями проделать. Лежат себе DataAccessLayerComponents в отдельном проекте, называющемся DataAccessLayerComponents.csproj, наследуют себе от какого-нибудь базового класса, иерархия смотрится без каких-либо запросов, в обычном ObjectBrowser, SQL код смотрится в мало отличающихся CRUD методах, где всё это добро потом используется - видно с одного клика Find usage. оккей. Значит, лежит у меня стопицоттыщ компомнентов, в каждом из которых прописано 4*стопицоттыщ строк для выбора/модификации данных. И вот, значит, приходит неопытный ДБА (вроде меня) к опытному шарперу (вроде вас) и вопрошает: уважаемый, в каком, извините, месте, у вас происходит удаление из таблицы имярек. И опытный, значит, шарпер, берёт в руки... А что он, кстати, берёт то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 02:24 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП Ну, это конечно же при условии, что сумели из грязного тапка застрелить внутреннего вредителя - до того, как он успел размазать хорошо структурированный DataAccess-код ровным слоем по всему солюшену. Если из грязного тапка промахнулись - бяда, бяда, огорчение. Не промахнитесь в следующий раз, когда внутренний вредитель попробует до сиквеловских процедур добраться. Харроший вапрос, кстате. Впрочем, я его уже озвучил выше. Уважаемый, какой магической магией вы мне покажете, что "удаление из таблицы имярек осуществляется только таким-то компонентом, с помощью запроса вот такого вот вида"? и что это, с позволения сказать, удаление, не прописано у вас еще в стотыщпицот одном запросе, равномерно, как манная каша, размазанном по всем проектам сразу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 02:26 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 locky уважаемый, в каком, извините, месте, у вас происходит удаление из таблицы имярек. И опытный, значит, шарпер, берёт в руки... А что он, кстати, берёт то? Клавиатуру берет. И Ctrl-F нажимает в проекте. Для поиска строки [Table(Name="dbo.имярек")] Хотя во многих случаях может сразу открыть public class Имярек { ... } Уважаемый, какой магической магией вы мне покажете, что "удаление из таблицы имярек осуществляется только таким-то компонентом, с помощью запроса вот такого вот вида"? и что это, с позволения сказать, удаление, не прописано у вас еще в стотыщпицот одном запросе, равномерно, как манная каша, размазанном по всем проектам сразу? Классическая магия называется "грязный тапок". Если внутренний враг не был побежден - я в этот проект лезть не хочу. Равно как и в равномерно по всему серверу размазанные стопиццоттысяч сиквеловских простыней, в которых внутренний вредитель собирает sql побуквенно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 02:52 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП2 locky уважаемый, в каком, извините, месте, у вас происходит удаление из таблицы имярек. И опытный, значит, шарпер, берёт в руки... А что он, кстати, берёт то? Клавиатуру берет. И Ctrl-F нажимает в проекте. Для поиска строки [Table(Name="dbo.имярек")] Хотя во многих случаях может сразу открыть public class Имярек { ... } А, ну да, ну да... Да здравствует поиск, бессмысленный и беспощадный :) Как насчет удаления из зависимой таблицы? На там master/slave? Когда удаление зависимой (она же - искомая) происходит при удалении из мастера? А хотя, погоди... у нас же "бизьнесь-обжекты", труъ джедай шарпей при удалении мастера закрутит цикл по слейву и поштучно грохнет все ныне ненужные записи.. кстати, труъ-джедай. Я так понимаю - ваша метода (особенно в части "откроет паблик класс имярек" ) - страдает жюткой недостоверностью? авторРавно как и в равномерно по всему серверу размазанные стопиццоттысяч сиквеловских простыней, в которых внутренний вредитель собирает sql побуквенно В том то и беда, мил друг, что с точки зрения ДБА (человека, который мала-мала отвечает за всё, что вы пытаетесь делать с сервером) этот ваш "код унутре класса" - есть сборище манной каши, размазанной по сотням шарпеевских файлов (кода, ресурсов и прочей фигне) и ну никак не поддерживаемо и не анализируемо. Все ваши приложения суть самый чижолый случай - dsql. И если на стороне сервера эти случаи наперечет - и уже доставляют неудобства, то на стороне клиента - суть весь проект сплошной головняк и потенциальный глюк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 03:17 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.!дык, только вот жава - мейнстрим, а об существовании sql/pl и половина db2 кодеров не подозревает.Т.е. половина db2 кодеров за последние 10 лет ни разу в доки не заглядывала? Буду очень признателен за ссылку на подобное соц. исследование :) Yo.! только вот сам luw не единый, а до v9 и для luw нужно было С компилятор для sql/pl таскать.Неправда - "родной" (без компиляторов) SQL PL появился в 8-ке, лет так больше 10 назад. А inline SQL PL (его подмножество), насколько я помню, был и в 7-ке. Yo.!скорострельность pl/sql далеко не единственная, а главное не главная фича :)И в чем же эта сакральная мощь? В том, что в язык СУБД напихали кучу функционала, к СУБД никакого отношения не имеющего? Сомнительное преимущество - как уже говорилось, для "внешних" задач та же Java несравнимо мощнее и удобнее. Favnну ерунду не говорите, там нет базовых конструкций. нет аналога пакетам, нет реф-курсоров, нет и трети функий из базовых пакетов оракла. посмотрите чего может эмулировать db2 9.7 в плане pl/sql, он же и половины конструкций не переваривает.То есть главная проблема SQL PL - в том, что он не PL/SQL :) Поясню - то, что в нем нет точно такого же функционала, не значит, что нет аналогичного . Про "базовые конструкции" не понял, но, на всякий случай, create or replace уже есть, ассоциативные массивы - тоже. И даже аналог SQL*Plus сделали, непонятно зачем. :) Вот аналог пакетам - модули. Ничего, что не так называются? ;) Просто "pakage" в DB2 значит совсем другое. Реф-курсоров нет. Но вернуть несколько открытых курсоров из SP можно запросто - CURSOR WITH RETURN, см. пример в самом низу . Увы - опять другое название, вот невезение. ;) Что до базовых пакетов оракла - их ввели для совместимости, в DB2 эти задачи решаются иначе. И не стоит оценивать SQL PL по способности DB2 эмулировать PL/SQL - родные возможности богаче. А PL/SQL в DB2 вообще, насколько я читал, был лицензирован у EnterpriseDB, так что претензии к его недостаткам - к постгрессу, пожалуйста, нам оно без надобности :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 10:25 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.! есть sql/pl работает как not fenced, т.е. в ядре db2, вне адресного пространства, как и любой пхп например. просто для пхп нет препроцессора, а для жабы выкатили. Народ я вот не понял обсуждения экономии 1 копейки при потере 10 рублей, вы тут сейчас во что уперлись с фенседом ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 10:53 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyАх да, видимо, я не слишком понятно выразился :) Не только списочный состав процедур, но и сами процедуры, ессно. Впрочем, как ДБА, если я получаю список процедур из БД при помощи запроса - я аналогичным образом получаю и тело процедур. ------------------------- There’s no silver bullet! Не в ту степь, IMHO, спор пошел. В первую очередь, процедуры необходимы для реализации понятного и документированного API к сущностям БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 10:56 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
SQLMantisНе в ту степь, IMHO, спор пошел. В первую очередь, процедуры необходимы для реализации понятного и документированного API к сущностям БД. в первую очередь процедуры нужны для реализации средствами СУБД алгоритмов, которые реализуются посредством процедурных языков, а не DML. Документировать API к сущностям БД конечно же нужно, но при чем здесь первая очередь? Есть вагон и маленькая тележка средств для создания такой документации, любого завхоза удовлетворит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 11:27 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmSQLMantisНе в ту степь, IMHO, спор пошел. В первую очередь, процедуры необходимы для реализации понятного и документированного API к сущностям БД. в первую очередь процедуры нужны для реализации средствами СУБД алгоритмов, которые реализуются посредством процедурных языков, а не DML. Документировать API к сущностям БД конечно же нужно, но при чем здесь первая очередь? Есть вагон и маленькая тележка средств для создания такой документации, любого завхоза удовлетворит. Особенно вторая часть Вам удалась :) Но в общем понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 11:46 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
FavnНеправда - "родной" (без компиляторов) SQL PL появился в 8-ке, лет так больше 10 назад. А inline SQL PL (его подмножество), насколько я помню, был и в 7-ке. правда, правда. Developers who program logic in SQL/PL will be delighted to find out that they no longer require a native C compiler on their distributed workstations to develop their code. DB2 V8.2 gives you the option to run SQL/PL as byte code in the engine. 8.2 это еще и 5 лет не прошло. Favn И в чем же эта сакральная мощь? В том, что в язык СУБД напихали кучу функционала, к СУБД никакого отношения не имеющего? Сомнительное преимущество - как уже говорилось, для "внешних" задач та же Java несравнимо мощнее и удобнее. в отличае от db2 в оракл напихали полноценный язык, а не пару конструкций покрывающих 50% потребностей. Favn не значит, что нет аналогичного . Про "базовые конструкции" не понял, но, на всякий случай, create or replace уже есть, ассоциативные массивы - тоже. И даже аналог SQL*Plus сделали, непонятно зачем. :) Вот аналог пакетам - модули. Просто "pakage" в DB2 значит совсем другое. афигеть, точно похоже на пакеты. лет через 10 бимерцы вспомнили, что не хватает базовой конструкции и все же добавили. глядишь через лет 5 весь функционал присутствующий в pl/sql конца 90х доделают. FavnРеф-курсоров нет. Но вернуть несколько открытых курсоров из SP можно запросто - CURSOR WITH RETURN, см. пример в самом низу . Увы - опять другое название, вот невезение. ;) ну за последний год sql pl прямо рывок совершил, обязательно погляжу что там в 9.7 добавили. вернуть пару рекордсетов это конечно огромное достижение, но рефкурсор это все же чуток больше ... Favn А PL/SQL в DB2 вообще, насколько я читал, был лицензирован у EnterpriseDB, так что претензии к его недостаткам - к постгрессу, пожалуйста, нам оно без надобности :) да мне собственно тоже не к чему, но я давно говорил - даешь pl/sql как стандарт индустрии. в правильном направлении движутся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 12:45 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
MGY Народ я вот не понял обсуждения экономии 1 копейки при потере 10 рублей, вы тут сейчас во что уперлись с фенседом ? подозреваю экономия шибко больше копейки, этот препроцессор - просто syntax shugar. т.е. db2 с жабой работает как и с любой другой клиентской прогой, просто автоматом подставляя фетчи, чтоб писанины было поменьше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 12:56 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.!подозреваю экономия шибко больше копейки, этот препроцессор - просто syntax shugar. т.е. db2 с жабой работает как и с любой другой клиентской прогой, просто автоматом подставляя фетчи, чтоб писанины было поменьше.Для JDBC - да, для SQLJ - вовсе нет. SQLJ является просто сахарком в Оракл, а в DB2 это иной механизм работы, полноценный embedded SQL. При прекомпиляции в БД создается pakage (в терминах DB2), содержащий запросы прекомпилированного модуля, из самого Java-приложения тексты запросов изымаются. Это позволяет исключить injection, давать права на выполнение модуля без прав доступа к БД, отслеживать связь структуры БД с запросами в разных версиях модуля, оптимизировать планы не в момент выполнения запросов, а когда укажут (в момент выполнения тоже можно), исключить несколько этапов компиляции SQL в момент его выполнения. И фетчи, если их не было, ниоткуда не появляются. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 13:37 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.!правда, правда. 8.2 это еще и 5 лет не прошло.Как раз 5 с 2004-го и прошло. Насчет 10 лет - извиняюсь за неточность, я пересел с 7 сразу на 9 . Yo.!в отличае от db2 в оракл напихали полноценный язык, а не пару конструкций покрывающих 50% потребностей.Ну, необходимость в составе СУБД универсального языка с устаревшим синтаксисом сомнительна, а вот цена за это в виде выполнения на отдельной от SQL-процессора VM (в отличии от SQL PL) - несомненна. Причем в части обработки данных мне трудно придумать потребности, которые SQL PL не перекрывает, а остальное - внешние задачи для других языков, помощнее. Favnафигеть, точно похоже на пакеты. лет через 10 бимерцы вспомнили, что не хватает базовой конструкции и все же добавили. глядишь через лет 5 весь функционал присутствующий в pl/sql конца 90х доделают.Надеюсь, что нет - он ИМХО явно избыточен. Favnну за последний год sql pl прямо рывок совершил, обязательно погляжу что там в 9.7 добавили. вернуть пару рекордсетов это конечно огромное достижение, но рефкурсор это все же чуток больше ...Это не за последний год, это в 9-ке изначально было, и кроме курсоров можно вернуть таблицу (из UDF) или массивы. А посмотреть что добавили в 9.7 можно тут , там много чего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 14:10 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПА почему он у Вас "один единственный"?! По определению. По начальным данным диалога с baracs. Потому что других клиентов пристрелили из ружья. Что-то не припомню... Где такое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 14:21 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.! подозреваю экономия шибко больше копейки, этот препроцессор - просто syntax shugar. т.е. db2 с жабой работает как и с любой другой клиентской прогой, просто автоматом подставляя фетчи, Ничего не понял причем тут фенсед и препроцессор, и подстановка фетчей ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 15:32 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyОтвечу всем по порядку. Раз уж взялись отвечать всем, то и мне тоже ответьте. Повторю вопрос: И каким образом запрос помогает вам понять кто какие процедуры и зачем вызывает. А так как в обсуждении уже конкретный пример пошел: lockyИ вот, значит, приходит неопытный ДБА (вроде меня) к опытному шарперу (вроде вас) и вопрошает: уважаемый, в каком, извините, месте, у вас происходит удаление из таблицы имярек. То и я вам конкретную ситуацию обрисую. Вы этот самый delete в процедуру запрятали (кстати заодоно и расскажите, как будет выглядеть процедура дабы предоставить возможности аналогичные delete) и тут приходит к вам ДБА и вопрошает: в каком месте процедура-то вызывается... И что вы ответите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 21:53 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
MGYНичего не понял причем тут фенсед и препроцессор, и подстановка фетчей ? при том, что pl/sql имеет общее с субд адресное пространство, а sqlj в db2 это внешний и чуждый для субд процесс который лезет в базу через тот же JDBC. просто писанины чуть меньше. к стате кто там спрашивал чего, это код на жабе избыточен - посмотрите, там как раз показательные примеры. и, Favn, а бэкапить sqlj и сторед процедуры нужно отдельно ручками ? FavnНу, необходимость в составе СУБД универсального языка с устаревшим синтаксисом сомнительна ну не знаю, по мне если уж реализовывать логику (не важно где) - то нужен полноценный язык, а не огрызок. дальнейший уязвленный плач уж оставлю на вашей совести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 00:12 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 locky А, ну да, ну да... Да здравствует поиск, бессмысленный и беспощадный :) Ну что ж поделать, без поиска только волшебники справляются - которые по имени процедуры могут определить, где проблема в sql-коде. Как насчет удаления из зависимой таблицы? Точно так же. труъ джедай шарпей при удалении мастера закрутит цикл по слейву и поштучно грохнет все ныне ненужные записи.. Да хоть оптом, хоть в розницу. Можно в цикле по одной, можно за один раз несколько. А что Вы хотите предложить? Уж неужто каскадное удаление? Может Вы еще и в защиту каскадного обновления что-нить скажете? Я так понимаю - ваша метода (особенно в части "откроет паблик класс имярек" ) - страдает жюткой недостоверностью? Жуткой недостоверностью чего? И почему страдает (может наслаждается, кто ж её знает). В том то и беда, мил друг, что с точки зрения ДБА (человека, который мала-мала отвечает за всё, что вы пытаетесь делать с сервером) этот ваш "код унутре класса" - есть сборище манной каши, размазанной по сотням шарпеевских файлов (кода, ресурсов и прочей фигне) и ну никак не поддерживаемо и не анализируемо. В том то и радость, мил друг, что для нормального девелопера не составляет особого труда "открыть класс и посмотреть содержимое метода". Хоть для DB-девелопера, хоть для VB-девелопера. Для дба в этом какая-то проблема? Да ну и ладно. Пусть датабейзадминистратор - сидит и администрирует датабазу. У него своя работа, нефиг по чужим проектам шариться. Не хватало еще, чтоб всякие там админы учили меня программировать. Этак и заправщики картриджей к ним подтянутся, будут рассказывать, как мне отчеты рисовать, чтоб тонера поменьше израсходовалось. З.Ы. Ваше "человек, который мала-мала отвечает за всё" - дюже порадовало :). Лёню Федорова наверное любите слушать? Йааааа заведующий всеем, и всиооо из-за меняааа.... ------------------------------------------------ 2 iscrafm в первую очередь процедуры нужны для реализации средствами СУБД алгоритмов, которые реализуются посредством процедурных языков, а не DML. Истинная правда. Тем удивительнее смотреть на фанатов T-SQL, в котором эти самые процедурные расширения застыли где-то на уровне бейсика для синклера, и ни в какую не хотят развиваться. Пятнадцать лет кряхтели-пыхтели-сопели-пердели - выродили - обкусок эксепшн хэндлинга. Теперь не надо после каждого запроса проверять @@error, бурные продолжительные апплодисменты. Ладно ораклоиды, у них язык побогаче, логика хорошо и удобно пишется и без трехзвенок. А поклонники MS SQL Server куда лезут с недоделаным T-SQL? С рождения хромые инвалиды, кое-как научившиеся на костылях ходить - и теперь эти инвалиды рассказывают всем, что на костылях ходить хорошо и правильно, а еще можно на костылях бегать и в футбол играть (а кто ходит не на костылях, тому надо сломать ноги). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 05:36 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП Ладно ораклоиды, у них язык побогаче, логика хорошо и удобно пишется и без трехзвенок. трехзвенки только не для этого создаются. Это распространили дезу (неправильный перевод?) по интернету про трехзвенки и пошла полная путаница между tier и layer. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 12:35 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmЛП Ладно ораклоиды, у них язык побогаче, логика хорошо и удобно пишется и без трехзвенок. трехзвенки только не для этого создаются. Это распространили дезу (неправильный перевод?) по интернету про трехзвенки и пошла полная путаница между tier и layer. Ну почему путаница :) Тут как раз и обсуждается, на каком tier размещать application layer - в слое DB (реализуя через хранимки) или более отделено (например, на отдельном сервере). Другое дело, что как-то принято любую реализацию логики средствами сервера БД обзывать "двузвенкой". Хотя хранимые процедуры - это вполне себе application layer (вернее, с их помощью его можно реализовать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 14:47 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 iscrafm трехзвенки только не для этого создаются. Простите - "только не для этого" или "не только для этого"? Это распространили дезу (неправильный перевод?) по интернету про трехзвенки и пошла полная путаница между tier и layer. Есть такое. Наличие присутствия путаницы. По layer'ам надо делить приложение независимо от того, на каком tier'е находится реализация каждого конкретного layer'а. Я в общем-то это и имел в виду, когда писал про недопустимость размазывания логики по приложению, даже если это одно приложение внутри MS SQL Server'а (к примеру). Мух от котлет надо отделять, уж хотя бы мысленно. Если решили, что мухи должны храниться в той же коробочке, что и котлеты, то хотя бы в фарш их не надо замешивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 19:16 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПДля дба в этом какая-то проблема? Да ну и ладно. Пусть датабейзадминистратор - сидит и администрирует датабазу. У него своя работа, нефиг по чужим проектам шариться. Не хватало еще, чтоб всякие там админы учили меня программировать. Этак и заправщики картриджей к ним Не хватало еще чтобы всякие веб- и прочие девелоперы шарились у меня в базе и творили "шопопало". И уж тем более - не хватало чтобы они учили меня, какие способы доступа к данным являются кошерными, а какие - нет. Если человек не понимает, каким образом при формальном анализе t-sql кода строятся зависимости, выявляются точки модификации, определяются потенциально проблемные места и паттерны - такой человек должен немедленно "прикинутся ветошью и не отсвечивать". например, сидеть и ваять очередную нетленку в виде "супер оптимизированного бабл-сорта". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 19:46 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП2 locky А, ну да, ну да... Да здравствует поиск, бессмысленный и беспощадный :) Ну что ж поделать, без поиска только волшебники справляются - которые по имени процедуры могут определить, где проблема в sql-коде. :) Это шарпеи используют "поиск таблиц". дба используют тулзы, которые показывают граф зависимости объектов (ну, на крайний случай - дерево). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 19:47 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП А что Вы хотите предложить? Уж неужто каскадное удаление? Может Вы еще и в защиту каскадного обновления что-нить скажете? У вас какие-то религиозные предубеждения против такого метода решения? Хотите об этом поговорить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 19:48 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП Жуткой недостоверностью чего? Жуткой недостоверностью информации. Ибо совершенно не факт, что таблица Table1 модифицируется только в класс CTable1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 19:49 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП2 iscrafm трехзвенки только не для этого создаются. Простите - "только не для этого" или "не только для этого"? не только для этого или вообще не для этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 21:06 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky Не хватало еще чтобы всякие веб- и прочие девелоперы шарились у меня в базе и творили "шопопало". И уж тем более - не хватало чтобы они учили меня, какие способы доступа к данным являются кошерными, а какие - нет. как говориться, комментарии излишни. Его величество завхозТвердость характера- главнейшее из качеств, какие должны быть присущи Завхозу. Главнейшее, но не единственное. Потому что Завхоз должен еще иметь память профессионального разведчика. Попробуйте запомнить, в чьей байдарке, в чьем рюкзаке и в каком количестве хранятся продукты пятьсот четырех наименований! Завхоз должен обладать неисчерпаемым запасом обаяния, красноречия и оптимизма. Первые два качества необходимы для того, чтобы уговорить продавщицу, разбуженную в половине двенадцатого ночи (хотя в село с магазином предполагали добраться еще засветло...), продать хлеб и два килограмма макарон. Оптимизм же Завхозу необходим для того, чтобы окончательно не потерять веру в человечество. Потому что легко, очень легко решить, что homo sapiens если чем и отличается от остальных приматов, то лишь во много раз более неуемным аппетитом. Увы, подобных гибридов-завхозов не бывает. Природа сотворила лишь два полярно различающихся типа. Один из них рубаха-парень, балагур и весельчак. Первые шесть дней похода вы от него без ума. Кок смотрит на балагура влюбленными глазами, ибо столь широких и безотказных возможностей для проявления своего незаурядного мастерства у него еще никогда не было. Прочие участники похода одаривают Завхоза бурной любовью, потому что их кормят так, как не смогла бы этого сделать и теща, к которой вы впервые приехали погостить с молодой супругой. К исходу первой недели выясняется, что до конца похода остается девятнадцать дней, два килограмма ржаных сухарей и три пучка сухой петрушки. Второй тип Завхоза - это сквалыга. Перед началом маршрута он вынимает заранее припасенный мешок и складывает в него все продукты. Отныне вся деятельность и все помыслы Завхоза-сквалыги поглощены лишь одной страстью: довезти мешок до конца похода в полной неприкосновенности. Однако сохранить мешок в абсолютной не- прикосновенности ему не удается. Все же три раза в день, перед едой, мешок приходится развязывать. При этом на физиономии Завхоза отражаются такие нечеловеческие муки, что у сентиментальной части коллектива на глазах вы- ступают слезы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 21:18 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlocky Не хватало еще чтобы всякие веб- и прочие девелоперы шарились у меня в базе и творили "шопопало". И уж тем более - не хватало чтобы они учили меня, какие способы доступа к данным являются кошерными, а какие - нет. как говориться, комментарии излишни. Я прошу прощения, вы, видимо, шарпей? И вас, видимо, не удивляют посылы типа "еще не хватало чтобы всякие там учили меня гнать код на шарпе!". А вы не можете себе помыслить, что ДБА - значительно лучше вас разбирается в БД? Что именно он знает что и как нужно делать? И что уж точно совершенно не ваше дело - указывать - каким образом осуществлять доступ к данным? Ваше дело - лепить GUI, клепать странички на html, и заниматься прочей "весьма полезной деятельностью". И, разумеется! Почтительно принимать рекомендации ДБА, брать под козырёк и выполнять в точности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 21:23 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky Я прошу прощения, вы, видимо, шарпей? прощаю. Хотя, у меня в профиле открыто достаточно информации, чтобы понять - не "шарпей". locky А вы не можете себе помыслить, что ДБА - значительно лучше вас разбирается в БД? Что именно он знает что и как нужно делать? И что уж точно совершенно не ваше дело - указывать - каким образом осуществлять доступ к данным? Ваше дело - лепить GUI, клепать странички на html, и заниматься прочей "весьма полезной деятельностью". И, разумеется! Почтительно принимать рекомендации ДБА, брать под козырёк и выполнять в точности. ответ настоящего прапорщика! А то полковники распоясались совсем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 21:30 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
имхо, возникла некоторая путаница аббревиатурах. DBA - Data Base Administrator или Data Base Architector ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 21:39 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmимхо, возникла некоторая путаница аббревиатурах. DBA - Data Base Administrator или Data Base Architector ? Да какой уж там архитектор. Выше берите. ЗОДЧИЙ!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 21:50 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmответ настоящего прапорщика! А то полковники распоясались совсем. Это кодеры то на шарпе - "полковники"? :) Спасибо, повеселили меня под вечер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 21:52 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Собственно, что я к шарпу то привязался... "Это кодеры то - полковники?" (С) мастеровые. Это как максимум. ------------------------- There’s no silver bullet! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 21:53 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky, кодер = мастеровой, dba = завхоз. все правильно. Мастеровой приходит к завхозу за инструментом. Завхоз - охраняет инструмент и следит за порядком в каптерке. Каптерке, построенной разработчиком, как бы вас не вело от этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:00 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
на самом деле все вышеперечисленные работают в связке. И здесь важно, чтобы связку не перекашивало, как в высказываниях выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:06 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlocky, кодер = мастеровой, dba = завхоз. все правильно. Мастеровой приходит к завхозу за инструментом. Завхоз - охраняет инструмент и следит за порядком в каптерке. Каптерке, построенной разработчиком, как бы вас не вело от этого. проблема в том, что требовалось построить не "каптёрку", а нормальное, полноценное, 30-ти этажное здание. Но - увы и ах - у "разработчиков" кроме каптёрки ничего не получается. разработчики лепят GUI? Да ради бога, никто не в претензии. Разработчик на шарпе делает умный вид и заявляет, что он де знает про СУБД больше чем ДБА? Пинком под зад, дабы знал своё место и впредь не высовывался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:11 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmна самом деле все вышеперечисленные работают в связке. И здесь важно, чтобы связку не перекашивало, как в высказываниях выше. Разумеется, в связке, а как иначе? Шарпею - шарпеево, ДБА - дибиэево. Я ведь не учу шарпеев - как нужно конкатенировать строки? так почему первый-встречный-горе-кодер, с грехом пополам умеющий написать простой запрос делает вид, мол "я тут главный"? зы хотя вот, что характерно, после первого же тыка носом - девелоперы становятся куда более покладисты :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:13 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky, вы о ком? Или сам с собой? интересно, что же dba администрируют, если у разработчиков ничего не получается ? Логика просто отсутствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:13 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlocky, вы о ком? Или сам с собой? интересно, что же dba администрируют, если у разработчиков ничего не получается ? Логика просто отсутствует. А ДБА приходится выкручиватся - и делать так, дабы "чудо-код", наваяный девелоперами - всё-таки работал. И чтобы в девелоперской "каптёрке" помещался весь спектр товаров и услуг, который, по хорошему, должен был помещаться в здании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:14 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky, вы о чем вообще? Помогите логику найти... темно... ДБА делает код рабочим, а не разработчик? Жесть конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:17 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlocky, вы о чем вообще? Помогите логику найти... темно... ДБА делает код рабочим, а не разработчик? Жесть конечно. Это просто вы, батенька, слишком узко понимаете термин "ДБА". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:19 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlocky, вы о чем вообще? Помогите логику найти... темно... ДБА делает код рабочим, а не разработчик? Жесть конечно. А вообще - да, зачастую именно ДБА. Потому как средневзвешенный разработчик способен просто дать код, который (даже!) проходит тесты на тестовом стенде. но который, увы, весьма сомнителен в эксплуатации. И несть числа таким примерам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:20 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
а средневзвешенный ДБА может наконец объяснить о ком здесь речь идет? Просмотрел ради интеререса профили участников дискуссии. Приверженцев шарпа или работников интерфейсной отрасли не обнаружил. p.s. разработчики бывают разные. Одни дают архитектуру, другие код. Вы похоже несколько не в теме о том, как системы строятся, что в общем-то простительно. Или умышленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:28 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafmlocky, вы о чем вообще? Помогите логику найти... темно... ДБА делает код рабочим, а не разработчик? Жесть конечно. Это просто вы, батенька, слишком узко понимаете термин "ДБА". я его понимаю в его прямой трактовке. Поэтому и спросил чуть выше...A, в абрревиатуре, что по вашему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:30 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmа средневзвешенный ДБА может наконец объяснить о ком здесь речь идет? Просмотрел ради интеререса профили участников дискуссии. Приверженцев шарпа или работников интерфейсной отрасли не обнаружил. p.s. разработчики бывают разные. Одни дают архитектуру, другие код. Вы похоже несколько не в теме о том, как системы строятся, что в общем-то простительно. Или умышленно. Да, вы совершенно правы. Я абсолютно не в курсе, как системы строятся. Точнее - я как бы в курсе, как строятся "сферические кони в вакууме". И даже немного в курсе - к чему это обычно приводит. А так - так нет, не в курсе, разумеется :) Я, правда, знаю, что "в правильных системах" запросы к БД размазаны по коду приложения и эти самые запросы вроде как бы даже написаны разработчиками этого самого приложения (без участия ДБА пардон, "завхоза"). Неужели я ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:45 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlockyiscrafmlocky, вы о чем вообще? Помогите логику найти... темно... ДБА делает код рабочим, а не разработчик? Жесть конечно. Это просто вы, батенька, слишком узко понимаете термин "ДБА". я его понимаю в его прямой трактовке. Поэтому и спросил чуть выше...A, в абрревиатуре, что по вашему? Вашу "прямую трактовку" ("завхоз") я уже читал. К сожалению, эта трактовка "не в полной мере описывает весь спектр товаров и услуг" Хотя приличный ДБА и это тоже может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:47 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky Я, правда, знаю, что "в правильных системах" запросы к БД размазаны по коду приложения и эти самые запросы вроде как бы даже написаны разработчиками этого самого приложения (без участия ДБА пардон, "завхоза"). Неужели я ошибаюсь? я немного не понимаю, что означает "размазаны" по коду приложения. В "правильных системах" взаимодействие с БД обычно локализовано. Без участия ДБА общение в БД просто нереально, хотя бы потому, что именно ДБА раздает полномочия для этого. Я же говорю, все в связке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:54 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyВашу "прямую трактовку" ("завхоз") я уже читал. это трактовка модели поведения, но никак не термина. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:56 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmя немного не понимаю, что означает "размазаны" по коду приложения. В "правильных системах" взаимодействие с БД обычно локализовано. Без участия ДБА общение в БД просто нереально, хотя бы потому, что именно ДБА раздает полномочия для этого. Я же говорю, все в связке. Да-да-да, подошли к самому главному. "ДБА даёт доступ" (С) Так сказать, из завхоза - в вахтёры, пущать/не пущать. И вся эта эволюция - в течение не более одного вечера произошла. Занятно. Куда мы через полчаса придём? "ДБА - почетный выключатель света в храме программирования"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:56 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlockyВашу "прямую трактовку" ("завхоз") я уже читал. это трактовка модели поведения, но никак не термина. Да? Занятно. А какую "трактовку поведения" можно дать девелоперу, претендующему на "знание БД"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 22:59 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyДа-да-да, подошли к самому главному. "ДБА даёт доступ" (С) Так сказать, из завхоза - в вахтёры, пущать/не пущать. это вахтеры думают что они управляют тем, кого пущать, а кого нет. На самом деле они открывают шлагбаум перед теми, кто у них в списке записан в колонке "пущать". Вот только список этот составляют совсем другие персонажи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 23:01 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmВот только список этот составляют совсем другие персонажи. да-да-да! Я знаю. Это - девелоперы! Которые приходят так и приказным тоном заявляют: "Нашей супернетленке необходимы для работы права уровня sysadmin и полный доступ ко всем всевозможным ресурсам". После чего (изрядно пополнив свой словарный запас жаргонизмов) с задумчивым видом удаляются вдаль, в сторону заходящего солнца, по дороге, вымощенной желтым кирпичом, униженные и оскорблённые, но всё еще не сломленные и бодрые духом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 23:05 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyА какую "трактовку поведения" можно дать девелоперу, претендующему на "знание БД"? странно бы выглядел разработчик приложений для БД, не знающий в требуемом объеме этой самой БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 23:05 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafmВот только список этот составляют совсем другие персонажи. да-да-да! Я знаю. Это - девелоперы! Которые приходят так и приказным тоном заявляют: "Нашей супернетленке необходимы для работы права уровня sysadmin и полный доступ ко всем всевозможным ресурсам". не знаю что такое "нетленка", но что делает ДБА? Неужели пустыми БД рулит? Логика где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 23:08 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
и что означает "размазаны по коду приложения", все же? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 23:13 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
и причем здесь шарпеи, все же? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 23:14 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlockyА какую "трактовку поведения" можно дать девелоперу, претендующему на "знание БД"? странно бы выглядел разработчик приложений для БД, не знающий в требуемом объеме этой самой БД. К сожалению, у нас весьма и весьма не совпадает высота той самой планки "требуемого объема знаний". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 23:20 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmи что означает "размазаны по коду приложения", все же? Это когда sql код содержится не в процедурах на сервере, а содержится в чудесных литералах шарпейного кода. Либо (в особо продвинутых случаях) - в ресурсах вышеупомянутого шарпейного проекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 23:21 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmи причем здесь шарпеи, все же? как яркий пример современного разработчика. Впрочем, джависты с этой точки зрения ничем не лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 23:22 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafmlockyА какую "трактовку поведения" можно дать девелоперу, претендующему на "знание БД"? странно бы выглядел разработчик приложений для БД, не знающий в требуемом объеме этой самой БД. К сожалению, у нас весьма и весьма не совпадает высота той самой планки "требуемого объема знаний". не высота, а границы, правильней, имхо. Многие вещи разработчику просто необязательно знать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 23:28 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafmи причем здесь шарпеи, все же? как яркий пример современного разработчика. Впрочем, джависты с этой точки зрения ничем не лучше. понятно. Это тенденция. Если я правильно понял, что речь идет об "embeded sql". Мне она, кстати, не очень нравиться, еще со времен Pro*C и 5-го оракла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 23:35 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
нравиться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 23:36 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 locky Не хватало еще чтобы всякие веб- и прочие девелоперы шарились у меня в базе и творили "шопопало". Та нихто в Вашей базе не шарится, успокойтесь. Есть у Вас база, есть там дцать таблиц с данными, есть там ноль целых хер десятых кода - всё, сидите, админьте, никто на Вашу вотчину не посягается. Делайте свою работу. Назвались администратором - администрируйте. У вас какие-то религиозные предубеждения против такого метода решения? Хотите об этом поговорить? Предубеждения против каскадного удаления/обновления - да. Причем предубеждения эти есть независимо от количества layer'ов и tier'ов. Религиозные - нет. Поговорить - всегда пожалуйста. Было б с кем. Не с завхозом же. Жуткой недостоверностью информации. Ибо совершенно не факт, что таблица Table1 модифицируется только в класс CTable1. Правда? И зачем люди какую-то там инкапсуляцию придумали... Какие-то датааксеслэйеры рисуют, локализуют работу с исходными данными в одном месте - а тут бац! нифига не в одном, внутренний вредитель всё порушил, написал еще миллион классов :)) А вы не можете себе помыслить, что ДБА - значительно лучше вас разбирается в БД? Что именно он знает что и как нужно делать? И что уж точно совершенно не ваше дело - указывать - каким образом осуществлять доступ к данным? Ваше дело - лепить GUI, клепать странички на html, и заниматься прочей "весьма полезной деятельностью". И, разумеется! Почтительно принимать рекомендации ДБА, брать под козырёк и выполнять в точности. Напомнило, как в одной компании внедрение оракла зарубили на корню. Со словами "и чтоб ни один занюханый оракловый админ даже и думать не смел, будто бы от него тут хоть что-нибудь зависит" :) Позвольте полюбопытствовать, Наполеоном Вы стали когда - до определения в козлятню на должность модератора ПТ, или после? А ДБА приходится выкручиватся - и делать так, дабы "чудо-код", наваяный девелоперами - всё-таки работал. Ога, ога. А заправщику картриджей приходится за программистом отчет перерисовывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 23:52 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmне высота, а границы, правильней, имхо. Многие вещи разработчику просто необязательно знать. Болльшинство разработчиков уверены, что им вообще необязательно ничего знать, кроме пары классов, тройки паттернов и десятка крутых и модных слов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 00:25 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm понятно. Это тенденция. Если я правильно понял, что речь идет об "embeded sql". Мне она, кстати, не очень нравиться, еще со времен Pro*C и 5-го оракла. Ни в коем разе. встроеный скуль - он как раз на своем месте. Ну, почти на своем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 00:25 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП И зачем люди какую-то там инкапсуляцию придумали... Какие-то датааксеслэйеры рисуют есть единственная причина для всего этого - создать видимость работы и прикрыть свою некомпетентность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 00:26 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafm Если я правильно понял, что речь идет об "embeded sql". Ни в коем разе. встроеный скуль - он как раз на своем месте. Ну, почти на своем. тогда не понятно о чем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 00:27 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП Та нихто в Вашей базе не шарится, успокойтесь. Есть у Вас база, есть там дцать таблиц с данными, есть там ноль целых хер десятых кода - всё, сидите, админьте, никто на Вашу вотчину не посягается. Делайте свою работу. Назвались администратором - администрируйте. Ах, если бы! Обычно прибегают девелоперы, и заливаясь слезами (или, что хуже - гневно потрясая тощими кулачками) - заявляют на голубом глазу, мол "база тормозит". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 00:27 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlockyiscrafm Если я правильно понял, что речь идет об "embeded sql". Ни в коем разе. встроеный скуль - он как раз на своем месте. Ну, почти на своем. тогда не понятно о чем. О теме топика. "Код из приложения против хранимых процедур". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 00:28 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛППозвольте полюбопытствовать, Наполеоном Вы стали когда - до определения в козлятню на должность модератора ПТ, или после? Никогда не любил девелоперов. За леность, самоуверенность, хамство и нежелание учится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 00:29 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПНапомнило, как в одной компании внедрение оракла зарубили на корню. Со словами "и чтоб ни один занюханый оракловый админ даже и думать не смел, будто бы от него тут хоть что-нибудь зависит" :) А, так вы вместо одного спеца по БД взяли десяток студентов-недочек-девелоперов? Весёлый ход, ничего не скажешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 00:30 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafmне высота, а границы, правильней, имхо. Многие вещи разработчику просто необязательно знать. Болльшинство разработчиков уверены, что им вообще необязательно ничего знать, кроме пары классов, тройки паттернов и десятка крутых и модных слов. очень многие админы считают, что БД нужны "чтобы було". А про то, что БД являются частью приложений, почему-то забывают. Воспринимают ее как набор табличек, вьюшек, процедур и т.д., не понимая зачем они нужны. Дали порулить - рулю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 00:32 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmочень многие админы считают, что БД нужны "чтобы було". А про то, что БД являются частью приложений, почему-то забывают. Воспринимают ее как набор табличек, вьюшек, процедур и т.д., не понимая зачем они нужны. Дали порулить - рулю. каких-таких процедур? Никаких процедур же нет! У нас есть датаакцесслейеры! У нас есть классы! У нас есть орм, в конце концов! Об чем вы говорите, милейший? зы а вы что, серъезно думаете, что для поддержания оптимальной производительности сервера БД так уж необходимо разбираться в предметной области? насчет того что это "было бы полезно" - я спорить не буду, ибо знания - лишними не бывают. Однако вы делали уже допущения, мол "девелоперу не обязательно всё знать" - но почему-то не делаете таких допущений насчет ДБА. Уж не пристрастны ли вы, часом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 00:35 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 locky Ах, если бы! Обычно прибегают девелоперы, и заливаясь слезами (или, что хуже - гневно потрясая тощими кулачками) - заявляют на голубом глазу, мол "база тормозит". Ну так и сделайте, чтобы база - не тормозила. И выдерживала нагрузку из многих несложных запросов. Если не сумеете - что ж поделать. Девелоперы будут переписывать ресурсоемкие куски. Возможно с переносом частей в БД, возможно что и нет. Не хватит у шарпера квалификации - будет приглашен DB-девелопер. В любом случае эту работу не доверят админу (уж соверенно точно не доверят тому админу, для которого представляет сложность открыть класс и найти метод) ЛППозвольте полюбопытствовать, Наполеоном Вы стали когда - до определения в козлятню на должность модератора ПТ, или после? Никогда не любил девелоперов. За леность, самоуверенность, хамство и нежелание учится. Ну знаете... Если Вы в козлятне, то я то тут причем??? Совсем уж полная неадекватность... А, так вы вместо одного спеца по БД взяли десяток студентов-недочек-девелоперов? Весёлый ход, ничего не скажешь. Нет, в той конторе взяли девелопера - спеца по другой БД. Ну и студентов подтянули до нужного уровня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 00:45 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky Никогда не любил девелоперов. За леность, самоуверенность, хамство и нежелание учится. locky Не хватало еще чтобы всякие веб- и прочие девелоперы шарились у меня в базе и творили "шопопало". И уж тем более - не хватало чтобы они учили меня, какие способы доступа к данным являются кошерными, а какие - нет. смешно. Или грустно. Так все же, откуда беруться БД, которые ДБА администрирует? Их создают самоуверенные хамы, которые никак не желают учится? Или непорочное зачатие? Где логика? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 00:46 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky Однако вы делали уже допущения, мол "девелоперу не обязательно всё знать" - но почему-то не делаете таких допущений насчет ДБА. Уж не пристрастны ли вы, часом? нет. зачем разработчику знать, к примеру, в какую filegroup конкретный ДБА засунул конкретную базу? Гаечный ключ можно положить на любую полку в каптерке, лишь бы это удовлетворяло требования, которое предъявили к доступности ключа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 00:56 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafmочень многие админы считают, что БД нужны "чтобы було". А про то, что БД являются частью приложений, почему-то забывают. Воспринимают ее как набор табличек, вьюшек, процедур и т.д., не понимая зачем они нужны. Дали порулить - рулю. каких-таких процедур? Никаких процедур же нет! У нас есть датаакцесслейеры! У нас есть классы! У нас есть орм, в конце концов! Об чем вы говорите, милейший? хорошо. пусть будет так: Воспринимают ее как набор табличек, вьюшек, процедур и т.д., не понимая зачем они нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 00:58 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПНу так и сделайте, чтобы база - не тормозила. И выдерживала нагрузку из многих несложных запросов. Чудеса у нас, любезный, в соседнем отделе. К сожалению, далеко не всё, что делают уважаемые девелоперы, можно оптимизировать. ЛП Девелоперы будут переписывать ресурсоемкие куски. А прелесть иногда состоит в том что - нету их, ресурсоемких запросов :) ЛПВ любом случае эту работу не доверят админу (уж соверенно точно не доверят тому админу, для которого представляет сложность открыть класс и найти метод) Странно. Создание запросов доверили же девелоперу, для которого представляет сложность хотя бы просто спросить - как следует делать. Я уж не говорю о том, чтобы почитать что-нить по теме. ЛПНет, в той конторе взяли девелопера - спеца по другой БД. Ну и студентов подтянули до нужного уровня. А нафига ж там брали то "спеца по другой БД"? Девелоперы бы сами справились - классы, ооп, лейеры, тайеры, все дела.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 00:58 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmсмешно. Или грустно. Так все же, откуда беруться БД, которые ДБА администрирует? Их создают самоуверенные хамы, которые никак не желают учится? Или непорочное зачатие? Где логика? Вы меня простите, но при современном развитии средств проективрования, набросать десяток-другой кривеньких сущностей (и даже автоматом сгенерировать для них любимые классы для доступа) способна даже обезьянка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 01:00 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmхорошо. пусть будет так: Воспринимают ее как набор табличек, вьюшек, процедур и т.д., не понимая зачем они нужны. Вы меня простите, но зачастую это именно так и есть - не БД, а просто "набор табличек". С которыми неизвестно кто неизвестно что делает. И с такой БД что-либо можно выяснить только "по факту" - когда загорится, так сказать. Ибо там просто нет объекта для анализа. Можно проанализировать схему на предмет мелких блох. но не более. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 01:02 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmнет. зачем разработчику знать, к примеру, в какую filegroup конкретный ДБА засунул конкретную базу? Гаечный ключ можно положить на любую полку в каптерке, лишь бы это удовлетворяло требования, которое предъявили к доступности ключа. Незачем. Вы совершенно правы - разработчику совершенно незачем знать кучу разных мелочей, которые знает ДБА. Зачем ему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 01:03 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafmхорошо. пусть будет так: Воспринимают ее как набор табличек, вьюшек, процедур и т.д., не понимая зачем они нужны. Вы меня простите, но зачастую это именно так и есть - не БД, а просто "набор табличек". С которыми неизвестно кто неизвестно что делает. И с такой БД что-либо можно выяснить только "по факту" - когда загорится, так сказать. Ибо там просто нет объекта для анализа. Можно проанализировать схему на предмет мелких блох. но не более. все потому, что один оперирует данными , а другой - информацией . Действительно, набор табличек.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 01:07 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyС которыми неизвестно кто неизвестно что делает. очень даже известно кто, что и зачем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 01:09 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmвсе потому, что один оперирует данными , а другой - информацией . Действительно, набор табличек.. Да бог с ними, кто чем оперирует. Главное, чтобы это было сделано квалифицировано. Но большинство разработчиков воспринимают БД как вспогательный объект, эдакое досадное приложение к их замечательному GUI и красивой структуре классов. Что, вообще говоря, неверно. В принципе, это можно даже проследить по наличию инструментов для контроля качества кода. Существует масса всевозможного инструментария, который позволяет находить блох во всевозможном коде - начиная от TP6, заканчивая С и шарпом. Всевозможные решарперы, стайлкопы, полиси и проч. А вот инструментария, который позволяет искать блох в коде SQL - по пальцам пересчитать. Один-два для оракла и полтора для сиквела. Тем тяжелее становится задача оптимизации. Мало того что почти нет инструментов для анализа кода, так и самого кода, собственно, нет! Его нужно выискивать по десяткам классов, по сорс-файлам и т.д. Это напоминает мне анекдот про гамак и скафандр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 01:12 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlockyС которыми неизвестно кто неизвестно что делает. очень даже известно кто, что и зачем. Увы, мой друг, увы. Если я дам вам в руки проект, и спрошу - "какие действия и где производятся с табличкой имярек" - вы, скорее всего, вооружитесь банальным поиском и начнете копать. Если я попрошу вас найти какие-то некошерные места - вы, я так думаю, потратите много и много усилий, но не достигнете сколь нибудь приемлимого результата. А ведь в скуле существует масса моментов, на которые обычный девелопер просто не обращает внимания, но которые потом вылезают боком при эксплуатации. И найти такие моменты в рассредоточенном коде - очень проблематично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 01:15 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Более того. мне кажется, что даже если я дам вам код и спрошу "что здесь не так" - вы мне не сможете ответить. ------------------------- There’s no silver bullet! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 01:16 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyБолее того. мне кажется, что даже если я дам вам код и спрошу "что здесь не так" - вы мне не сможете ответить. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 01:26 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 locky ЛПНу так и сделайте, чтобы база - не тормозила. И выдерживала нагрузку из многих несложных запросов. Чудеса у нас, любезный, в соседнем отделе. К сожалению, далеко не всё, что делают уважаемые девелоперы, можно оптимизировать. А не надо (Вам - не надо) оптимизировать то, что делают девелоперы. Претензии к тому, что база тормозит - сделайте так, чтобы база не тормозила. База справляется с нагрузкой из множества легких запросов - всё, спасибо, до свидания. Если база не тормозит, а application layer тем не менее еле дышит - ну и претензии будут к создателю application layer. А вовсе не к местному Наполеону на должности админа. Наполеон свою работу выполнил. ЛП Девелоперы будут переписывать ресурсоемкие куски. А прелесть иногда состоит в том что - нету их, ресурсоемких запросов :) Я не говорил "ресурсоёмкие запросы". Но даже если их не было, этих ресурсоёмких запросов - они могут появится, стараниями девелоперов, или DB-девелоперов, но никак не стараниями админа. Странно. Создание запросов доверили же девелоперу, для которого представляет сложность хотя бы просто спросить - как следует делать. Я уж не говорю о том, чтобы почитать что-нить по теме. Ну это тем более не входит в компетенцию местного Наполеона - заботиться о профессионально уровне девелоперов. Об этом позаботятся либо они сами, либо их руководитель (в плохих случаях отдел кадров). ЛПНет, в той конторе взяли девелопера - спеца по другой БД. Ну и студентов подтянули до нужного уровня. А нафига ж там брали то "спеца по другой БД"? Девелоперы бы сами справились - классы, ооп, лейеры, тайеры, все дела.... Ну да, классы, лейеры, тайеры. Там была куча лейеров, но увы всего два тайера. И куча оракл-наполенов вместо искомого оракл-админа (девелопер типо был). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 01:55 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПА не надо (Вам - не надо) оптимизировать то, что делают девелоперы. Претензии к тому, что база тормозит - сделайте так, чтобы база не тормозила. :) Порадовали. Оптимизировать - не надо. Надо, чтобы не тормозило затейник вы, батенька. Однако, по прежнему - чудеса у нас в соседнем разделе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 02:03 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlockyБолее того. мне кажется, что даже если я дам вам код и спрошу "что здесь не так" - вы мне не сможете ответить. Код: plaintext Код: plaintext 1. 2. что здесь не так? зы а у вас, по меньшей мере, не указана схема. что, вообще говоря, не есть гуд. Плюс есть еще один момент, озвучивать который я не буду, дабы не вызывать "праведный гнев" и вопли "документировать надо!". Знаем мы как девелоперы документацию ведут :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 02:06 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 locky ЛПА не надо (Вам - не надо) оптимизировать то, что делают девелоперы. Претензии к тому, что база тормозит - сделайте так, чтобы база не тормозила. :) Порадовали. Оптимизировать - не надо. Для тупых повторяю: Вам (админу) не надо оптимизировать то, что сделали девелоперы . Надо, чтобы не тормозило Ага. Надо, чтобы сервак справлялся с нагрузкой из кучи мелких запросов к базе, в которой дцать таблиц с данными и ноль целых хер десятых кода. Справились - спасибо, до свидания. Не справились - тем более до свидания, но уже без спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 02:12 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПДля тупых повторяю: Вам (админу) не надо оптимизировать то, что сделали девелоперы . Можете повторить это еще раз. М.б., скажем, те же девелоперы наконец-то поймут, мол "самим нужно думать" ЛПАга. Надо, чтобы сервак справлялся с нагрузкой из кучи мелких запросов к базе, в которой дцать таблиц с данными и ноль целых хер десятых кода. Чудеса, друг мой, они в соседнем разделе Точнее, не то чтобы в соседнем разделе - но за совершенно иные деньги. По больше части - за железо. Советы я могу и бесплатно дать, так уж и быть :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 02:16 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 locky Точнее, не то чтобы в соседнем разделе - но за совершенно иные деньги. По больше части - за железо. Вполне нормально, кстате. Железа сейчас много и разного, денег стоит вполне вменяемых... Советы я могу и бесплатно дать, так уж и быть :) ... зато ненужные советы железо даже и не пытается давать. И не рассуждает - кому, сколько и каких книжек читать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 02:32 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛП2 locky Точнее, не то чтобы в соседнем разделе - но за совершенно иные деньги. По больше части - за железо. Вполне нормально, кстате. Железа сейчас много и разного, денег стоит вполне вменяемых... Советы я могу и бесплатно дать, так уж и быть :) ... зато ненужные советы железо даже и не пытается давать. И не рассуждает - кому, сколько и каких книжек читать. хм :) Вы забавный. насчет железа - это правда, железа сейчас много, самого разного. но, как по мне, глупо выкидывать паре десятков тысяч баксов только из-за того, что девелоперы страдают врожденной косорукостью. Тем паче что решение проблемы будет ну совершенно временной :) Дело в том, что однажды появляется умнейший девелопер, который отлично постиг дао ООП, разбирается в сетерах и гетерах, знает всё об экономии памяти и бизнес объектах. И в лучший традициях сей студиоус лабает датаакцеслейер (для презентейше тайера), при помощи ОРМ (а также WPF и прочих модных штук). И вместо банального до тошноты запроса select * from SomeTable, призванного извлечь пару сотен записей из настроечной таблички (к примеру), сей зело разумный отрок генерирует пару десятков тысяч простых запросов (например - получить список идентификаторов записей, дабы составить список объектов; для экономии памяти сей отрок не вычитывает всё содержимое строки за раз, а пишет умный геттер, который дёргает базу для получения значения) и всё в том же духе. ну а потом, разумеется, возникает вопрос - с какого бодуна сервер то так тормозит то и медленно работает? И не нужно бы нам купить еще пару-тройку камней (да побольше, побольше!), а то, знаете-ли, не справляется он... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 02:41 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 locky насчет железа - это правда, железа сейчас много, самого разного. Не только разного, но еще и дешевого и производительного. По сравнению с совсем недалёкими годами в прошлом - очень дешевого, и очень производительного. но, как по мне, глупо выкидывать паре десятков тысяч баксов только из-за того, что девелоперы страдают врожденной косорукостью. Тем паче что решение проблемы будет ну совершенно временной :) Да нет, не из-за косоруких девелоперов, а из-за того, что админ БД не смог имеющийся сервер БД настроить так, чтобы он справлялся с имеющейся нагрузкой из примитивных запросов (уж простите, я более простой задачи для дба и не придумаю даже). Решение - да, временное. Но оно является решением хотя бы на время. Тогда как админ, сыплющий советами, решением не является. То есть вот как бы так получается. Либо платить немаленькую зарплату админу и выслушивать его советы (ага, хвост даёт люлей собаке), либо выгнать админа и купить новый сервак, решив тем самым проблему на какое-то время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 03:00 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ЛПНе только разного, но еще и дешевого и производительного. По сравнению с совсем недалёкими годами в прошлом - очень дешевого, и очень производительного. ну да, ну да :) ЛП Решение - да, временное. Но оно является решением хотя бы на время. Тогда как админ, сыплющий советами, решением не является. Разумеется, временное. До следующего мудрого класса. А потом - новый сервер (благо, дёшев). (замечу так, для галочки - исправление кода обойдётся баксов в 5, примерно). ЛП То есть вот как бы так получается. Либо платить немаленькую зарплату админу и выслушивать его советы (ага, хвост даёт люлей собаке), либо выгнать админа и купить новый сервак, решив тем самым проблему на какое-то время. :) Да, решить проблему. на неделю, где-то. В одной точке. Если же точек, скажем, порядка двух сотен.... надо бы побольше админов выгнать, чтобы купить побольше серверов И не забывать это повторять раз в неделю. Глупости вы, любезный, говорите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 03:04 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky(замечу так, для галочки - исправление кода обойдётся баксов в 5, примерно). Блин, я и забыл, что разговариваю с волшебником, который умеет лечить по фотографии, причем даже при отсутствии фотографии :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 03:11 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Жалко только, что волшебник админить не умеет :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 03:11 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafmlockyБолее того. мне кажется, что даже если я дам вам код и спрошу "что здесь не так" - вы мне не сможете ответить. Код: plaintext Код: plaintext 1. 2. что здесь не так? зы а у вас, по меньшей мере, не указана схема. что, вообще говоря, не есть гуд. Плюс есть еще один момент, озвучивать который я не буду, дабы не вызывать "праведный гнев" и вопли "документировать надо!". Знаем мы как девелоперы документацию ведут :) что попало уже пошло. Все то вы знаете, учите разработчиков.. смешно просто. p.s. у меня там не схема не указана (жесть!), а попытка отправить в корзину документ утвержденный к отгрузке (whst=2). Не знали? А откуда бы вам знать. Во-первых, никто вас не будет ставить об этом в известность, а во-вторых, это все описано в документации, к которой вы не будете иметь доступа. Ваше дело за базой следить, архивы делать, правильно по дискам распределять и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 11:29 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
по моему пуп земли развязался. Что уже похожее на бред пошло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 11:31 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
По теме топика: Сама бизнес-логика приложения конечно-же не должна быть в ХП на сервере. Обьясняется это тем, что построив логику таким образом мы получим функциональную декомпозицию системы, а не объектную, как при ООП. Функциональная декомпозиция хуже устойчива к изменениям, т.к. функции имеют бОльшую тенденцию к изменению, чем объекты. Т.е. помимо более развитого языка программирования, ООП само по себе в этом смысле лучше. А когда создали объектную модель, то можно думать как именно ее маппить и на что. Точнее, мы должны иметь (в идеале) 3 модели: сущностную, объектную и модель БД. Сущностная создается первой, на ее основе выводятся две остальные (правда некоторые уважаемые люди утверждают, что сущностная модель излишна, т.к. ее тоже надо сопровождать, но имхо это окупается). Т.к. объектная модель отличается от реляционной, то надо их как-то друг с другом подружить. Это либо делается с помощью ОРМ (либо пишутся свои велосипеды). Многие ОРМ (и самописные велосипеды) умеют маппиться на ХП, так что тут появляется 2 варианта - маппить сущности на ХП, или напрямую на таблицы (есть промежуточные вариант - на вью). С таблицами получается быстрее всего, но и возможных проблем тоже больше. Мне лично больше нравиться вариант ХП, т.к. это инкапсулирует структуру БД и запросы, что позволяет ее менять и настраивать производительность без необходиомсти трогать клиентов. ДБА сможет изменять таблицы, вводить денормализацию, индексированные вью и прочее. Однако это приводит к невозможности написания объектных запросов напрямую программистами (например на linq), приходится писать ХП, создавать под него методы и прочее. Однако хуже это или лучше бабушка надвое сказала, т.к. ХП метода поиска опять-таки может быть оптимизирована ДБА ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 13:36 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Денис ИльинНу, плейсхолдеры особенно и не нужны. Лично мне хватает возможности передавать в хранимую процедуру в качестве параметра какой нибудь XML. Вот честно - из почти 2-х тысяч хранимок динамический sql только в 5..6..и штучках, и то - в процедурках административного характера, пользователь их даже и не зовёт. нашел чем хвастаться ... 2000 хранимок.. с ума сойти полная лажа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 13:56 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm p.s. у меня там не схема не указана (жесть!), а попытка отправить в корзину документ утвержденный к отгрузке (whst=2). Не знали? А откуда бы вам знать. Во-первых, никто вас не будет ставить об этом в известность, а во-вторых, это все описано в документации, к которой вы не будете иметь доступа. Ваше дело за базой следить, архивы делать, правильно по дискам распределять и т.п. а также следить, дабы ваше поделие работало с более-менее приемлимой скоростью. И желательно, дабы ваше поделие не требовало для себя установки отдельного инстанса сервера, а могло быть проинсталлено на уже имеющийся инстанс. так, теперь что касается поиска ошибок в вашем гениальном коде. как минимум, в вашем коде не фиксируется кто сделал изменение и вообще - не ведётся история изменения состояния документа, что, вообще говоря, чревато. проверить же все точки изменения состояния документа представляет из себя сложную задачу, т.к. код для изменения состояния вероятнее всего не сосредоточен в одном методе (по крайней мере вы не можете дать такую гарантию). Особенно меня порадовало "описано в документации". Чудеса, повторяю, в соседнем отделе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 15:38 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmВсе то вы знаете, учите разработчиков.. смешно просто. Ну, всё не всё, но что касается доступа к БД - многое. По крайней мере, я занимаюсь только этим, в течение всего рабочего времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 15:41 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky, это очень плхохо :( SQL сервер - просто прога и не самая важная, просто монополисты вдолии в башку клиентов, что без скула никуда, вот и приходится это дерьмо пользовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 15:49 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифовlocky, это очень плхохо :( SQL сервер - просто прога и не самая важная, просто монополисты вдолии в башку клиентов, что без скула никуда, вот и приходится это дерьмо пользовать Не самая важная, согласен. но без неё - никуда. Посему - извольте юзать её нормально и прислушиваться к советам, которые дает специалист по этой проге. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 15:54 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифов, а для эстетов - есть флет-файлы и "компутерые с бесконечным быстродействием". Фантастика у нас по прежнему - в соседней разделе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 15:55 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
StalkerS Однако хуже это или лучше бабушка надвое сказала, т.к. ХП метода поиска опять-таки может быть оптимизирована ДБА Да хуже некуда. Я создаю метод, который вызывает метода (ХП). Пока СКЛ не станет частью IDE будет гемор. Да и воще много там говна. Че только стоит Select 'Эшак' as Человек from Самолет; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 15:59 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyСахават Юсифов, а для эстетов - есть флет-файлы и "компутерые с бесконечным быстродействием". Фантастика у нас по прежнему - в соседней разделе. Что бы добиться более-менее производительности, приходится писать не то что надо,а то что может переварить низкоуровневый скул-динозавр, который остался мыслить на уровне рекорда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:03 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовЧто бы добиться более-менее производительности, приходится писать не то что надо,а то что может переварить низкоуровневый скул-динозавр, который остался мыслить на уровне рекорда. что называется - вы просто не умеете ЭТО готовить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:06 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky, да ладно даже на кодасил были целные струкутуры СКЛ для детских задач, а приходится пользовать для взрослых ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:08 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafm p.s. у меня там не схема не указана (жесть!), а попытка отправить в корзину документ утвержденный к отгрузке (whst=2). Не знали? А откуда бы вам знать. Во-первых, никто вас не будет ставить об этом в известность, а во-вторых, это все описано в документации, к которой вы не будете иметь доступа. Ваше дело за базой следить, архивы делать, правильно по дискам распределять и т.п. а также следить, дабы ваше поделие работало с более-менее приемлимой скоростью. И желательно, дабы ваше поделие не требовало для себя установки отдельного инстанса сервера, а могло быть проинсталлено на уже имеющийся инстанс. если вдруг потребует и вы этого не поймете, то поймет другой, а вы будете искать имеющийся инстанс. lockyтак, теперь что касается поиска ошибок в вашем гениальном коде. как минимум, в вашем коде не фиксируется кто сделал изменение и вообще - не ведётся история изменения состояния документа, что, вообще говоря, чревато. проверить же все точки изменения состояния документа представляет из себя сложную задачу, т.к. код для изменения состояния вероятнее всего не сосредоточен в одном методе (по крайней мере вы не можете дать такую гарантию). Особенно меня порадовало "описано в документации". Чудеса, повторяю, в соседнем отделе. Вы это определили по одному SQL предложению? Позовите Вия уже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:09 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyизвольте юзать её нормально и прислушиваться к советам, которые дает специалист по этой проге. чур меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:11 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky, знаешь почему скл не развивается? потому что нет возможности как только заменишь форинкей на уровне таблиц на че нить другое, сразу облом а такая целостность пудовые гири на ногах все прогерство последние 5 лет занято изобретением прослойки над этой фигней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:11 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmесли вдруг потребует и вы этого не поймете, то поймет другой, а вы будете искать имеющийся инстанс. Если вдруг потребует - инстанс я ему подыму. Но обычно проблема в другом - в том, что "гениальные поделия" в силу тех или иных причин - не могут жить совместно с другими приложениями. iscrafm Вы это определили по одному SQL предложению? Позовите Вия уже. А других там рядом нету. И есть ли другие из вашей свалки кода выяснить весьма затруднительно. Но вообще - да, по одной строке кода я это определил. И даже уже вижу еще одну потенциальную проблему. Которую, видимо, не видите вы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:17 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
очень похоже на то, что появление среднего слоя и перенос на него логики обязано подобному общению с ДБА. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:20 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmочень похоже на то, что появление среднего слоя и перенос на него логики обязано подобному общению с ДБА. Разумеется. Ведь когда у ДБА нет доступа к коду - девелопер может делать умный вид, надувать щеки и важничать - никто ведь не может СРАЗУ сказать, что у него - фиговый код Но, как обычно, девелопер ошибается на все 100%. ДБА рано или поздно получит 80% кода девелоперов - и раскажет тем, как надо родину любить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:23 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafm Вы это определили по одному SQL предложению? А других там рядом нету . И есть ли другие из вашей свалки кода выяснить весьма затруднительно. Где логика? lockyНо вообще - да, по одной строке кода я это определил. И даже уже вижу еще одну потенциальную проблему. Которую, видимо, не видите вы. заинтриговали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:24 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky, а чего стоит дебилизм под название управление правами - брррр, права на колумн!!!!!(а кто то на запись, и радуется при этом - фича!!) Вся моща СКЛ сосредоточено не там где надо (на таблицах) Основная штука (граф связей) не используется практически, что приводит к детским вещам типа - СКЛ не может упорядочить изменения что бы понять - целостен ли весь пакет изменеий, проще сказать - конфликт :), там где и помине нет конфликта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:24 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyкак обычно, девелопер ошибается на все 100%. ДБА рано или поздно получит 80% кода девелоперов - и раскажет тем, как надо родину любить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:27 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm, ну он то воще непричем скорее всего он и вправду лучше знает ту прогу на которой работает, чем ты или я но суть то не в этом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:29 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm, судя по всё учащающимся личным выпадам с вашей стороны - нормальной аргументации у вас не осталось (даже если предположить, что оная была). Очень жаль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:31 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
суть в том, что ХП и триггеры не компенсируют слабость матаппарата (интересно, будет флейм или нет? :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:33 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифов, флейма не будет. Девелоперы не готовы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:36 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky, ну твы решил игнорировать мои выпады :) но я закончу подход к позиционироваию матаппарата (хранение данных для генерируюущей логики) неправильный реализация подхода кривая это фигня нужна там, где генерирующая данные логика и логика использования данных не перескаются (так и называли раньше БАНК ДАННЫХ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:40 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafm, судя по всё учащающимся личным выпадам с вашей стороны - нормальной аргументации у вас не осталось (даже если предположить, что оная была). Очень жаль. шутить изволите? прочтите себя чуть выше. Аргументации чего? Что 1 (одно) SQL предложение это не свалка кода? Что 100% разработчиков не ошибаются? Или того, что ДБА администрирует рабочую плошадку для приложений, которые создает разработчик? После того, как в топике пошли какие-то галюцинации, вся аргументация сводится только к поиску смешных картинок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:42 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky, кстати, многие вопросы остались без ответов. Так откуда появляются те базы, которые вы админите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:45 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm вся аргументация сводится только к поиску смешных картинок. А до этого вы искали смешные фразы Впрочем, с вами почти всегда интересно. Вы постоянно подбрасываете небольшие изречения, которые я с вашего согласия включу в свой цитатник речей девелоперов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:47 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyВпрочем, с вами почти всегда интересно. Вы постоянно подбрасываете небольшие изречения, которые я с вашего согласия включу в свой цитатник речей девелоперов. пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:48 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlocky, кстати, многие вопросы остались без ответов. Так откуда появляются те базы, которые вы админите? Судя по изначальному содержимому - самозарождаются в корзинах с грязным бельем. а что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 16:51 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafmlocky, кстати, многие вопросы остались без ответов. Так откуда появляются те базы, которые вы админите? Судя по изначальному содержимому - самозарождаются в корзинах с грязным бельем. а что? если продолжить вашу мысль, то наверное потом за дело берется админ и из грязной тряпки делает флаг? p.s. locky, ничего личного. Речь уже идет о сферическом админе, мировозрение которого вы озвучиваете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:10 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm, При вскрытии не обнаружены НИКАКИЕ структуры (ни тебе списков, ни деревьев, ни графа, ни стека, ни очереди...) хотя называлась СКЛ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:15 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm если продолжить вашу мысль, то наверное потом за дело берется админ и из грязной тряпки делает флаг? p.s. locky, ничего личного. Речь уже идет о сферическом админе, мировозрение которого вы озвучиваете. Ну, флаг не флаг, но работать это начинает с более-менее приемлимым качеством. Чтобы из этого получился флаг нужно было изначально по крайней мере советоваться с ДБА - в конце концов это одна из его основных задач - предоставлять консультации по работе с БД. Вы ведь сами писали - девелоперу необходимы относительно небольшие знания в этой части, он действительно может не знать всех аспектов и нюансов. Однако многие девелоперы трансформируют фразу "не обязательно знать всё" во фразу "я знаю всё что нужно" - а это, вообще говоря, неправильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:16 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
кстати... наверняка настоящий админ, как истинный знаток, обеспечивает предприятие, на котором работает, всем необходимым программным обеспечением, лишенным свалки грязного кода. хотя... хм.. Он же в этом случае станет разработчиком. А нет ничего хуже, чем нелюбовь к себе. Мистика какая-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:19 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky, разработчики используют интерфейсы, которые предоставляет СУБД, штатно. Задача конкретного ДБА - обеспечить безупречную работу этих интерфейсов на своей площадке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:23 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlocky, разработчики используют интерфейсы, которые предоставляет СУБД, штатно. Задача конкретного ДБА - обеспечить безупречную работу этих интерфейсов на своей площадке. глубочайшая ошибка, величайшее заблуждение. Задачей ДБА также является консультирование разработчиков на тему "как лучше использовать СУБД", в противном случае всё вырождается в требования к ДБА "обеспечить время выполнение запроса не более 0.001 секунды", для запросов с кросс-джойном десяти таблиц по 100м записей А чудеса (устал уже повторять) - в соседнем разделе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:27 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmкстати... наверняка настоящий админ, как истинный знаток, обеспечивает предприятие, на котором работает, всем необходимым программным обеспечением, лишенным свалки грязного кода. хотя... хм.. Он же в этом случае станет разработчиком. А нет ничего хуже, чем нелюбовь к себе. Мистика какая-то... Разработчиком может стать любой индивид, способный более-менее успешно попадать по кнопкам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:28 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyА чудеса (устал уже повторять) - в соседнем разделе. соседний раздел - это что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:28 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlockyА чудеса (устал уже повторять) - в соседнем разделе. соседний раздел - это что? Это где-то рядом. Рекомендую спросить у Малдера. Или у того самого девелопера, который всё знает лучше всех. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:30 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky, цирк какой-то. Весело с вами. Давайте поговорим на тему посылок счастья предприятиям, которые отправляет сферический ДБА, с вашими взглядами. Итак... предприятие на котром он работает, как я понял, использует исключительно его гениальные БД? Если бизнесу требуется решить какую-то задачу, то к нему (ДБА) на поклон направляется разработчик и получает все что сможет унести, и побои и унижения (с). Через некоторое время ДБА проверяет кучу грязного белья, принесенную разработчиком, и устраивает чистку. Бизнесу в это время лучше не высовываться, потому что страшен ДБА в гневе, вызванном вонючими носками (или что там в корзине). Хотя стоп... какой разработчик, остался же только ДБА. В общем, мистика ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:39 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm, нет, вы немного неправы. На предприятии девелоперы творят что хотят, выдвигают постоянные требования к обновлению железа и т.д. - ведь только на сверхбыстром и сверхмощном железе сможет работать их гениальная программа по учету, скажем, выданных фуфаек. и только мудрых, но уставший от суеты ДБА, тихо сидя в своем кабинете, грустно улыбается в седые усы и думает, насколько всё было бы проще и лучше, если бы от каждого брали "по способностям". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:43 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm, и главно то что он разоваривает токо с приглнувшимся разарботчиком остальные его ДБАшества пофиг :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:45 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafmкстати... наверняка настоящий админ, как истинный знаток, обеспечивает предприятие, на котором работает, всем необходимым программным обеспечением, лишенным свалки грязного кода. хотя... хм.. Он же в этом случае станет разработчиком. А нет ничего хуже, чем нелюбовь к себе. Мистика какая-то... Разработчиком может стать любой индивид, способный более-менее успешно попадать по кнопкам. продолжая вашу мысль... А ДБА нужно родиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:47 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmпродолжая вашу мысль... А ДБА нужно родиться. Ты знаешь, наверное, да. Потому как вообще говоря - работа довольно специфическая, и даже местами - очень скучная. Даже так - ОЧЕНЬ СКУЧНАЯ. Требующая внимательности и временами - недюжиной фантазии и воображения. В общем - работа на любителя, что называется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:52 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafm, нет, вы немного неправы. На предприятии девелоперы творят что хотят это что за предприятия такие? lockyи только мудрых, но уставший от суеты ДБА, тихо сидя в своем кабинете, грустно улыбается в седые усы и думает, насколько всё было бы проще и лучше, если бы от каждого брали "по способностям". ...и каждому давали "по потребностям" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:52 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmэто что за предприятия такие? Ну то, гипотетическое, идеальное по вашим понятиям :) iscrafm...и каждому давали "по потребностям" Да, разумеется. Потому как если объективно девелоперу под задачу нужен сервер начального уровня, а он требует "зверь-машину" - значит, перебъется девелопер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:54 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky, если работа требует фантазии и воображения, то она уже определенно не может быть скучной. имхо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 17:55 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlocky, если работа требует фантазии и воображения, то она уже определенно не может быть скучной. имхо Еще одно величайшее заблуждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 18:01 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafmlocky, если работа требует фантазии и воображения, то она уже определенно не может быть скучной. имхо Еще одно величайшее заблуждение. что-то полная депрессия. Разработчики мусор подкидывают, работа скучная... Да еще все кругом заблуждаются. Иван ВасильевичВот вы говорите, царь, царь... А вы думаете, Марья Васильевна, нам, царям, легко? Да ничего подобного! Обывательские разговорчики. У всех трудящихся два выходных дня в неделю. Мы цари работаем без выходных. Рабочий день у нас ненормированный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 18:11 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmчто-то полная депрессия. Разработчики мусор подкидывают, работа скучная... Да еще все кругом заблуждаются. Ну а что ж ты хотел то? Это и есть нормальное течение жизни - всё по плану, всё скучно, без всякого героизма, строго по плану. Что же касается заблуждений - дык, так оно и есть. Вот взять хотя бы вас. Вы через раз заблуждаетесь, а через раз сами себе противоречите. Вот это - не скучно, это - весело. А в работе... А что в работе. Там неожиданностей быть не должно. И не допускаем, собственно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 18:17 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyВот взять хотя бы вас. Вы через раз заблуждаетесь, а через раз сами себе противоречите. не перепутали? Где логика - вопрос к вам, звучавший неоднократно, к сожалению, без ответа... О чем речь идет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 18:30 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlockyВот взять хотя бы вас. Вы через раз заблуждаетесь, а через раз сами себе противоречите. не перепутали? Где логика - вопрос к вам, звучавший неоднократно, к сожалению, без ответа... О чем речь идет? О вас, любезный, о вас. Например, вы что там декларировали? "Ваше дело за базой следить, архивы делать, правильно по дискам распределять и т.п."? И, как я понял "из недосказанного" - не лезть в предметную область - девелоперы знают, что делают? Я ничего не исказил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 18:39 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky, нет, не перепутали. Разработчики действительно знают что делают (особые случаи конечно не рассматриваются). Только о чем это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 18:42 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlocky, нет, не перепутали. Разработчики действительно знают что делают (особые случаи конечно не рассматриваются). Только о чем это? Окей, значит, я не перепутал. Однако, вы приводите пример кода и спрашиваете - "что в нём не так". Я даю вам рекомендацию исключительно со своей точки зрения - с точки зрения перформанса, а не с точки зрения предметной области. Однако вы делаете "умный вид" и заявляете, мол - "ошибка в предметной области и нельзя кого-то там относить в корзину". Рекомендацию по перформансу вы, судя по всему, даже не поняли. Было такое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 18:46 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky, о да! dbo. - серьезный перформанс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 18:48 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmlocky, о да! dbo. - серьезный перформанс. Вообще говоря - да. В том случае, если у вас порядочное к-во объектов в базе, и на сервер сыпется масса относительно небольших динамических запросов - то таки да, это может дать существенный прирост. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 18:51 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafmlocky, о да! dbo. - серьезный перформанс. Вообще говоря - да. В том случае, если у вас порядочное к-во объектов в базе, и на сервер сыпется масса относительно небольших динамических запросов - то таки да, это может дать существенный прирост. в случае, который я привел, этот прирост значительно меньше усилий на написание dbo.... К тому же какой-то выигрыш это даст если в БД много юзеров, разные схемы, много процедур, чтобы не конфликтовали блокировки при перекомпиляции... но это все фантазии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 19:18 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmв случае, который я привел, этот прирост значительно меньше усилий на написание dbo.... К тому же какой-то выигрыш это даст если в БД много юзеров, разные схемы, много процедур, чтобы не конфликтовали блокировки при перекомпиляции... но это все фантазии. Ну, усилий на написание имя схемы требуется совсем чуть-чуть. Насчет всего остального - вы совершенно правы. в программных комплексах по учету выданных фуфаек всё это играет не слишком значительную роль :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 19:43 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafmв случае, который я привел, этот прирост значительно меньше усилий на написание dbo.... К тому же какой-то выигрыш это даст если в БД много юзеров, разные схемы, много процедур, чтобы не конфликтовали блокировки при перекомпиляции... но это все фантазии. Ну, усилий на написание имя схемы требуется совсем чуть-чуть. Насчет всего остального - вы совершенно правы. в программных комплексах по учету выданных фуфаек всё это играет не слишком значительную роль :) ну не скажите. Билинг фуфаек - это серьезно. Просто некоторые админы советуют строить базы таким образом, чтобы у них было с чем возиться. Например загнать в СУБД 500 юзеров, все операции редактирования табличек оформить в виде хранимых процедур, причем чем больше, тем лучше (выше проскакивала цифра 2000). А без всего этого искуственного геммороя - нет смысла жизни, скучно. Иван ВасильевичУ меня вот тоже один такой был. Крылья сделал. - Ну-ну-ну-ну... - Что ну-ну. Я его на бочку с порохом посадил. Пущай полетает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 19:55 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafmну не скажите. Билинг фуфаек - это серьезно. Просто некоторые админы советуют строить базы таким образом, чтобы у них было с чем возиться. Например загнать в СУБД 500 юзеров, все операции редактирования табличек оформить в виде хранимых процедур, причем чем больше, тем лучше (выше проскакивала цифра 2000). А без всего этого искуственного геммороя - нет смысла жизни, скучно. искуственный гемор - это когда толпа полоумных девелоперов гонят чёрти какие запросы к базе, когда для выполнения тривиальных задач требуется совершенно нетривиальные железки и ПО, когда для выяснения - откуда же блин берутся такие данные (или куда они деваются) приходится устанавливать полный аудит - ведь черт его знает - кто, как и откуда осуществляет доступ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 20:05 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
lockyiscrafmну не скажите. Билинг фуфаек - это серьезно. Просто некоторые админы советуют строить базы таким образом, чтобы у них было с чем возиться. Например загнать в СУБД 500 юзеров, все операции редактирования табличек оформить в виде хранимых процедур, причем чем больше, тем лучше (выше проскакивала цифра 2000). А без всего этого искуственного геммороя - нет смысла жизни, скучно. искуственный гемор - это когда толпа полоумных девелоперов гонят чёрти какие запросы к базе, когда для выполнения тривиальных задач требуется совершенно нетривиальные железки и ПО, когда для выяснения - откуда же блин берутся такие данные (или куда они деваются) приходится устанавливать полный аудит - ведь черт его знает - кто, как и откуда осуществляет доступ. Шок - это по нашему! Сезон 2009. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 20:14 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
locky искуственный гемор - это когда <sensored> гонят чёрти какие запросы к базе, когда для выполнения тривиальных задач требуется совершенно нетривиальные железки и ПО, когда для выяснения - откуда же блин берутся такие данные (или куда они деваются) приходится устанавливать полный аудит хотя согласен конечно, это действительно утомительно. Правда это не совсем developer-dba тема, потому что могут быть как на одной стороне подобные пробои, так и на другой. Если в бессознательном состоянии делать что-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 21:01 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.!MGYНичего не понял причем тут фенсед и препроцессор, и подстановка фетчей ? при том, что pl/sql имеет общее с субд адресное пространство, а sqlj в db2 это внешний и чуждый для субд процесс Может я чего не понял но тут сравнивали, я так понял, возможности оракл и дб2, а сравнивать велосипед с феррари никто и не собирался. Если говори о тормознутости жава в хранимых дб2, то следует аналогии проводить из других субд именно с жавой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2009, 14:43 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.!sqlj в db2 это внешний и чуждый для субд процесс который лезет в базу через тот же JDBC. просто писанины чуть меньше. Забавно, а почему взята статья именно от 2003 года? Там еще за 2000 найти можно, еще раритетнее :) На самом деле, даже в приведенной Вами сказано, что SQLJ использует коннект от JDBC для получения ConnectionContext, а не "лезет через него в базу". А в случае SP и его не использует - коннект-то там уже есть. JDBC работает с динамическими запросами, а SQLJ обращается к уже скомпилированным пакаджам. Еще раз - при прекомпиляции запросы SQLJ превращаются фактически в вызовы "плана № X" на сервере, JDBC тут вообще никакого участия не принимает. По поводу "чуждого" процесса - в DB2 есть 2 режима работы Java драйвера - type 2 и type 4. Type 2 является прослойкой над нативным для ОС клиентом, type 4 от него и ОС независим и сам писан на джаве. Для SP используется именно type 2, т.е. Java процедура работает практически как fenced процедура на C, например. Т.е. при локальном коннекте (в т.ч. в случае SP) вместо сетевых прелестей используется нормальное межпроцессное взаимодействие в рамках ОС (через shared memory, например). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2009, 17:10 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 Yo.! К слову, при компиляции процедуры на SQL PL создают в БД фактически такие же пакаджи, содержащие скомпилированные в планы статические запросы и логику. Просто вызываются они тем же процессом, что и выполняются, а не "сторонним". Так что по сравнению с SQL PL "попадалово" для Java тут только на переключение контекстов и передачу данных в ОП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2009, 17:45 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
MGY Если говори о тормознутости жава в хранимых дб2, то следует аналогии проводить из других субд именно с жавой. почему именно с жавой ? вот у мсскл нет вменяемого варианта с жава, зато есть с .Net. важно не чем конкретно решается задача, а на сколько эффективно и удобно. но даже если говорить о жава в том же оракле жава интегрирована в ядро субд, т.е. более тесно чем у db2. 2Favn покажите более подробное описание, я не лингвист и фразу "The SQLJ runtime relies on a JDBC driver to obtain a database connection in order to access the database." понял, что access тоже тоже идет по jdbc. мое рассуждение просто - раз жава отдельный процесс, чуждый к SQL значит от нее и к ней нужно гонять входящие/исходящие данные как не крути. оракл же может биндить pl/sql переменные сразу, не гоняя их через тормознутый jdbc и не конвертируя не совпадающие форматы. не понятно чем заменить %rowtype и иже с ним, никаких bulk insert/collect, отслеживаний зависимостей и сотни других важных фич. к стате в бимерском sql pl есть какой-то error handling ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2009, 02:07 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.!почему именно с жавой ? вот у мсскл нет вменяемого варианта с жава, зато есть с .Net. важно не чем конкретно решается задача, а на сколько эффективно и удобно.К слову - любители могут писать SP/UDF на .Net и в DB2 :) Yo.!но даже если говорить о жава в том же оракле жава интегрирована в ядро субд, т.е. более тесно чем у db2.Что значит "интегрирована"? Как я понимаю, у Оракл просто есть своя имплементация JVM, поставляемая с СУБД. Но у IBM тоже своя JVM и свой Java SDK, тоже поставляемые с DB2 и работающие с ней. Куда "интегрированней"? Или Оракл сам исполняет байт-код, в обход своей JVM? Тогда Java там должна быть быстрее PL/SQL - он-то, бедный, VM использует! ;) Более того, бесплатно можно скачать IBM Data Studio, после чего в единой среде Eclipse со всеми ее вкусностями писать SP ( в т.ч. с удаленной отладкой) как на SQL PL, так и на Java. И там же с БД работать. Yo.!покажите более подробное описание, я не лингвист и фразу "The SQLJ runtime relies on a JDBC driver to obtain a database connection in order to access the database." понял, что access тоже тоже идет по jdbc.В том контексте сие значит, что отдельное Java приложение использует JDBC для коннекта. Дальше SQLJ получает ConnectionContext и живет своей жизнью, используя JDBC только для динамических запросов. Подробнее здесь , но там много. :) В случае Java SP коннект уже есть, просто берется default. Еще раз - у JDBC и SQLJ общий драйвер . Работая в режиме type 2 он является надстройкой над клиентом DB2, т.е. в случае SP - над собственно native API сервера. Yo.!мое рассуждение просто - раз жава отдельный процесс, чуждый к SQL значит от нее и к ней нужно гонять входящие/исходящие данные как не крути. оракл же может биндить pl/sql переменные сразу, не гоняя их через тормознутый jdbc и не конвертируя не совпадающие форматы.Опять - DB2 jdbc type 2 не более тормознутый, чем C CLI, например. И "гонять данные" нужно не больше, чем в SP на C, например. Или при native compilation PL/SQL (например, как вроде самый быстрый вариант PL/SQL) в вызовах процедур передача параметров не используется, оно само там как-то? :) А приведение типов - да, для сложных типов нужно . И что, это большие потери? Кажется, мы договорились, что логику массированной обработки данных лучше делать в SQL PL, а внешние задачи - на Java. Yo.!не понятно чем заменить %rowtype и иже с ним, никаких bulk insert/collect, отслеживаний зависимостей и сотни других важных фич.Трудно сказать, не разбираясь в Оракл, но навскидку: 1. %rowtype в Java - видимо ничем. Тем не менее, можно работать с возвращаемым rowset или параметром типа cursor. В SQL PL заменим на row data type . 2. bulk insert - в Java на batch update , который не только INSERT, но и все остальное, включая MERGE. Чем BULK COLLECT в SP лучше курсора - не понял, видимо это специфично для Оракл. 3. отслеживания зависимостей - именно для этого и существует SQLJ с хранимыми в БД package с запросами (к Oracle package и к Java package никакого отношения не имеют). 4. Про сотни важных фич - со столькими не знаком :) Но опять-таки подозреваю, что важны они именно для обработки данных, а для нее я Java SP и не предлагаю. А в самой Java как в универсальноq платформе важных фич - тьма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2009, 15:50 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.!к стате в бимерском sql pl есть какой-то error handling ?А как же! Только точнее - condition handlers. Если коротко - реагировать можно вообще на SQLEXCEPTION, SQLWARNING, NOT FOUND, или на что-то конкретное, в т.ч. пользовательское событие, выдаваемое SIGNAL . Объявляем обработчик с нужным кодом, по завершении которого произойдет EXIT (из процедуры), CONTINUE или UNDO (последний - в ATOMIC блоках). В обработчике можно сделать RESIGNAL события. Дальше пишем собственно SP, обработчики вызываются сами при возникновении заданных условий. Примеры тут , в конце. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2009, 16:03 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
FavnЧто значит "интегрирована"? Как я понимаю, у Оракл просто есть своя имплементация JVM, поставляемая с СУБД. Но у IBM тоже своя JVM и свой Java SDK, тоже поставляемые с DB2 и работающие с ней. Куда "интегрированней"? терминами ibm - в оракле жаба not fenced и живет в SGA, тесно интегрирована с типами и прочая. у db2 же интеграции по сути нет, ему по барабану даже, что там за jvm - хочешь хоть сановскую запускай, субд пофигу, кто там через драйвер jdbc/jsql лезет ... еще раз java stored procedures в db2 это просто syntax shugar, на которую из jvm вешать не суть важно. вся интеграция сделана на уровне синтаксиса, а не на уровне архитектуры и структур памяти. у оркла примерно так же сторед процедуры на .net прикручены. Favn Еще раз - у JDBC и SQLJ общий драйвер . Работая в режиме type 2 он является надстройкой над клиентом DB2, т.е. в случае SP - над собственно native API сервера. это единый драйвер, он одинаково работает как c jdbc так и с sqlj, хрен с ним пусть в режиме type 2 но драйвер один и тормозной из-за жава прослойки. Yo.!И "гонять данные" нужно не больше, чем в SP на C, например. Или при native compilation PL/SQL (например, как вроде самый быстрый вариант PL/SQL) в вызовах процедур передача параметров не используется, оно само там как-то? :) про что я и толкую - само. SQL движек их возьмет из структур памяти pl/sql машины. а вот db2-шная fenced жава будет их гонять копии и их преобразовывать растрачивая ресурсы. Java has its own set of supported data types. DB2 also has its own set of data types. As an example, the DB2 data type VARCHAR does not exist in Java. However Java has a String object that can be used instead. DB2 UDB has a set of "preferred" data type mappings that is best to use for Java applications and stored procedures http://www.ibm.com/developerworks/data/library/techarticle/dm-0510law/index.html Yo.! И что, это большие потери? Кажется, мы договорились, что логику массированной обработки данных лучше делать в SQL PL, а внешние задачи - на Java. да, вроде уже раза два до этого договорились, но вы каждый раз выпячиваете жава как альтернативу pl/sql. херовая она альтернатива в плане серьезного перелопачивания данных, если нужно серьезно перелопачивать много данных нужен нормальный, развитый язык 4GL с серьезной интеграцией с субд. а жаву, если уж и использовать, то как полноценное ООП (в виде 3-tier), а не процедуры на жаве лабать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2009, 16:34 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Не нравится жаба ? Вот вам тогда альтернатива PL/SQL. Заюзать Progress DB. Тогда родной для нее - язык Progress 4GL. И на нем где модуль обработки событий клиентского ввода, а где триггерная функция - не разберешь. И выполняются в одном месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2009, 00:49 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Наконец нашел время почитать про Oracle JVM. Yo.!терминами ibm - в оракле жаба not fenced и живет в SGA, тесно интегрирована с типами и прочая. у db2 же интеграции по сути нет, ему по барабану даже, что там за jvm - хочешь хоть сановскую запускай, субд пофигу, кто там через драйвер jdbc/jsql лезет ...Начнем сначала - JVM есть интерпретатор намеренно простого байт-кода, плюс мусорщик, JIT и RTTI с рефлексией. Остальное - в библиотеках пакетов, к которым относится "драйвер" СУБД. Можно уточнить (или ссылочку дать) какие именно данные , с кем и по какому поводу делит сей механизм в SGA? Моей скудной фантазии не хватает, и мне кажется, что "субд пофигу" - верное описание. :) Как я понял отсюда , основные фичи интеграции JVM в Оракл - это общий heap для read-only данных (хотя при чем тут СУБД?), управление мусорщиком шедулером Оракл и загрузка пакетов Java из СУБД. 1-е вполне соответствует not fenced Java в DB2 (с общей JVM). Остальное м.б. удобно, м.б. не очень - дело вкуса, но уж точно не решающее преимущество. И где тут SGA, или я что-то пропустил? Yo.!это единый драйвер, он одинаково работает как c jdbc так и с sqlj, хрен с ним пусть в режиме type 2 но драйвер один и тормозной из-за жава прослойки.Теперь о драйвере DB2 - сдается мне, что тут у Вас путаница в терминах. Он "единый" только в том смысле, что упакован в единый пакет, но в него входят множество компонентов для разных режимов работы. Прочитал про 3 драйвера JDBC в Oracle: 1. JDBC Thin driver 2. JDBC OCI driver 3. JDBC server-side internal driver. О чудо - полное соответствие с DB2! 1 - type 4, 2 - type 2, 3 - type 2 при работе на сервере (локальный коннект). Разница только в компоновке пакетов - 3 отдельных или 1 общий. Заметим, что в любом случае "тормозная" Java прослойка есть, только в Оракл она общается с ОС не напрямую, а посредством Oracle Database libraries. Т.е. через еще одну прослойку. ;) С СУБД же они общаются примерно одинаково, причем не на уровне JVM, а на уровне "драйверов", т.е. интерфейсных библиотек. Yo.!еще раз java stored procedures в db2 это просто syntax shugar, на которую из jvm вешать не суть важно. вся интеграция сделана на уровне синтаксиса, а не на уровне архитектуры и структур памяти. у оркла примерно так же сторед процедуры на .net прикручены.Еще раз - при чем тут JVM? Все дело в пакетах интерфейса с СУБД ("драйверах"), а не в JVM. А SQLJ является syntax shugar именно в Оракл, где он тупо превращается в JDBC вызовы: "When your SQLJ application runs, the SQLJ run time calls JDBC to communicate with the database." В DB2 же SQLJ, как и любой другой static SQL - принципиально другой способ работы, не использующий не только JDBC, но даже CLI (аналог OCI). Причем другой не только со стороны Java, но и со стороны СУБД. И возможная экономия ресурсов именно СУБД на выполнении запросов, а также иные вкусности, тут куда значительней затрат на копирование переменных. Кстати, о копировании. Yo.!про что я и толкую - само. SQL движек их возьмет из структур памяти pl/sql машины. а вот db2-шная fenced жава будет их гонять копии и их преобразовывать растрачивая ресурсы.С PL/SQL - понятно, но то же самое, как я понял из Ваших утверждений, можно сказать и про Java в Oracle? Посмотрим на первый попавшийся пример : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Yo.!As an example, the DB2 data type VARCHAR does not exist in Java. However Java has a String object that can be used instead.Что-то я не заметил, чтобы в примере выше вместо String использовалось что-то волшебное :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2009, 17:26 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.!да, вроде уже раза два до этого договорились, но вы каждый раз выпячиваете жава как альтернативу pl/sql. херовая она альтернатива в плане серьезного перелопачивания данных, если нужно серьезно перелопачивать много данных нужен нормальный, развитый язык 4GL с серьезной интеграцией с субд.Для серьезного перелопачивания как альтернативу я каждый раз "выпячиваю" SQL PL, и все еще не очень понимаю чем именно для этого он принципиально хуже. Скажу больше - перелопачивать куда эффективнее самим SQL. И что-то внешнее отн. СУБД куда лучше по возможности делать из UDF, вызывая их из SQL, не нагружая сервер своими представлениями о процедурах перелопачивания. И только если получается криво - в SP на Java, и только для "внешних" действий. Но тема топика - именно SP. Yo.!а жаву, если уж и использовать, то как полноценное ООП (в виде 3-tier), а не процедуры на жаве лабать.Заметьте, не я это предложил! (с) ;) И я полностью согласен, но в рамках данного разговора считал оффтопиком, имеющим отношение к проектированию. У нас, как правило, SP и table UDF на SQL PL используются для изоляции разработчиков на всяком PHP и т.д. от не вполне понятного им SQL, т.е. для абстрагирования и разделения задач. А внутри SP - в основном запросы, без всякой надобности в "универсальном" 4GL. Так что да - в 3-tier оно лучше, но в Oracle по поводу Java SP все-таки тоже зачем-то заморочились. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2009, 18:02 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Favn, не пойму в чем смысл отрицать столь очевидное ? честно говоря мне не интересно обсуждать чья жава более тормознутая, но факты очевидны - оракл переколбасил жава, как в плане архитектуры (ту же стратегию гарбадж коллектора) так и в плане структур памяти (вот ссылка о jvm в SGA/PGA) . IBM же так заморачиваться не стал и гоняет обычную жаву, любую, хоть сановскую, ограничившись слегка подпиленными драйверами. если вы на полном серьезе считаете, что подпиленные драйвера, будь они хоть трижды более нативны дают основание считать что такая интеграция не менее тесна чем оракловая то аргументированный разговор у нас не получится. далее по драйверам IBM, в том самом "driver for JDBC and SQLJ type 2" , точно та же жава прослойка "Drivers that are written partly in the Java™ programming language and partly in native code.", которая на OCI нифига не похожа. с чего вы взяли, что для sqlj в db2 используется что то другое, более нативное чем jdbc для меня так и осталось загадкой учитывая, что в доку четко сказано "The SQLJ runtime relies on a JDBC driver to obtain a database connection in order to access the database.". про бинд переменные в оракловой жаве однозначно не нашел (потому и не утверждал), но по косвенным признакам выглядит, что переменные гоняются от jvm к sql движку растрачивая ресурсы. ЗЫ. если вам хватает усеченного языка для полноценного реализации логики в SP я не спорю, просто лично я предпочел бы иметь полноценный универсальный язык усеченному, раз уж я решил писать SP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2009, 20:10 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Actually there are 2 types of DBA now: 1. Regular DBA (storage, backups, user creation, etc...) 2. Application DBA (query optimization for already developed code) Regarding original question: average time sp execution 2 times faster than embedded sql or api. though as already mentioned if query plan is obsolete than it might be vise versa. Relational model is beautiful and based on more or less strong mathematics. OOP is just method to create better program code, do not see so far much mathematics there. ORM things, LINQ does not work well. I would prefer to have more table oriented languages on client like Oracle Forms, APEX, etc..., which would allow to create user interface much faster then OOP does + good report writer (Oracle Report, Crystal) + powerful server SQL language (PL/SQL is better than T-SQL , but anyway there is absolutely no need in Java or VB on db server) - that' s all you need to create so-called business application. SQL is progressing. New features, aggregate functions (Oracle, Sybase Anywhere). Interesting idea now - convert everything (like linear programming algorithms, graph algorithms, etc..) to SQL (PL/SQL,T-SQL). If you need references I could give you "ih vam". Sorry for English, Russian Virtual keyboard stopped working - msg about Compuserve ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2009, 01:13 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
ZhoraЧто касается оригинального вопроса: среднее время исполнения Sp в 2 раза быстрее, чем у динамического (?) SQL или API. хотя, как уже упоминалось, если план запроса является устаревшим, то может быть обратная ситуация. Реляционная модель красивая и, более или менее, сильнее математически обоснована. ООП просто метод для создания лучшего программного кода, но не ищите здесь математической подоплеки. ORM-ы, LINQ не являются образцом хорошей работы. Я предпочел бы такие инструменты как Oracle Forms, APEX, и т.д. .., которые позволили бы быстро создать пользовательский интерфейс + хороший дизайнер отчетов (Oracle Reports, Crystal) + мощный серверный язык SQL (PL / SQL лучше, чем T-SQL, но, в любом случае, нет абсолютно никакой необходимости в Java или VB на сервере БД) - вот и все вам нужно для создания, так называемых, бизнес-приложений. SQL развивается. Появляются новые функции, такие как аналитические (?) функции (Oracle, Sybase Anywhere). Интересная идея в настоящее время - конвертировать все (методы линейного программирования, графовые алгоритмы и т.д..) в SQL (PL / SQL, T-SQL). имхо, сложный алгоритмический язык позволяет отключить мозговую "декомпозцию" для разложения алгоритма на примитивы, не все это могут. Поэтому и востребовано. Хотя,... есть задачи, для решения которых действительно возможностей SQL может не хватать. Но это чистая системщина, типа генерации уникальных ключей определенного формата и т.п. Не царское (SQL) это дело подобными вещами заниматься ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2009, 01:44 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
2 Zhora Actually there are 2 types of DBA now: 1. Regular DBA (storage, backups, user creation, etc...) 2. Application DBA (query optimization for already developed code) Второй упомянутый тип - это не DBA, а DBO (датабейз оптимайзер), младший брат SEO, внук администратора всея Руси ака локи :) Regarding original question: average time sp execution 2 times faster than embedded sql or api. Почему в 2? Почему не в 3? Почему не в 10? Для каких СУБД? Для каких БД? Для каких ХП? Цифра с потолка, в общем. Для красного словца. К действительности не имеет отношения. ORM things, LINQ does not work well. Поподробнее можно? SQL is progressing. Ага. SQL is progressing. А его продедурные расширения стоят где стояли. Открываю BOL, читаю чего нового придумали в T-SQL в 2008-ой версии. Если отфильтровать DML (безусловно-развивающийся) и нейтральные мелочи типа "Улучшенная функция CONVERT допускает преобразования между двоичными и символьными шестнадцатеричными значениями", то останется могучий улучшайзинг. Не могу не процитировать его из BOL: Улучшенные способы программирования (компонент Database Engine)Доступны операторы, выполняющие операцию и присваивающие ее результат некоторой переменной, например SET @x += 2 Фсё. За три года разродились. Как с таким "sql is progressing" могут приходить в голову мысли типа "convert everything (like linear programming algorithms, graph algorithms, etc..) to SQL (PL/SQL,T-SQL)" - чесслово, понять не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2009, 02:21 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.!не пойму в чем смысл отрицать столь очевидное? честно говоря мне не интересно обсуждать чья жава более тормознутаяВ том, что "очевидное" часто оказывается просто PR бредом, у любого вендора. И мне просто интересно разобраться в действительных механизмах работы. А вот чья тормознутее - мне тоже не интересно. И Оракл, и IBM утверждают, что их JVM куда круче остальных, так что скорее всего примерно одинаково. :) Намеки же на общую тормознутость жабы при наличии JIT и inline в runtime я рассматривать не буду. Все-таки не о GUI разговариваем. Yo.!но факты очевидны - оракл переколбасил жава, как в плане архитектуры (ту же стратегию гарбадж коллектора) так и в плане структур памяти (вот ссылка о jvm в SGA/PGA) .Вот мерси, наконец-то информативная ссылка. Если я правильно ее осознал, то вся немерянная мощь переколбашивания заключается (для shared server) в выделении внутри SGA фиксированного Java pool memory, с которой и живет JVM. Особенно впечатлило: "Because the Java pool memory size is fixed, you must estimate the total requirement for your applications and multiply by the number of concurrent sessions the applications want to create, to calculate the total amount of necessary Java pool memory. Each UGA grows and shrinks as necessary. However, all UGAs combined must be able to fit within the entire fixed Java pool space." Делаю выводы: 1. Pool задается статически, без перебалансировки, т.е. его надо задавать с большим запасом и мириться с не оптимальным расходом на него памяти. Великолепная интеграция! :) 2. Понятно, что мусорщика переписали - раз память в SGA, ей и управлять надо с подачи Оракл СУБД, который этой SGA заведует. Мера вынужденная, и преимуществ тут не наблюдаю, т.к. pool все равно отдельный от всего остального. Yo.!IBM же так заморачиваться не стал и гоняет обычную жаву, любую, хоть сановскую, ограничившись слегка подпиленными драйверами. если вы на полном серьезе считаете, что подпиленные драйвера, будь они хоть трижды более нативны дают основание считать что такая интеграция не менее тесна чем оракловая то аргументированный разговор у нас не получится.Я на полном серьезе со ссылками показал, что Oracle JVM с БД работает ровно так же, как и IBM JVM, с теми же 3-мя вариантами драйверов, за исключением SQLJ. Я не говорил, что кто-то более нативен, я говорил, что все одинаково. Вопросы управления памятью, как выяснилось, к интерфейсу с СУБД отношения не имеют. Я так и не понял, почему именно "встроенная" Java является достоинством - может, просто не нашел. :) А вот недостатком в бюджетных лицензиях она может быть, т.к. тратит лицензируемые ресурсы. Да и в XE не входит. Yo.!далее по драйверам IBM, в том самом "driver for JDBC and SQLJ type 2" , точно та же жава прослойка "Drivers that are written partly in the Java™ programming language and partly in native code.", которая на OCI нифига не похожа.Естественно, на Oracle OCI похожа DB2 CLI, а не Java-прослойка. "The JDBC OCI driver accesses Oracle-specific native code". Именно "accesses" через JNI, и в Оракл (OCI), и в DB2 (CLI). Еще раз - Java-часть тут просто прокси к OCI/CLI, для обеих СУБД. А написать "нативный" драйвер на Java без самой Java возможности нет, т.к. собственно JNI - это тоже часть Java, как и стандартная описательная часть классов JDBC. :) Yo.!с чего вы взяли, что для sqlj в db2 используется что то другое, более нативное чем jdbc для меня так и осталось загадкой учитывая, что в доку четко сказано "The SQLJ runtime relies on a JDBC driver to obtain a database connection in order to access the database."Устал, но повторю - получить контекст коннекта от JDBC не значит использовать JDBC для собственно работы с данными, это просто стандартный для Java способ коннекта. Аналогично программа (SP) с embedded SQL на C может использовать коннект от CLI , не используя CLI собственно для работы (если не надо). Цитата : "You can use one of six techniques to connect to a data source in an SQLJ program. Two use the JDBC DriverManager interface, two use the JDBC DataSource interface, one uses a previously created connection context, and one uses the default connection." SQLJ не интересно, какой был коннект, он просто работает с его контекстом. По поводу "более нативное чем jdbc" - посмотрите, скажем, Figure 2. Expansion of application layer . Видно, что SQLJ runtime работает не только мимо JDBC, но и мимо CLI, как и положено embedded SQL в DB2. Принципиальная разница с Оракл в том, что при прекомпиляции не только проверяется синтаксис и связи, но в БД создается спец. объект - embedded SQL package , аналогов которому в Оракл нет. И если стандартный Java-пакет sqlj.runtime в Оракл дергает JDBC для выполнения SQL, в DB2 он просто обращается к выполнению определенного запроса внутри package, ничего не зная о собственно SQL этого запроса, минуя кучу стадий синт. разбора, переформулирования и, по умолчанию, оптимизации с построением плана. Фактически это прямой вызов готового плана выполнения, а не собственно запроса SQL. Yo.!про бинд переменные в оракловой жаве однозначно не нашел (потому и не утверждал), но по косвенным признакам выглядит, что переменные гоняются от jvm к sql движку растрачивая ресурсы.Что еще раз показывает одинаковую работу JVM с БД что в Оракл, что в DB2. Yo.!ЗЫ. если вам хватает усеченного языка для полноценного реализации логики в SP я не спорю, просто лично я предпочел бы иметь полноценный универсальный язык усеченному, раз уж я решил писать SP.Полостью согласен - вопрос вкуса. Для обработки данных я предпочитаю язык, код которого выполняется непостредственно SQL движком, а то и inline поставляется в текст запроса, а не живет на отдельной VM, как PL/SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2009, 18:43 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Сравнили меня к SEO, да еще и обозвали "младшим братом". А я и огрызнутся не успел ------------------------- There’s no silver bullet! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2009, 19:05 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Favn И мне просто интересно разобраться в действительных механизмах работы. ... Если я правильно ее осознал, то вся немерянная мощь переколбашивания заключается (для shared server) в выделении внутри SGA фиксированного Java pool memory, с которой и живет JVM. не правильно поняли. shared server на то и эксзотика, чтоб все запихнуть в SGA, читайте внимательней о Dedicated варианте. структуры памяти жавы переколбасили по образу и подобию pl/sql, ну и раз уж вам "интересно разобраться" - ну почитайте, там не так много. реально в оракловой jvm переколбашено все, включая тхредовость. Favn Особенно впечатлило: "Because the Java pool memory size is fixed, you must estimate the total requirement for your applications and multiply by the number of concurrent sessions the applications want to create, to calculate the total amount of necessary Java pool memory. Each UGA grows and shrinks as necessary. However, all UGAs combined must be able to fit within the entire fixed Java pool space." было бы удивительно если бы жаве позволялось сожрать всю память и вырубить всю систему. причем опять же, поскольку жава пул интегрирован в SGA на него распространяется automatic memory management, который будет тюнить жабовские пулы в том числе. т.е. если вы вынуждены прописывать жестко JAVA_OPTS=" -Xmx800M", то оракл сможет "predict how changes in the size of the Java pool can affect the parse rate" FavnМера вынужденная, и преимуществ тут не наблюдаю, т.к. pool все равно отдельный от всего остального. читайте внимательней, преимущества переколбашеного сбора мусора там расписаны. Favn Я так и не понял, почему именно "встроенная" Java является достоинством - может, просто не нашел. :) про достоинства имхо рано, давайте сначала с этим вопросом доразберемся: Favn Что значит "интегрирована"? Как я понимаю, у Оракл просто есть своя имплементация JVM, поставляемая с СУБД. Но у IBM тоже своя JVM и свой Java SDK, тоже поставляемые с DB2 и работающие с ней. Куда "интегрированней"? в этот раз я убедил, что есть куда ? Favnпосмотрите, скажем, Figure 2. Expansion of application layer . Видно, что SQLJ runtime работает не только мимо JDBC, но и мимо CLI, как и положено embedded SQL в DB2. ну не знаю, я вижу на рисунке ровно противоположное. то что java процедуры работают через sqlj/jdbc type2 драйвер, а не universal jdbc драйвер это и коню ясно, а вот то что из sqlj выходит только одна стрелка говорит о том, что нет никакой разницы в использовании jdbc и sqlj в sqlj процедурах. это единый драйвер, единый механизм общения с субд, именно это и показано на рисунке. Favn Принципиальная разница с Оракл в том, что при прекомпиляции не только проверяется синтаксис и связи, но в БД создается спец. объект да нет никакой принципиальной разницы с прекомпилерами оракла аля PRO*CABOL из 80х ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2009, 14:44 |
|
||
|
|

start [/forum/topic.php?all=1&fid=35&tid=1552871]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
405ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 503ms |

| 0 / 0 |
