|
|
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
сосед-акцессник PS Сегодня обнаружил, что практически та же по содержанию тема одномоментно обсуждается в форуме "Разработка информационных систем". Занятно. эгрегор и может быть наверно и на других живых форумах по СУБД (в том числе ангельско-язычных тоже) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2010, 11:32 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
DPH3 Да любой :) Тесты на весь DL, как обязательная часть тестирования версии никем не отменялись. не совсем понял, а чем тесты помогут ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. Павел-ПDPH3, Если бы все проблемы в жизни решались только административными мерами - то все приложения работали без ошибок и как надо. Написал бумажку "Приложения должны работать правильно" - и все. :-) тут мне осталось лишь добавить, что тесты к тому же не фича языка 2сосед-акцессник вы бы хотя бы базовые вещи изучили бы что-ли ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2010, 13:45 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
Alexander Ryndin, А вы проведите тест. Сгенерируйте огромное количество данных. И выполняйте свой запрос под большой нагрузкой. Вот и получите ответ. Исходя из ваших аргументов - хранимые процедуры это зло. Ими вообще пользоваться не стоит. А вдруг они вообще работать откажутся в движке СУБД. Поэтому будем пользоваться обычными запросами. А то что запрос на сервере надо скомплировать - это никаких ресурсов не требует (об этом мы умалчиваем). А вы знаете иногда оптимизатор неверно строит план запроса и для обычных запросов. Может и их запретить стоит. Вы знаете иногда и пешеход обгоняет машину, если в первой бензин закончился. Теперь сделаем вывод, что пешеходы ходят быстрее чем машины. Вообще-то очень жаль, что обычная дискуссия перерастает в выяснение отношений кто круче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2010, 19:09 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
Yo.! не совсем понял, а чем тесты помогут ? Тем, что при изменении структуры БД, если какие-либо ошибки будут внесены, то при тестировании они все и вылезут. В конкретном примере - на первом же инсерте в изменившуюся таблицу, т.е. еще на фазе юниттестов, даже не интеграционном. А так как тесты все равно нужно писать - что для хранимок, что для отдельных запросов - то особого смысла в проверках на уровне БД (для указанных сценариев) - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2010, 20:51 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
Павел-П, эм... а я то тут при чем? ;)) мое мнение - хранимые процедуры отлично решают определенные задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2010, 21:40 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
DPH3 Тем, что при изменении структуры БД, если какие-либо ошибки будут внесены, то при тестировании они все и вылезут. В конкретном примере - на первом же инсерте в изменившуюся таблицу, т.е. еще на фазе юниттестов, даже не интеграционном. ну ясно. об том собственно и речь, что язык апп-сервера (в отличие от языка хп) чего-то там контролировать не способен и одного дата лаера не помогут, только регресивное тестирование со всеми вытекающими. в ветке проектирования примерно такой-же срачь, там правда напирают на некие мифические апп-сервера с интер-транзакционным кешами которые прекрасно масштабируются. что за за чудесные такие сервера пока выпытать не удалось, но у себя заметил такую вещь: ООП по большому счету процедурное программирование и жава программеры (подавляющее большинство) не умеют мыслить множествами. если жава-архитек еще как-то основные вещи правильно делает, то второстепенные моменты системы обычные жава-лабатели делают стандартно - в цикле взял объект->поковырял->положил в зад. в результате хибер, который сам по себе страшненький sql генерит, но еще с таким подходом тупо долбит в цикле запросами. и получается хрень когда задачу которую решал один старенький сервер бд с pl/sql после перехода на апп-сервер + хибер уже сервер субд без логики уже не справляется. не потому что пл-скл столь чудесен, а просто потому что в отличае от программеров хп для жава программеров субд черный ящик и они не привыкли мыслить множествами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2010, 21:45 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
Yo.! язык апп-сервера (в отличие от языка хп) чего-то там контролировать не способен И это говорит апологет сервера, в котором есть понятие "инвалидные объекты"... Суровый такой контроль: если процедура перестала работать, значит кто-то изменил метаданные. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2010, 22:00 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
Yo.! ну ясно. об том собственно и речь, что язык апп-сервера (в отличие от языка хп) чего-то там контролировать не способен и одного дата лаера не помогут, только регресивное тестирование со всеми вытекающими. Хм. Ты читаешь то, что написано или то, что хочешь? Внутри любого современного универсального языка (т.е. статический контроль типов и управляемая память) контроль над кодом на порядки выше, чем в всяких SQLподелках - еще на этапе компиляции. Другое дело, что если у нас весь SQL код внутри application layer, то средствами языка контролировать соответствие этого кода и структуры БД - невозможно (вернее, неудобно, сделать то можно) - вот и приходится рассчитывать или на юнит-тестирование или на функциональные тесты. Но так как и то, и другое все равно нужно - что для хранимых процедур, что для сервера приложений, разницы в уровне качества контроля - не будет. В голову закрадывается страшная мысль - может, ты изменения в хранимых процедурах вообще не тестируешь, рассчитываешь только на контроль со стороны Oracle? И, кстати, есть какой-нибудь аналог junit для хранимых процедур? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 00:13 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov И это говорит апологет сервера, в котором есть понятие "инвалидные объекты"... Суровый такой контроль: если процедура перестала работать, значит кто-то изменил метаданные. вообще-то это и есть основная вещь из этого контроля, т.е. язык имеет механизм защиты от запуска кривого кода, зачатки подобного механизма уже появляются и жава фреймворках. DPH3 чем в всяких SQLподелках - еще на этапе компиляции. задело что-ли ? да ладно, чего тут обижаться как мальчик которому открыли глаза на историю с дедом морозом. давай, утри сопли и попробуй DPH3Внутри любого современного универсального языка (т.е. статический контроль типов и управляемая память) контроль над кодом на порядки выше выдать вместо эмоций хоть что-то техническое. что по твоему в языке жава в плане контроля на порядок выше pl/sql ? DPH3 ты изменения в хранимых процедурах вообще не тестируешь, рассчитываешь только на контроль со стороны Oracle? нет. DPH3 И, кстати, есть какой-нибудь аналог junit для хранимых процедур? ну а сам то как думаешь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 03:34 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
2 Павел-П А вы проведите тест. Сгенерируйте огромное количество данных. И выполняйте свой запрос под большой нагрузкой. Вот и получите ответ. Да мне то нахрена это надо? Я и так знаю, что получится в итоге. Вот Вы можете попробовать сотворить в нулевом приближении ебайную эмуляцию. Сервер БД, веб-сервер, страничка. В первом варианте со страницы уходит простой селект. Во втором варианте со страницы уходит обращение к хранимке, содержащей тот же самый простой селект. Попробуйте заметить разницу во времени. Может хоть после этого эксперимента перестанете по форумам мудачества писать на тему "затрат ресурсов на компиляцию хп". Исходя из ваших аргументов - хранимые процедуры это зло. Нет. Я далёк от мысли демонизировать хранимки. Но я их и не идеализирую. В отличие от многих здешних участников, которым даже лежащее на поверхности утверждение о том, что ХП могут быть медленнее, требуется в рот положить да расжевывать. Настолько они готовы на хранимки молиться, что им даже в голову не приходит, что там может быть что-то медленно и/или что-то плохо. Ими вообще пользоваться не стоит. А вдруг они вообще работать откажутся в движке СУБД. Вам - возможно и не стоит пользоваться. Тем более если они у Вас "вдруг" перестают работать. Поэтому будем пользоваться обычными запросами. Дык и до написания запросов не факт что Вас стоит допускать. Use ORM. А то что запрос на сервере надо скомплировать - это никаких ресурсов не требует (об этом мы умалчиваем). Да нет, не умалчиваем. Вон, условия для эксперимента я чуть выше нарисовал. Дерзайте. BTW, сервер БД предназначен для того, чтобы запросы исполнять. И если для простых запросов (а сложным запросам в ебайно-подобных приложениях взяться просто неоткуда) составление плана их исполнения вызывает какие-то существенные затруднения - то это есть веский повод задуматься. А вы знаете иногда оптимизатор неверно строит план запроса и для обычных запросов. В этом случае, как я думаю, хранимые процедуры опять таки не будут иметь преимущества. У них будет точно такой же неверный план запроса. Так что Ваше "хранимые процедуры никогда не уступят в производительности" не становится менее ложным только от того, что оптимизатор может ошибиться. Вообще-то очень жаль, что обычная дискуссия перерастает в выяснение отношений кто круче. Вы пришли на форум. Не удосужились даже прочитать сходные темы (вон, использование хранимых процедур на первой странице этого подфорума болтается, там вопросы планов исполнения уже обсуждались) Выдали неверное утверждение, основанное на полнейшем непонимании. Попросили, чтобы Вам объяснили элементарные вещи, которых Вы не понимаете. Вам объяснили элементарные вещи. И теперь Вы говорите, что дескать "выяснение отношений кто круче"? Ну так не ходите сюда. Тут взрослые дяди письками меряются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 04:45 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
2 Yo.! допустим были table1.a и table2.a интами, поглотили конкурента пришлось table1.a на варчар поменять. в хп субд проблему обнаружит, а как тесты DL узнают о связи table1.a с table2.a и отловят проблему ? Если кто-то, выражаясь соседским языком, ёбнут на своей гордости от умения выписывать data access layer, то ему не составит труда написать валидацию схемы. Если же нет желания велосипеды изобретать, то существуют нормальные ОРМ. Есть маппер, у него внутре думатель и неонка. Если думатель не смог корректно отмапить, то загорается неонка. Билд проекта не пройдет. Какие ты тут мировые проблемы увидел - загадка. --------------------------------- 2 DPH3 В голову закрадывается страшная мысль - может, ты изменения в хранимых процедурах вообще не тестируешь, рассчитываешь только на контроль со стороны Oracle? И, кстати, есть какой-нибудь аналог junit для хранимых процедур? О чём ты, товарисч? Истину говорю, они застряли на этапе квик-бейсика для мс-дос. То, что в самых продвинутых СУБД иногда не компилируется некомпилируемое - уже воспринимается как божье откровение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 04:58 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
Yo.! ... 2сосед-акцессник вы бы хотя бы базовые вещи изучили бы что-ли ... и вам - не болеть! Yo.! Код: plaintext 1. 2. 3. 4. 5. 6. 7. в этом примере - в точности так же, как ее "обнаружат" ваши xp - возвратом ошибки времени выполнения. Извините за ответ на не мне заданный вопрос. удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 10:08 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
Yo, забейте вы, дело не благодарное объяснять людям технологии, которые они не хотят изучать и понимать. Деградация разъедает IT страшной силой и с этим что-то сложно поделать. Самое правильное - вообще не подпускать к СУБД людей без знания SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 11:02 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
Yo.! вообще-то это и есть основная вещь из этого контроля, т.е. язык имеет механизм защиты от запуска кривого кода Что автоматически означает, что сервер не имеет защиты от разрушения целостности метаданных, а при создании хранимых процедур и триггеров не осуществляется даже их проверка на синтаксис языка. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 12:58 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
ЛП О чём ты, товарисч? Истину говорю, они застряли на этапе квик-бейсика для мс-дос. То, что в самых продвинутых СУБД иногда не компилируется некомпилируемое - уже воспринимается как божье откровение. Ну, с точки зрения развития языка и средств разработки - то да, все эти /SQL - страшное убожество. Но я сам дофига писал SQL кода (и вообще был большим сторонником хранимых процедур при разработке двухзвенок) - и вполне себе и юниттесты делал, и функциональные, и шаблоны проектирования формулировал и использовал - язык этому, в общем, не мешает, дело то в головах обычно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 17:39 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Что автоматически означает, что сервер не имеет защиты от разрушения целостности метаданных, а при создании хранимых процедур и триггеров не осуществляется даже их проверка на синтаксис языка. который сервер ? апп-сервер тригера и зп не создает, а сервер субд как имеет защиту от разрушения методанных и проверку синтаксиса. в дб2 правда это обычно внешний прибомбас, но примерно ту же функцию выполняет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 17:48 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
Yo.!который сервер ? Оракул с лёгкостью позволит убить поле или всю таблицу, на которую ссылается ХП. Это называется "защитой от разрушения метаданных"? Он же позволит создать ХП у которой внутри всего одно слово да и то матерное. Это называется проверкой синтаксиса? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 18:48 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
Yo.!в дб2 правда это обычно внешний прибомбас, но примерно ту же функцию выполняет. "Внешний" он только для внешних языков вроде C и Java. Для встроенных SQL PL (и PL/SQL :) ) он вполне себе внутренний. ЗЫ (off). Если интересно, недавно натолкнулся на статейку, где сказано, что в DB2 9.7 SQL PL и PL/SQL компилячатся в общий байт-код, т.е. их совместная поддержка - это просто разные компиляторы, результат одинаковый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 14:20 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
2DPH3 так что там у нас с контролем "современного универсального языка" ? есть шансы услышать, что-то кроме эмоций или громкое DPH3 Внутри любого современного универсального языка (т.е. статический контроль типов и управляемая память) контроль над кодом на порядки выше, чем в всяких SQLподелках - еще на этапе компиляции. так и останется громкой газификацией лужи ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 21:39 |
|
||
|
Высоконагруженные проекты и запросы
|
|||
|---|---|---|---|
|
#18+
Yo.!... есть шансы услышать, что-то кроме эмоций... Это Вы с перепою, или от натуги над собственным знанием хотите услышать что-то вразумительное? При условии, что сами ничего вразумительного не произносите? ( надеюсь, собственные пожелания читателям вы сами за "вразумительное" не принимаете) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 22:46 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=36404237&tid=1552847]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 369ms |

| 0 / 0 |
