|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Скажите, пожалуйста, в чем плюсы и минусы хранимых процедур? В каких проектах их стоит использовать, а в каких не стоит? Или дайте ссылку, где про это можно почитать. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2009, 10:43 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Стас Агарков, ХП 1 -Быстрее 2 -Позволяют разграничивать доступ , по хорошему пользователю разрешен только его набор ХП... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2009, 11:43 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Стас АгарковСкажите, пожалуйста, в чем плюсы и минусы хранимых процедур? В каких проектах их стоит использовать, а в каких не стоит? Или дайте ссылку, где про это можно почитать. Преимущества такие же как и в языках программирования. Если необходимо с sql работать напрямую, то зачем отправлять к СУБД огромные sql-запросы если проще заранее формализовать логику работы с БД и вызывать уже готовую ХП? Плюс, если другое ПО будет работать с БД (что тасто бывает), без ХП они там хрен разберутся в наборе таблиц. Но если использовать EF или NH, то в принципе можно и обойтись логикой в программе, мне кажется. Хотя и не всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2009, 12:26 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
dvimСтас Агарков, ХП 1 -Быстрее 2 -Позволяют разграничивать доступ , по хорошему пользователю разрешен только его набор ХП... Быстрее чем что? SQL запрос всё равно придётся выполнять. И доступ к данным разграничивается на уровне таблиц и даже записей без ХП. ХП выполнются на сервере БД. Поэтому ХП полезно использовать в задачах, которые "плотно" работают с БД, чтобы исключить сетевой обмен данными. ХП позволяют централизовать логику управления записями БД в одном защищённом месте - на сервере. ХП упрощают разработку программ на языках 3го поколения, когда программисты плохо знают SQL и тем более особенности его реализации на конкретной СУБД. На SQL невозможно решать ряд задач. ХП позволяют расширять возможности СУБД и SQL. Из минусов, могу назвать трудности с adhoc запросами. ХП тоже нужно писать. Т.е. к коду самого SQL запроса добавляется ещё код ХП, который нужно писать, отлаживать и сопровождать. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2009, 14:18 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
А мне захотелось про недостатки: ХП зависят от типа и версии СУБД, что практически исключает портирумость проекта при переносе проекта кроме переноса кода, который может сделать малоквалифицированный специалист, требуется выполнить настройки БД, которые под силу только профессионалу создание ХП требуют наличия необходимых для этого привилегий использование ХП усложняет поддержку и развитие проекта за счет переноса части бизнес логики в СУБД, что усложняет архитектуру приложения языки на которых пишут ХП, зачастую уступают по возможностям "нормальным" языкам программирования при выполнении кода в ХП сложнее или невозможно лимитировать потребляемые ресурсы ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2009, 15:28 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov, >>ХП зависят от типа и версии СУБД, что практически исключает портирумость проекта +1. От версии СУБД зависимость не сильная. Хотя бывали проблемы с тем, что после обновления СУБД часть ХП разваливалась. >>при переносе проекта кроме переноса кода, который может сделать малоквалифицированный специалист, требуется выполнить настройки БД, которые под силу только профессионалу Несогласен. Портирование на новую СУБД это всегда сложная задача. ХП скорее упрощают её, потому что логикой транзакций БД занимаются специалисты. В свою очередь разработчики клиентских приложений зачастую слабо знают СУБД и не могут квалифицированно оптимизировать транзакции БД прошитые в коде прилоджения. >>создание ХП требуют наличия необходимых для этого привилегий неоднозначное утверждение. я не считаю хорошей практикой разрешать изменение БД кому попало. Так что это скорее достоинство ХП. >>использование ХП усложняет поддержку и развитие проекта за счет переноса части бизнес логики в СУБД, что усложняет архитектуру приложения +1. Плохо документированные ХП осложняют их использование в приложениях БД. С другой стороны перенос приложений на новый framework при наличии ХП упрощается, поскольку код транзакций БД не меняется. В общем нужно внимательно относиться к организации процеса разработки. >>языки на которых пишут ХП, зачастую уступают по возможностям "нормальным" языкам программирования +1. Есть такое дело. Не всякие сложные вычисления можно эффективно закодировать на языке ХП. Но прогресс в этом направлении есть. В частности некоторые СУБД поддерживют компиляцию ХП или написание ХП на языках 3го поколения. >>при выполнении кода в ХП сложнее или невозможно лимитировать потребляемые ресурсы несогласен. ХП пишут так, чтобы рационально использовать ресурсы системы. Возможности лимитирования наверное звисят от конкретной СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2009, 17:07 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
mcureenab >>ХП зависят от типа и версии СУБД, что практически исключает портирумость проекта +1. От версии СУБД зависимость не сильная. Хотя бывали проблемы с тем, что после обновления СУБД часть ХП разваливалась. - Вы какую-то конкретную СУБД имеете в виду? Если, как Вы говорите, "часть ХП разваливалась" - это разве не зависимость от версии (про тип понятно - переносимость нулевая)? mcureenab >>при переносе проекта кроме переноса кода, который может сделать малоквалифицированный специалист, требуется выполнить настройки БД, которые под силу только профессионалу Несогласен. Портирование на новую СУБД это всегда сложная задача. ХП скорее упрощают её, потому что логикой транзакций БД занимаются специалисты. В свою очередь разработчики клиентских приложений зачастую слабо знают СУБД и не могут квалифицированно оптимизировать транзакции БД прошитые в коде прилоджения. - при переносе многих проектов с одной машины на другую (от одного хостера к другому и т. п.) обычно хватает дампа базы. В случае ХП простым дампом обычно не отделаешься. Тезис про разработчиков не понял, так как не ясно какое это имеет отношение к проблемам переноса. mcureenab >>создание ХП требуют наличия необходимых для этого привилегий неоднозначное утверждение. я не считаю хорошей практикой разрешать изменение БД кому попало. Так что это скорее достоинство ХП. - пример из жизни: человек приносит сайт использующий ХП на хостинг и оказывается что ему нужен более дорогой тарифный план чем он предполагал, так как хостер не дает ему привилегий необходимых для создания и исполнения ХП в рамках shared-хостинга. Человеку однозначно придется переплачивать за использование ХП. mcureenab >>использование ХП усложняет поддержку и развитие проекта за счет переноса части бизнес логики в СУБД, что усложняет архитектуру приложения +1. Плохо документированные ХП осложняют их использование в приложениях БД. С другой стороны перенос приложений на новый framework при наличии ХП упрощается, поскольку код транзакций БД не меняется. В общем нужно внимательно относиться к организации процеса разработки. - не хочется дискутировать на эту тему устраивая нудный холивар на тему кто должен хранить данные (по моему СУБД), а кто должен их обрабатывать, т. е. где должна находиться бизнес логика (по моему логику надо писать в приложении на нормальном языке программирования). На дворе 21-век, про трехзвенную архитектуру уже давно все сказано более умными и авторитетными людьми чем я. mcureenab >>языки на которых пишут ХП, зачастую уступают по возможностям "нормальным" языкам программирования +1. Есть такое дело. Не всякие сложные вычисления можно эффективно закодировать на языке ХП. Но прогресс в этом направлении есть. В частности некоторые СУБД поддерживют компиляцию ХП или написание ХП на языках 3го поколения. - ага и собственные файловые системы :) Ждем дискуссии на тему "СУБД vs Операционная Система" mcureenab >>при выполнении кода в ХП сложнее или невозможно лимитировать потребляемые ресурсы несогласен. ХП пишут так, чтобы рационально использовать ресурсы системы. Возможности лимитирования наверное звисят от конкретной СУБД. - прямо все пишут "так, чтобы рационально использовать ресурсы системы"? неужели среди ДБА нет криворуких которые своей ХП положат базу? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2009, 19:02 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Очень много буков, но рекомендую прочитать для прояснения вопроса. Комменты доставляют не хуже статьи. Где наша бизнес-логика, сынок? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2010, 17:25 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
н00бОчень много буков, но рекомендую прочитать для прояснения вопроса. Хоть и очень нудное чтиво, но прочитал. Насчет букв - не обманули. Их действительно много. Часто смешных, как например о том, что хранимая процедура должна работать только с одной таблицей. к тому же автор часто (на протяжении всей статьи) путает tier с layer, хотя определение привел сам же, в самом начале. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2010, 17:51 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
iscrafm Часто смешных, как например о том, что хранимая процедура должна работать только с одной таблицей. Насколько я понял, автор статьи придерживается такой точки зрения, что работа с базой данных должна быть основана исключительно на CRUD-операциях, в данном случае, на мой взгляд, работа с одной таблицей для хранимых процедур - это естественное поведение. Я понял статью в том ключе, что не стоит нагружать базу какими-либо операциями, кроме чтения-записи-изменения, а все действия бизнес-логики проводить в соответствующем архитектурном слое. Грубо говоря, у нас есть сущность "Договор", которой отвечает соответствующая таблица в БД. Так вот, если есть метод бизнес-логики "Добавить согласующих на договор", который заносит данные в дочернюю таблицу "Договор-СогласующийПерсонал", то этот метод должен хотеть от DAL только возможности внести нужные строки в БД, в одну таблицу. Все сопутствующие действия - рассылка оповещений по Email, занесение согласующих в группы AD (я для примера), должны лежать в теле BL-метода наравне с методами DAL. Право же, глупо будет смотреться, когда есть ХП, которая пишет в несколько таблиц, скажем, заносит согласующих и для кадого согласующего в другой таблице выставляет какой-то флга, и _наравне_ с этой ХП есть другая логика. Пример: public void AddAgreementors( Contract con, List<Employee> agrs) { //здесь зовем ХП, которая работает более чем с одной таблицей foreach (var emp in agrs) { AddAgreementorToDB( con.id, emp.id); } //здесь отсылаем оповещение foreach (var emp in agrs) { SendNotification(emp.email); } //здесь добавляем их в группу AD, которая имеет доступ к системе учета договоров foreach (var emp in agrs) { AddToContractsADGroup(emp.login); } } Если ХП в вызове метода AddAgreementorToDB работает с несколькими таблицами, налицо размазывание бизнес-логики по двум лейреам (BL и DAL) и по двум же тиерам (тиер веб-сервера и тиер сервера СУБД). Если я не прав, прошу меня поправить. Мне очень интересен данный вопрос, особенно с учетом другой моей темы , в которую никто не отвечает : - ( . ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2010, 21:19 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov На дворе 21-век, про трехзвенную архитектуру уже давно все сказано более умными и авторитетными людьми чем я. Так речь то об SQL vs ХП. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 02:28 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
н00бПраво же, глупо будет смотреться, когда есть ХП, которая пишет в несколько таблиц, скажем, заносит согласующих и для кадого согласующего в другой таблице выставляет какой-то флга, и _наравне_ с этой ХП есть другая логика. не знаю что у Вас за логика, но запись в несколько таблиц в процедуре - это так же естественно, как и создание нескольких связанных таблиц. н00бМне очень интересен данный вопрос, особенно с учетом другой моей темы , в которую никто не отвечает : - ( . лично мне, периодически возникающие эксперименты с "натягиванием" объектов на реляционную структуру совсем не интересны. Возможно, не только мне. Поэтому и не отвечают. В качестве предположения. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 10:17 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov - при переносе многих проектов с одной машины на другую (от одного хостера к другому и т. п.) обычно хватает дампа базы. В случае ХП простым дампом обычно не отделаешься. Тезис про разработчиков не понял, так как не ясно какое это имеет отношение к проблемам переноса. под простым дампом как я понял почему-то sql дамп подразумивается ? перенос хп не добавит особых проблем к итак существующим, т.к. все равно придется переносить спец утилитами, которые перенесут в том исле и хп. переносить руками глупо т.к. необходимо будет ручками переколбасить типы данных, автоинкрементные->сиквенсы и многое другое. а так утилита и sql диалект подправит, в случае sql дампа придется это руками делать, что опять же не интересно. Kachalov - пример из жизни: человек приносит сайт использующий ХП на хостинг и оказывается что ему нужен более дорогой тарифный план чем он предполагал, так как хостер не дает ему привилегий необходимых для создания и исполнения ХП в рамках shared-хостинга. Человеку однозначно придется переплачивать за использование ХП. странная логика, если если идет о логике, то же это за приложение с логикой что рассматривается вариант хостить на хостинге, да еще и таком левом ? единственное объяснение столь странного поведения хостера - криво установленая субд, а не возможность выдать права побочный эффект кривизны. тут не прозвучало, но имхо оторванную от субд логику просто слишком сложно супортить. когда логика в субд потребуется я гораздо меньше кода, меньше вариантов ошибок в нем и главное субд способна отслеживать зависимости в коде (оракл, дб2). субд самостоятельно пометит инвалидные процедуры и не позволит их запустить. кроме этого более оптимально используются ресурсы, не нужно гонять гигабайты данных для обработки на апп-сервер/клиент. KachalovНа дворе 21-век, про трехзвенную архитектуру уже давно все сказано более умными и авторитетными людьми чем я. по моему вы так и не поняли о чем они говорили ... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 14:25 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
KachalovНа дворе 21-век, про трехзвенную архитектуру уже давно все сказано более умными и авторитетными людьми чем я. на SQL.RU они высказывались? Можете дать ссылку, где с примерами дана реализация 3-х звенки, которая не вызовет критики со стороны 2-х звенщиков и заявлениями, что это они сделают и без добавления лишнего звена. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 16:06 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Оглянитесь шире. Трехзвенок полно, практически все крупные информационные системы. А сделать что-то, но в клиент серверной архитектуре,ну наверное можно и что это доказывает? По сабжу: для себя выбрал вариант без ХП (точнее ХП есть, но не на каждый класс. Только вспомогательные вещи, например расчет остатков). Причины:поддержка продуктом нескольких субд, трехзвенка со встроенным в сервер приложений ORM, встроенный дизайнер классов - пользователь может сам добавить атрибуты (в варианте с ХП их пришлось бы как-то менять). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 17:45 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
2-х звенщикМожете дать ссылку - можете объяснить зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 19:44 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov2-х звенщикМожете дать ссылку - можете объяснить зачем? Да так хочеться повидать живой пример преимущества n-звенок, а то в своё время холивар шел правда в 2 раза меньший, чем про TJ7. И его модераторы тоже прикрыли за отсутствием споров по существу. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 20:09 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
2-х звенщик на SQL.RU они высказывались? Можете дать ссылку, где с примерами дана реализация 3-х звенки, которая не вызовет критики со стороны 2-х звенщиков и заявлениями, что это они сделают и без добавления лишнего звена. че-то тут поголовно все путают теплое с мягким. 3-tier совершенно не запрещает помещение бизнес логики в хп ... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 20:26 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.!че-то тут поголовно все путают теплое с мягким. 3-tier совершенно не запрещает помещение бизнес логики в хп ... - не запрещает, но тогда вопрос "зачем" начинает звучать более остро ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 20:35 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.! 3-tier совершенно не запрещает помещение бизнес логики в хп ... А это нигде и не утверждалось. И вообще мы уклоняемся от темы, в ней ничего не спрашивалось об n-звенках. Просто про них зашла речь, вот и не удержался ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 20:41 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
2-х звенщикYo.! 3-tier совершенно не запрещает помещение бизнес логики в хп ... А это нигде и не утверждалось. И вообще мы уклоняемся от темы, в ней ничего не спрашивалось об n-звенках. Просто про них зашла речь, вот и не удержался нужно себя держать в руках, стараться. К чему бесполезные споры. Нравится с файлами, почтой или обрудованием работать из СУБД - работайте. Свобода выбора! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 21:01 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov - не запрещает, но тогда вопрос "зачем" начинает звучать более остро (С) анекдот- оператор, до меня не доходят смс сообщения ! - ну это ... прочтите их еще раз ... повторяю: логика в хп дает более оптимальное использование ресурсов, более надежный код отслеживаемый средствами субд, гораздо менее многословный язык (меньше кода, меньше ошибок) iscrafm нужно себя держать в руках, стараться. К чему бесполезные споры. Нравится с файлами, почтой или обрудованием работать из СУБД - работайте. Свобода выбора! ну если вы привыкли к забиванию гвоздей микроскопом то выбирайте на здоровье, тока чего на здоровых людей при этом кидаться ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 21:29 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.!iscrafm нужно себя держать в руках, стараться. К чему бесполезные споры. Нравится с файлами, почтой или обрудованием работать из СУБД - работайте. Свобода выбора! ну если вы привыкли к забиванию гвоздей микроскопом то выбирайте на здоровье, тока чего на здоровых людей при этом кидаться ? к чему это и кому? какие гвозди и какие микроскопы? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 21:31 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
iscrafmк чему это и кому? какие гвозди и какие микроскопы? это явно фраза не вам. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 21:38 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
iscrafm к чему это и кому? какие гвозди и какие микроскопы? к тому, что хп предназначены для реализации бизнес логики и если вы отчего-то этим инструменты пытаетесь решать не свойственные инструменту задачи типа работы с оборудованием ... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 21:38 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.!логика в хп дает более оптимальное использование ресурсов - каких ресурсов? сначала грузите СУБД выполнением ХП, потом мучительно пытаемся масштабировать БД? Yo.!более надежный код отслеживаемый средствами субд - видимо в этом месте необходим гипонз, а то что-то не верится Yo.!гораздо менее многословный язык (меньше кода, меньше ошибок) - меньше возможностей, язык оторван от ОО парадигмы, невозможность отладки, проблемы с обработкой ошибок, полноценная бизнес логика приводит к созданию процедур монстров, которые трудно читать и т. д. Противопоставлять язык ХП полноценному ЯП - какой-то бред. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 21:39 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
2-х звенщикiscrafmк чему это и кому? какие гвозди и какие микроскопы? это явно фраза не вам. когда начинается подсчет звеньев, то в адресатах мало кто разбирается, главное чтобы пулемет был под рукой. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 21:40 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.!iscrafm к чему это и кому? какие гвозди и какие микроскопы? к тому, что хп предназначены для реализации бизнес логики и если вы отчего-то этим инструменты пытаетесь решать не свойственные инструменту задачи типа работы с оборудованием ... я пытаюсь? Поручику больше не наливать! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 21:42 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.!, давно было написано . Я с тех пор взглядов не менял. Про гвозди и мясорубки думаю там достаточно однозначно сказано. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 21:55 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
KachalovYo.!логика в хп дает более оптимальное использование ресурсов - каких ресурсов? сначала грузите СУБД выполнением ХП, потом мучительно пытаемся масштабировать БД? Простите, а если что-то делать не на ХП, а допустим зашиваем этот же запрос в код, она и вправду меньше грузиться ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 21:57 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov - каких ресурсов? сначала грузите СУБД выполнением ХП, потом мучительно пытаемся масштабировать БД? Network, память, CPU, все это субд может использовать оптимальней за счет того что не нужно гонять копии данных на обработку, а машина хп интегрирована в SQL-машину и есть возможность совместного использования тех же переменных. Kachalov - видимо в этом месте необходим гипонз, а то что-то не верится откройте для архитектуры субд чуть сложнее mysql и тут же обнаружатся плюсы в хп ;) Kachalov - меньше возможностей, язык оторван от ОО парадигмы, невозможность отладки, проблемы с обработкой ошибок, полноценная бизнес логика приводит к созданию процедур монстров, которые трудно читать и т. д. Противопоставлять язык ХП полноценному ЯП - какой-то бред. по мне инструментарий для pl/sql так гораздо удобней особенно в плане обработки исключений и дебага. процедуры монстры получаются там где нет аналога pl/sql пакетов. ну и главное комедия с натягиванием ООП на реляционные данные с шатанием в крайности от ОО-субд до недо-ОРМов - точно не вершина эволюции. ЗЫ. ну и для совсем религиозных личностей есть элементы ООП в pl/sql, есть возможность писать хп на полноценном языке (java, .net), но они менее эффективны как в плане скорострельности так и в плане избыточности синтаксиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 22:13 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
iscrafm давно было написано . Я с тех пор взглядов не менял. Про гвозди и мясорубки думаю там достаточно однозначно сказано. странно, я же из вашего поста понял, что вы домыслили за человека то что он будет из хп работать с оборудованием, почтой и файлами. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2010, 22:20 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
2-х звенщикПростите, а если что-то делать не на ХП, а допустим зашиваем этот же запрос в код, она и вправду меньше грузиться ? - прощаю, любители ХП могут и не знать, но современные сервера приложений легко и дешево масштабируются Yo.!Network, память, CPU, все это субд может использовать оптимальней за счет того что не нужно гонять копии данных на обработку, а машина хп интегрирована в SQL-машину и есть возможность совместного использования тех же переменных. - сколько стоит кластеризуемая СУБД и много ли их в принципе? в то время как OpenSource сервера приложений кластеризуются на ура, а платить приходится только за железо :) Yo.!откройте для архитектуры субд чуть сложнее mysql и тут же обнаружатся плюсы в хп ;) - перестаньте использовать термин СУБД, так как большинство СУБД явно не соответствует Вашим требованиям к СУБД и опубликуйте оставшийся список из 2-3 БД Yo.!по мне инструментарий для pl/sql так гораздо удобней особенно в плане обработки исключений и дебага. процедуры монстры получаются там где нет аналога pl/sql пакетов. ну и главное комедия с натягиванием ООП на реляционные данные с шатанием в крайности от ОО-субд до недо-ОРМов - точно не вершина эволюции. ЗЫ. ну и для совсем религиозных личностей есть элементы ООП в pl/sql, есть возможность писать хп на полноценном языке (java, .net), но они менее эффективны как в плане скорострельности так и в плане избыточности синтаксиса. - пожалуйста не используйте термин СУБД вообще и смените свой логин на "Oracle DBA" - так будет честнее, по отношению к тем кто читает Ваш топик и думает что все что Вы пишите относится ко всем базам данных. По существу комментировать не буду, ибо у ДБА своя работа, у программиста своя, главное не забывайте делать ежедневные, недельные, месячные бэкапы и прочую хрень. Успехов. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2010, 00:04 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov- сколько стоит кластеризуемая СУБД и много ли их в принципе? в то время как OpenSource сервера приложений кластеризуются на ура, а платить приходится только за железо :) а что толку от кластеризации апп-сервера ? основная нагрузка субд ложится на SQL движек и ио, процедурное расширения в учетных приложениях дает незначительную нагрузку на фоне SQL. Yo.! - перестаньте использовать термин СУБД, так как большинство СУБД явно не соответствует Вашим требованиям к СУБД и опубликуйте оставшийся список из 2-3 БД я бы ограничил список одной субд - oracle, но к сожалению многие упомянутые вами вещи давно есть и в enterprisedb/postgres, db2 частично mssql ... Yo.! - пожалуйста не используйте термин СУБД вообще и смените свой логин на "Oracle DBA" - так будет честнее, по отношению к тем кто читает Ваш топик и думает что все что Вы пишите относится ко всем базам данных. По существу комментировать не буду, ибо у ДБА своя работа, у программиста своя, главное не забывайте делать ежедневные, недельные, месячные бэкапы и прочую хрень. Успехов. мой логин слишком известен, чтоб его менять ваши представление о работе дба на уровне ... на не адекватно низком уровне ... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2010, 01:02 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.! странно, я же из вашего поста понял, что вы домыслили за человека то что он будет из хп работать с оборудованием, почтой и файлами. Есть два игрока: СУБД и Клиент. Нужно работать с вышеперечисленным. Домыслить не тяжело. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2010, 12:08 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.!а что толку от кластеризации апп-сервера ? основная нагрузка субд ложится на SQL движек и ио, процедурное расширения в учетных приложениях дает незначительную нагрузку на фоне SQL. - почитайте побольше о современных серверах приложений, практически все они имеют функционал объектного кэша и объектных транзакций, что позволяет существенно снизить нагрузку на СУБД Yo.! я бы ограничил список одной субд - oracle, но к сожалению многие упомянутые вами вещи давно есть и в enterprisedb/postgres, db2 частично mssql ... - вот об этом я и говорил когда просил не злоупотреблять термином "СУБД" применительно к Вашим представлениям о ХП Yo.! ваши представление о работе дба на уровне ... на не адекватно низком уровне ... - жаль что мой намек остался непонятым, выражусь конкретней: рассуждения ДБА о программировании выглядят примерно также наивно, как рассуждения программиста о администрировании баз данных. Конечно Вы уверены что создаваемые Вами ХП решают все поставленные задачи, однако, поверьте, программирование это целый мир, о котором Вы многое не знаете (без обид, просто констатирую по Вашему посту о возможностях PL/SQL, недостатках ООП и т. д.) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2010, 12:50 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov - почитайте побольше о современных серверах приложений, практически все они имеют функционал объектного кэша и объектных транзакций, что позволяет существенно снизить нагрузку на СУБД если бы у бабушки были бы яйца ... (С) все что сейчас есть в плане интер-транзакционного кеша это или монстроидальная тупиковая ветвь аля ejb или хренотень которая даже acid не обеспечивает. единственно, что сегодня реально используется в индустрии это кеширование мелких справочников на уровне орм, что естественно особо нагрузку с субд не снимает. Kachalov - вот об этом я и говорил когда просил не злоупотреблять термином "СУБД" применительно к Вашим представлениям о ХП простите, но то что вы наговорили о недостатках хп совершенная ерунда сказанная от незнания, в не зависимости от того, что я имел ввиду. тем более, что в отличие от вас именно в этой области у меня знания, а представления (причем ложные как у вас). если пожелаете я могу пройтись с примерами и показать и ООП-языки в хп и обработку исключений в процедурных языках хп, могу показать дебагеры и многое из того о чем вы и не подозревали. мне не лень Kachalov - жаль что мой намек остался непонятым, выражусь конкретней: рассуждения ДБА о программировании выглядят примерно также наивно, как рассуждения программиста о администрировании баз данных. Конечно Вы уверены что создаваемые Вами ХП решают все поставленные задачи, однако, поверьте, программирование это целый мир, о котором Вы многое не знаете (без обид, просто констатирую по Вашему посту о возможностях PL/SQL, недостатках ООП и т. д.) лично я слабо себе представляю как дба может исполнять свои прямые обязанности не разбираясь в архитектуре ПО. выглядит, что у вас сложилось представление о дба как о мальчике который делает бэкапы. ладно, не страшно, с опытом представление изменится. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2010, 15:45 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
iscrafm Есть два игрока: СУБД и Клиент. Нужно работать с вышеперечисленным. Домыслить не тяжело. а, ну приношу глубочайшие извинения, я не угадал, что вы не только работу с железом из хп домыслили, но и "Есть два игрока" к стате, откуда эта цифра "два" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2010, 20:16 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.!iscrafm Есть два игрока: СУБД и Клиент. Нужно работать с вышеперечисленным. Домыслить не тяжело. а, ну приношу глубочайшие извинения, я не угадал, что вы не только работу с железом из хп домыслили, но и "Есть два игрока" к стате, откуда эта цифра "два" ? возможно у Вас в двухзвенке есть еще какие-то игроки, но я замученных "гатальских" не рассматривал. Речь шла о классических вариантах. Да поддерживать бестолковый флуд "не в тему" не интересно ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2010, 20:25 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
iscrafm возможно у Вас в двухзвенке есть еще какие-то игроки, но я замученных "гатальских" не рассматривал. Речь шла о классических вариантах. Да поддерживать бестолковый флуд "не в тему" не интересно не пойму откуда вы это берете. где тут двузвенка, два игрока или что-то связанное с этой загадочной цифрой 2, ник что-ли ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2010, 20:34 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.!, Вы читаете ни шагу влево, ни шагу вправо? Чуть выше понимаете о чем речь идет? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2010, 23:12 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
есть предположение, что один человек под несколькими никами пишет. Вы уж определитесь с одним. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2010, 23:15 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.! лично я слабо себе представляю как дба может исполнять свои прямые обязанности не разбираясь в архитектуре ПО. выглядит, что у вас сложилось представление о дба как о мальчике который делает бэкапы. ладно, не страшно, с опытом представление изменится. - молю Вас, уточните, стоит ли опасаться что DBA захватят мир?! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2010, 01:40 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Насчет убогости MySQL в плане ХП уже не очень актуально - я делал три года назад ещё на 5.0.х биллинг провайдера - мне уже тогда хватило его возможностей сделать по-человечески логику на СУБД. К слову сказать с приложениями скажем на Forms\Reports6i чуть более чем знаком был и ранее. Ну а насчет 3 звенки мне вообще не понятно - зачем этот костыль когда клиент в итоге браузер. Вы уж тогда проще делайте - пихайте свою 7.7DBF в терминалку - и будет вам счастье трёхзвенное. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2010, 03:51 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Oracle\MySQL\WEB\Programmer\DBA Ну а насчет 3 звенки мне вообще не понятно - зачем этот костыль когда клиент в итоге браузер. мысль настолько глубока, что отпугивает своей темнотой. Но зачетная, для цитатника. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2010, 09:54 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
iscrafmOracle\MySQL\WEB\Programmer\DBA Ну а насчет 3 звенки мне вообще не понятно - зачем этот костыль когда клиент в итоге браузер. мысль настолько глубока, что отпугивает своей темнотой. Но зачетная, для цитатника. вот неугомонный iscrafm, во всех форумах одновременно. Ты вроде как не приверженец 3-звенок, чего провоцируешь холивар. Да и здесь не тот форум, чтоб их обсуждать. Забей. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2010, 10:22 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
v-eremeev вот неугомонный iscrafm, во всех форумах одновременно. Ты вроде как не приверженец 3-звенок, чего провоцируешь холивар. Да и здесь не тот форум, чтоб их обсуждать. Забей. Володя, ты меня перепутал, наверное, с кем-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2010, 10:58 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.!iscrafm к чему это и кому? какие гвозди и какие микроскопы? к тому, что хп предназначены для реализации бизнес логики и если вы отчего-то этим инструменты пытаетесь решать не свойственные инструменту задачи типа работы с оборудованием ... Относитесь к ХП проще. В частности как к средству повышения производительности, когда вместо десятка SQL запросов с кучей сетевых раундтрипов вы один раз вызываете ХП и получаете результат. Естественно, такая ХП должна быть логичной с точки зрения пользователя. Для небольших систем ВСЯ логига может быть реализована на ХП, а у клиента стоит только Web браузер. Взять тот же Oracle APEX. Многофункциональные СУБД уже давно не экзотика. И я не вижу ничего плохого в том, чтобы покупать одну коробку со всеми необходимыми примочками, которых большинств клиентов хватит до конца дней, а не кучу плохо интегрированных изделий. К 3х звенке можно относиться так, что она позволяет разместить машину ХП на сервере отдельном от сервера СУБД, тем самым разгрузить сервер СУБД. Правда, у серверов приложений обычно свой язык программирования, который отличается от языка ХП СУБД. Но суть та же - код плотно работающий с БД мы размещаем поближе к БД в защищённом месте, а не у клиента, который может находиться ХЗ где. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2010, 16:54 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
В тему: /topic/725100&pg=1 Зачем класть яйца в одну корзину (ХП в СУБД)? Разве что для мелких устоявшихся программ. Но для крупных систем - это выращивание неповоротливого монстра с ограниченными возможностями. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2010, 12:54 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Alex S Зачем класть яйца в одну корзину (ХП в СУБД)? Разве что для мелких устоявшихся программ. Но для крупных систем - это выращивание неповоротливого монстра с ограниченными возможностями. ну если говорить о твоих яйцах то вообще-то вероятность того, что отвалится одна субд ровно в 2 раза ниже чем отвалиться или субд или апп-сервер ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2010, 14:45 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Вероятность отваливания перегруженной СУБД все-таки повыше. А апп-сервера очень легко резервируются. (Все это при прочих равных - т.е. конфигурация СУБД одна и та-же, но в одном случае есть апп-сервера, выполняющие часть работы, а в другом только СУБД) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2010, 16:53 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Alex SВероятность отваливания перегруженной СУБД все-таки повыше. А апп-сервера очень легко резервируются. (Все это при прочих равных - т.е. конфигурация СУБД одна и та-же, но в одном случае есть апп-сервера, выполняющие часть работы, а в другом только СУБД) с чего бы одинокой субд быть более перегруженой если ресурсов она будет тратить много меньше чем апп сервер+субд+гоняние трафика между апп-сервером и субд ? от того что ты зарезервируешь апп-сервер субд под апп-сервером надежней одинокой субд не станет. да и резервировать одинокую субд (standby, репликация, лог шипинг) и гонять RO репорты на стендбай не так уж сложно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2010, 17:36 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
iscrafm Ты свою семёрку пробовал запихнуть в терминалку? Нет!? А ведь это и есть самая прямая трёх звенка для тебя. Лучше ты никогда не сделаешь ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2010, 06:09 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Oracle\MySQL\WEB\Programmer\DBA, ты имеешь виду 7-ку BMW? Или что "свою семерку"? набор твоей несвязанной речи не понял. А понятие о трехзвенках в образе терминалов - поражает. Где такому только учат? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2010, 10:32 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Стас АгарковСкажите, пожалуйста, в чем плюсы и минусы хранимых процедур? В каких проектах их стоит использовать, а в каких не стоит? Или дайте ссылку, где про это можно почитать. С учетом названия темы как бы противопосталяются SQL-запросы и ХП. Хотя последние задумывались как процедурное расширение декларитивного SQL, а не противопоставление, периодически такие вопросы возникают, и в коллетиве разработчиков одного проекта поскольку альтернативы имеют место. Например, противопоставляется вызов SQL - звапрос из клиентской проги вызову ХП возвращающей курсор. Действительно, во втором случае типа все SQL оказываются в ХП (а не в клиентском коде), что упрощает доработки, сопровождение, особенно када в проекте много проггеров, и есть четкое разделение между клиентскими проггерами и БД серверными. Но тут вот возникает частный практический момент, на который бы мне хотелось узнать мыстли коллег(речь о частном случае при использовании компонент доступа клиентских прог, а не общий вопрос): Компоненты доступа к БД для прог типа Дельфи (ДиректОраклАксцесс) или АПЕКса в случае создания окон редактирования при использовании запросов по умолчанию обеспечивают так называемую оптимистическую блокироку. Т.е. запиманют начальные данные в окне, и перед сохранением проверяют не изменились ли они. Т.е. если два юзера откроют это окно, один внесет исправления и зафиксирует, то второй не сможет внести изменения затерев работу первого. Это просто заложено в компоненты их разработчиками. Если же вызывается ХП с курсором, то это просто вызов ф-ии и все: компонеты не обеспечивают никакой изоляции. Меня интересует как решаю это другие: 1)использут ХП возвращающие клиентам куросоры, и сами реализуют изолязацию сессий клиентов. (Оптимистическую блокировку по любому тока на клиенте, писсимистичекая может напряч: вообще второй такое окно не откроет) 2)использут ХП возвращающие клиентам куросоры и забиват на всякие там блокировки: все равно юзер не докажет шо он шо-то вносил, а оно пропало. 3)вызывают запросы из проги, и компоненты берут все скучные весчи на себя. Это особенно интересно када клиентские проггеры и серверные разные челы: первые мало думают о многопользовательности: им формы бы налобать покрасивше, а вторые не знают че там у них в клиенте вообще делается. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2010, 00:08 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.! с чего бы одинокой субд быть более перегруженой если ресурсов она будет тратить много меньше чем апп сервер+субд+гоняние трафика между апп-сервером и субд ? от того что ты зарезервируешь апп-сервер субд под апп-сервером надежней одинокой субд не станет. да и резервировать одинокую субд (standby, репликация, лог шипинг) и гонять RO репорты на стендбай не так уж сложно.Ну, процедурные расширения тоже не святым духом работают, не знаю что займет больше ресурсов: передача результатов одиночного запроса (то что вы называете гонянием трафика) или хранение этого буфера в процессе процедурного расширения - дисковый кеш, блокировки и все такое. Если в первом случае субд отдала данные и свободна, то во втором ? И это на фоне большого количества конкурирующих сессий в субд. Разумеется, что во первом случае уже апп-сервер потребляет ресурсы при обработке данных, и, возможно даже бОльшие - это уж как система построена. Но в таком случае это могут быть ресурсы уже другой машины (машин). Нередко приходится видеть вообще умопомрачительные вещи, реализованные в субд: типа разбора всяких файловых форматов, всякие парсеры, работа с pipe-ами, портами, отслеживание изменений в дисковых папках, работа с e-mail и т.п. Имхо это совсем не разумное использование ресурсов СУБД. Еще рано или поздно в таких системах появляется парсер формул, реализованный на субд, а то и несколько. А все из-за выбранной архитектуры. Впрочем, все imho. Мой выбор (апп-сервер(свой) и субд) был сделан 10 лет назад и я не пожалел. Более того, сейчас я вижу много конкурирующих проектов в своей отрасли, переходящих к такой архитектуре. Средства при этом используются различные (покупные j2ee сервера, свои разработки) но движение в сторону n-звеньев есть. Кстати стало проще интегрироваться с такими системами, имеющимися у заказчика - многие стали поддерживать SOAP. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2010, 14:02 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Alex SНо в таком случае это могут быть ресурсы уже другой машины (машин). тут не понял, хп конечно чудес не сотворит и имея сильно меньше ресурсов конечно большую нагрузку не потянет, но вот с сопоставимыми ресурсами вполне потянет. Alex S Нередко приходится видеть вообще умопомрачительные вещи, реализованные в субд: типа разбора всяких файловых форматов, всякие парсеры, работа с pipe-ами, портами, отслеживание изменений в дисковых папках, работа с e-mail и т.п. Имхо это совсем не разумное использование ресурсов СУБД. Еще рано или поздно в таких системах появляется парсер формул, реализованный на субд, а то и несколько. А все из-за выбранной архитектуры. архитектура тут не причем, тут проблема в адекватности архитектора, кто-то кидается в крайности апп-сервера пытаясь на жава реализовать ядро субд изобретая неповоротливые велосипеды, кто-то все пихает в субд. лично мне апп-сервер с логикой в хп нравится гораздо больше. Alex Sно движение в сторону n-звеньев есть. как-то это движение шибко забуксовало пробежавшись по кругу кидаясь в крайности от извращенному натягивания ООП на реляционный движек до оо-субд до боли напоминают сетевые субд десятый год никак не придя к какому-то вменяемому решению. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2010, 20:37 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Alex SYo.! с чего бы одинокой субд быть более перегруженой если ресурсов она будет тратить много меньше чем апп сервер+субд+гоняние трафика между апп-сервером и субд ? от того что ты зарезервируешь апп-сервер субд под апп-сервером надежней одинокой субд не станет. да и резервировать одинокую субд (standby, репликация, лог шипинг) и гонять RO репорты на стендбай не так уж сложно.Ну, процедурные расширения тоже не святым духом работают, не знаю что займет больше ресурсов: передача результатов одиночного запроса (то что вы называете гонянием трафика) или хранение этого буфера в процессе процедурного расширения - дисковый кеш, блокировки и все такое. Если в первом случае субд отдала данные и свободна, то во втором ? И это на фоне большого количества конкурирующих сессий в субд. Разумеется, что во первом случае уже апп-сервер потребляет ресурсы при обработке данных, и, возможно даже бОльшие - это уж как система построена. Но в таком случае это могут быть ресурсы уже другой машины (машин). Нередко приходится видеть вообще умопомрачительные вещи, реализованные в субд: типа разбора всяких файловых форматов, всякие парсеры, работа с pipe-ами, портами, отслеживание изменений в дисковых папках, работа с e-mail и т.п. Имхо это совсем не разумное использование ресурсов СУБД. Еще рано или поздно в таких системах появляется парсер формул, реализованный на субд, а то и несколько. А все из-за выбранной архитектуры. Впрочем, все imho. Мой выбор (апп-сервер(свой) и субд) был сделан 10 лет назад и я не пожалел. Более того, сейчас я вижу много конкурирующих проектов в своей отрасли, переходящих к такой архитектуре. Средства при этом используются различные (покупные j2ee сервера, свои разработки) но движение в сторону n-звеньев есть. Кстати стало проще интегрироваться с такими системами, имеющимися у заказчика - многие стали поддерживать SOAP.По-моему, упускается из виду то, что бизнес-логика всё-таки часто должна работать с данными, а средства АПП-сервера работать с данными не умеют. В них просто нету таких средств; любую работу с данными придётся реализовывать с нуля, всю-всю работу с множествами, с разпределением вычислений на процессоры и т.д., и т.п. Дополнительно: превозносимая многими возможность разделения системы на сотни дешёвых АПП-серверов объсняется тем-же - приложения не работают с общими данными. Если можно данные в БД разделить на независимые кусочки, тогда и такие БД можно разнести на сотни и тысячи независимых дешёвых СУБД-серверов... Если взять большие системы с серьёзными АПП-слоями типа SAP, то в них БЛ не перенесена на уровень АПП-сервера, у них некое промежуточное решение: на уровне АПП-сервера сделано фактически только хранилище бизнес-логики. Т.е. это значит, что БЛ только хранится в АПП-сервере, но выполняется в СУБД. Это требует очень больших затрат ресурсов на разработку, и компенсируется уменьшением зависимости от разработчика СУБД, что, конечно, важно для компании, затративший на создание системы труд сотен разработчиков (разработчиков в широком смысле) в течении десятков лет. Бизнес, давая такое задание разработчикам, должен очень серьёзно подумать, за счёт чего и в какие сроки окупится это многократное увеличение затрат ресурсов на разработку. А вот примеров реализации более-менее сложной (требующей какой-то работы с данными, а не только запросов Key-Value) логики именно в АПП-сервере (и исполняемой именно на АПП-сервере) я не знаю, и нынешние моления на ORM "применять всегда и везде" считаю абсурдными. И ещё раз хочу заметить (на это уже обращали внимание), что в n-уровневой архитектуре бизнес-логика практически всегда распределяется между уровнями (т.е. нет уровня без бизнес-логики) - собственно, в этом и смысл такой архитектуры. Нужно уж очень сильно искуственно противиться такому разделению, чтоб его не было. Т.е., ИМХО, правильнеый путь: - БЛ распределяется по уровням - на уровене клиента - логика с минимумом сложности и без обращения к данным - на уровне АПП-сервера - логика с минимумом обращения к данным и с работой с внешними по отношению к СУБД объектами. - на уровне СУБД-сервера - логика, связанная с работой с данными Само собой, если логики, связанной с работой с данными нет (а таких приложений немало), то можно использовать и всякие ORM, и использовать СУБД толькло как хранилище. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 10:05 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
alexeyvg Дополнительно: превозносимая многими возможность разделения системы на сотни дешёвых АПП-серверов объсняется тем-же - приложения не работают с общими данными. Если можно данные в БД разделить на независимые кусочки, тогда и такие БД можно разнести на сотни и тысячи независимых дешёвых СУБД-серверов... - где-то видели работающий пример реализации Вашей идеи распределения логики по многим дешевым СУБД? (интересно почему Вы не использовали модный термин "шардинг"?). Если говорить о кластеризации на уровне Application-сервера, то это реально работает ;) alexeyvg Само собой, если логики, связанной с работой с данными нет (а таких приложений немало), то можно использовать и всякие ORM, и использовать СУБД толькло как хранилище. - улыбнуло. Если я правильно понял последний тезис, то ORM можно использовать там где нет данных? Или я не понимаю что такое "логика, связанная с работой с данными"? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 12:27 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalovalexeyvg Дополнительно: превозносимая многими возможность разделения системы на сотни дешёвых АПП-серверов объсняется тем-же - приложения не работают с общими данными. Если можно данные в БД разделить на независимые кусочки, тогда и такие БД можно разнести на сотни и тысячи независимых дешёвых СУБД-серверов... - где-то видели работающий пример реализации Вашей идеи распределения логики по многим дешевым СУБД? (интересно почему Вы не использовали модный термин "шардинг"?). Если говорить о кластеризации на уровне Application-сервера, то это реально работает ;)Да, видел. В MySpace использовалось 500 серверов MS SQL Server 2005 (сейчас уже больше) Но там работы с данными нормальной как раз и нет, это иллюстрирует мой тезис о том, что если приложение распаралеливается на много дешёвых апп-серверов, то оно так-же просто распаралеливается на много дешёвых субд-серверов. Что дешёвый апп-сервер будет эту тыщу запросов в секунду обрабатывать, что дешёвый субд-сервер - без разницы. Kachalovalexeyvg Само собой, если логики, связанной с работой с данными нет (а таких приложений немало), то можно использовать и всякие ORM, и использовать СУБД толькло как хранилище. - улыбнуло. Если я правильно понял последний тезис, то ORM можно использовать там где нет данных? Или я не понимаю что такое "логика, связанная с работой с данными"?Совершенно верно поняли. "там где нет данных" - это, конечно не в буквальном смысле абсолютного отсутствия каких либо данных (даже компе в холодильнике работает с данными :-) ), а в смысле хоть какой-то логики работы с данными, кроме работы с одним объектом (считать, показать, изменить, сохранить). Нормальная работа с данными предполагает, что при чтении или изменении нужно согласовывать состояние объекта с состояниями других объектов, лочить данные (в т.ч. и у других объектов, и в т.ч. при чтении) (не потому, что СУБД лохи написали, а потому, что это нужно для бизнес-логики), делать изменения атомарными, откатывать всё при ошибке и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 12:44 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
сабж плавно перерос в обсуждение - 2х или 3-х звенка и - БЛ в БД или нет ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 12:53 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
alexeyvg "там где нет данных" а зачем данной ИС БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 12:55 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
alexeyvg Нормальная работа с данными предполагает, что при чтении или изменении нужно согласовывать состояние объекта с состояниями других объектов, лочить данные (в т.ч. и у других объектов, и в т.ч. при чтении) (не потому, что СУБД лохи написали, а потому, что это нужно для бизнес-логики), делать изменения атомарными, откатывать всё при ошибке и т.п. - все это есть в современных ORM (распределенные объектные транзакции - это важный элемент спецификации EJB) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 13:08 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov - все это есть в современных ORM (распределенные объектные транзакции - это важный элемент спецификации EJB) ejb2 - тупиковая монстроидальная ветвь отмершая где-то на рубеже столетий, ejb3 подрихтованный хибер, обычный орм с совершенно не впечатляющими возможностями... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 13:30 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.!ejb2 - тупиковая монстроидальная ветвь отмершая где-то на рубеже столетий, ejb3 подрихтованный хибер, обычный орм с совершенно не впечатляющими возможностями... - да, ну и ... По делу то есть что сказать? Или секта DBA все еще занята планами порабощения планеты Земля? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 13:46 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov- все это есть в современных ORM (распределенные объектные транзакции - это важный элемент спецификации EJB)Это конечно, так, но вот в чём вопрос - не эффективнее ли транзакции и вообще сложные манипуляции с данными делать на том сервере и на том языке программирования, который для этого и предназначен? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 13:58 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Измученный праздниками моск не справилсо со столь живой полемикой ни о чем. 1. Как можно противопоставлять ХП и SQL? Естественно, во вменяемой СУБД с вменяемым оптимизатором все, что можно сделать на SQL, надо на нем и делать - оно куда эффективней процедурности. А на современном SQL можно очень много чего. Что никак нельзя - в ХП. 2. ХП и примкнувшие к ним instead of триггеры жизненно необходимы во многих случаях, например для сохранения согласованности при вынужденной денормализации БД их нечем заменить. Их разработка - такая же часть разработки БД, как и DDL. 3. Бизнес-логика, описываемая в терминах РМД, связанная именно и только с данными в БД, естественно должна выполняться в РСУБД и нигде еще, РСУБД для этого и предназначены. Логика (возможно, в терминах ООП), внешняя отн. БД, может (и в серьезном проекте должна) выполняться на апп-сервере. Это нормальное разделение кода между уровнями и разработчиками, все остальное - скорее всего кривое проектирование. 4. ХП позволяют отделить ООП разработчиков от "реляционщиков", что почти всегда оправдано и эффективно, даже если это одни и те же люди :) 5. ОРМы, если и применяются, опять-таки должны работать с вьюхами/ХП, абстрагирующими их от реальной РМД, иначе - это кривое проектирование. Исключение - если проект должен работать на любой СУБД (т.е. эффективно - ни на какой). 6. Естественно, все вышесказанное относится только к РСУБД с действительно эффективной обработкой вьюх/триггеров/ХП, а их, к сожалению, очень немного (этак 2-3, как я понимаю :)). 7. Конечно, в случае СУБД попроще или маленького проекта (особенно улыбнуло про хостинг для СУБД) можно изгаляться как угодно - оно все равно как-то да заработает. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 14:53 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
vadiminfo авторКомпоненты доступа к БД для прог типа Дельфи (ДиректОраклАксцесс) или АПЕКса в случае создания окон редактирования при использовании запросов по умолчанию обеспечивают так называемую оптимистическую блокироку. Т.е. запиманют начальные данные в окне, и перед сохранением проверяют не изменились ли они. Т.е. если два юзера откроют это окно, один внесет исправления и зафиксирует, то второй не сможет внести изменения затерев работу первого. Это просто заложено в компоненты их разработчиками. Если же вызывается ХП с курсором, то это просто вызов ф-ии и все: компонеты не обеспечивают никакой изоляции. Меня интересует как решаю это другие: 1)использут ХП возвращающие клиентам куросоры, и сами реализуют изолязацию сессий клиентов. (Оптимистическую блокировку по любому тока на клиенте, писсимистичекая может напряч: вообще второй такое окно не откроет) 2)использут ХП возвращающие клиентам куросоры и забиват на всякие там блокировки: все равно юзер не докажет шо он шо-то вносил, а оно пропало. 3)вызывают запросы из проги, и компоненты берут все скучные весчи на себя. Это особенно интересно када клиентские проггеры и серверные разные челы: первые мало думают о многопользовательности: им формы бы налобать покрасивше, а вторые не знают че там у них в клиенте вообще делается. И зачем процедуре возвращать курсор? А если не возвращать курсор, то не вижу разницы между запросом и хранимой процедурой в этом случае. Так же все заложено в компоненты. В процедуру просто при ее создании передаются начальные данные и измененные и сравниваются. Та же оптимистическая блокировка. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 15:01 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
baike2000И зачем процедуре возвращать курсор?Чтобы сделать из нее параметризованный вью для следующего уровня (клиент/апп-сервер), например. baike2000А если не возвращать курсор, то не вижу разницы между запросом и хранимой процедурой в этом случае. Так же все заложено в компоненты. В процедуру просто при ее создании передаются начальные данные и измененные и сравниваются. Та же оптимистическая блокировка.Это с какой радости она именно оптимистическая и причем тут компоненты? ХП, за редким исключением, должны жить в рамках внешней транзакции/сессии. И степень изолированности транзакций отнюдь не в ХП задается, это вопрос общего проектирования системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 15:14 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
FavnЧтобы сделать из нее параметризованный вью для следующего уровня (клиент/апп-сервер), например. А зачем для этого курсор? Зачем блокировать таблицу, что бы изменить одну строчку? Или я чего-то не понимаю... Favn Это с какой радости она именно оптимистическая и причем тут компоненты? ХП, за редким исключением, должны жить в рамках внешней транзакции/сессии. И степень изолированности транзакций отнюдь не в ХП задается, это вопрос общего проектирования системы. Вы вопрос читали который задал vadiminfo ? Вот и спрашивайте у него зачем ему оптимистическая блокировка в компонентах. Я просто сказал, что это реализуется без проблем и с ХП. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 15:24 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Favn7. Конечно, в случае СУБД попроще или маленького проекта (особенно улыбнуло про хостинг для СУБД) можно изгаляться как угодно - оно все равно как-то да заработает. - блин, ну вот опять, говорите прямо что все что не Oracle, то не СУБД P.S. Для людей с ограниченным кругозором: хостинг для баз и конкретно на Oracle существует (ради интереса посетите сайт Oracle: тынц ) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 18:49 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
baike2000 И зачем процедуре возвращать курсор? Ну в силу того, что курсоры собсно и обеспечивают механизм позволяющий языкам не поддерживающим множество (Дельфи, С, PL/SQL) записей получать данные из языков поддерживающих таковые (SQL). Иначе, SQL должен быть в теле клиентской проге, т.е. посылаться на сервер. Ну, по крайней мере, так в Оракле. Ну и типа в теории как бы. baike2000 А если не возвращать курсор, то не вижу разницы между запросом и хранимой процедурой в этом случае. Так же все заложено в компоненты. В процедуру просто при ее создании передаются начальные данные и измененные и сравниваются. Та же оптимистическая блокировка. Мож я не удачно сформулировал? Если запрос, то мне понятно. А если ХП, то что ей передается и что она возвращает, если это не курсор? И в какой язык? Т.е. на чем пишется клиент? Ну что за СУБД? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 20:07 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
vadiminfo Мож я не удачно сформулировал? Если запрос, то мне понятно. А если ХП, то что ей передается и что она возвращает, если это не курсор? И в какой язык? Т.е. на чем пишется клиент? Ну что за СУБД? Итак, СУБД - MS SQL, клиент .NET, раньше Visual Basic. Процедура возвращает набор данных просто. Ну в теле процедуры обычный select col1,col2 from tbl, можно с параметрами в where. Есть еще процедуры update, insert, delete для одной записи. Соответственно, если удаляется 100 записей из грида, то сто раз вызывается процедура удаления. И никаких блокировок. vadiminfo Ну в силу того, что курсоры собсно и обеспечивают механизм позволяющий языкам не поддерживающим множество (Дельфи, С, PL/SQL) записей получать данные из языков поддерживающих таковые (SQL). Иначе, SQL должен быть в теле клиентской проге, т.е. посылаться на сервер. Ну, по крайней мере, так в Оракле. Ну и типа в теории как бы. Ну вот с MS SQL я работаю по другому, и уже давно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 13:01 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
baike2000Итак, СУБД - MS SQL, клиент .NET, раньше Visual Basic. Процедура возвращает набор данных просто. Ну в теле процедуры обычный select col1,col2 from tbl, можно с параметрами в where. Есть еще процедуры update, insert, delete для одной записи. Соответственно, если удаляется 100 записей из грида, то сто раз вызывается процедура удаления. И никаких блокировок. Ну напиши те плиз простейший пример, чтобы была видна специфакция этого набора в частности. Ну и как выглядит вызов на клиенте. Язык Васик? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 13:09 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Что-то ветка запуталась. Начали с XP vs palin SQL кончили спорами про 2x vs 3x tiers. imho наличие APP сервере позволяет 1 абстрагироваться от хранения, 2 вынести на него безопасность 3 использовать один и тот же API для разных приложений (например JSP + JAVA для сайта и C++ "толстое приложение") 4 реализовать кеширование для не OLTP данных 5 масштабировать сложные не OLTP расчеты или обработку асинхронных сбор потоковых данных 6 документировать/поддерживать версии методов. В продвинутых APP серверах публикация нового метода будет автоматически исполнятся с нужными зависимостями. В то же время, XP могут быть своего рода APP Сервером. Минусы - не решаются пункты 4-5 а из 6 доступно лишь изменение "на ходу". Контроль версий сложен, совмещение версий за пределами транзакций вообще невозможно. Плюсом APP Сервера на XP является простота языка. Для небольшого проекта достаточно dba и кодера интерфесов/сайта.Можно "на ходу" исправлять бизнес-логику, что доступно лишь на весьма продвинутых серверах приложений (п. 6). Для небольшого проекта и 2-3 разработчиков 1+2+3 + изменения "на ходу" весьма удобны. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 14:10 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
[quot tadminПлюсом APP Сервера на XP является простота языка. Для небольшого проекта достаточно dba и кодера интерфесов/сайта.[/quot] - почему-то вспоминается народная поговорка: "простота - хуже воровства" Сделав "просто", потом получишь воз неразрешимых проблем (решить которые можно двумя способами - либо все полностью переделать, либо, как в каком-то из постов: DBA становится президентом компании и выгоняет всех недовольных разработчиков) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 14:20 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
vadiminfobaike2000Итак, СУБД - MS SQL, клиент .NET, раньше Visual Basic. Процедура возвращает набор данных просто. Ну в теле процедуры обычный select col1,col2 from tbl, можно с параметрами в where. Есть еще процедуры update, insert, delete для одной записи. Соответственно, если удаляется 100 записей из грида, то сто раз вызывается процедура удаления. И никаких блокировок. Ну напиши те плиз простейший пример, чтобы была видна специфакция этого набора в частности. Ну и как выглядит вызов на клиенте. Язык Васик? Язык C#. Даже и не знаю что вам показать. Примеров лежит масса в интернете... Ну вот кусок, правда с пессимистической блокировкой, здесь не надо оптимистическую по логике программы. Но если добавить тех же параметров и написать в них Код: plaintext
вот определение команд. Код: 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.
Вот вызов на клиенте dsUpdate - dataSet. Соответственно компонент вызовет update, delete, insert только для именных записей. Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 14:30 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov - почему-то вспоминается народная поговорка: "простота - хуже воровства" Сделав "просто", потом получишь воз неразрешимых проблем (решить которые можно двумя способами - либо все полностью переделать, либо, как в каком-то из постов: DBA становится президентом компании и выгоняет всех недовольных разработчиков) Эсхатологический прогноз. Мы пока с этим не столкнулись. И вообще выбор технологически простых путей не так опасен потребителя, как убыточен для поставщика решений -) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 15:04 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
baike2000, с писсимстической вопросов то нет: просто for update пишется в SQL, которая в ХП. А пример этих самых dbo.ShowIntlMetaCodes? Простой: внутри SQL и было видно, шо за тип она возвращает. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 15:14 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
baike2000 вот определение команд. Я правильно понимаю, что если бы процедур не было, а просто использовались sql-операторы, то код был бы почти таким же? Если да, то в чем преимущества процедур для данного случая? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 15:14 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov- блин, ну вот опять, говорите прямо что все что не Oracle, то не СУБД Не надо выдирать слова из контекста, тем более что с Оракл я как раз и не работаю. Я в основном работаю с DB2 :) И писал я об эффективной обработке триггеров/вью/ХП в СУБД, а не о качестве СУБД в целом. Хотя... :) KachalovP.S. Для людей с ограниченным кругозором: хостинг для баз и конкретно на Oracle существует (ради интереса посетите сайт Oracle: тынц )Вот спасибо, кругозор раширился беспредельно! Я и хостинг с DB2 могу указать, речь-то шла о Kachalovпример из жизни: человек приносит сайт использующий ХП на хостинг и оказывается что ему нужен более дорогой тарифный план чем он предполагал, так как хостер не дает ему привилегий необходимых для создания и исполнения ХП в рамках shared-хостинга.Вы всерьез считаете, что БД сколько-ни серьезной системы может жить мало того что на shared-хостинге, но даже и без прав создания ХП? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 15:24 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
baike2000, Я не правильно понял Дельфишников. Оказывается дело не в курсоре. А дело в не спользовании ДатаСета. А c ним разницы нет курсор и SQL в ХП или SQL в клиенте. Но все равно спасибо. Просто там использовались другие компоненты. Я наталкнулся на то, шо не работает в одной проге оптимистическая блокировка и решил, это из-за курсоров. А теперь после Вашего ответа опять стал выяснять у них и все прояснилось. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 16:06 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
без курсора (набора данных в табличном виде) в хранимках трудно обойтись. Например простая процедура Код: plaintext 1. 2. 3. 4. 5.
которая возвращает курсор. ЗЫ. Если БД-импотент, тогда конечно.... можно всё на других слоях писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 16:14 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
FavnВы всерьез считаете, что БД сколько-ни серьезной системы может жить мало того что на shared-хостинге, но даже и без прав создания ХП? - я считаю что для "серьезной системы" вообще ХП не нужны. Кстати что Вы называете "серьезной системой"? Систему нагруженную большим количеством несложных запросов (OLTP) или малонагруженную систему с большими сложноструктурированными таблицами по которым периодически необходимо строить отчеты (OLAP)? Если мы говорим о web-приложениях (иначе с какого боку тут вообще хостинг?), то очевидно что подавляющее большинство таких систем относится к типу OLTP-приложений, которые прекрасно могут обходиться без ХП и где использование ХП означает скорее архитектурную безграмотность разработчика, а не реальную необходимость. P.S. про масштабирование и кластеризацию в контексте ХП что-то никто не хочет опонировать :) Вопросы типа: "сколько стоит кластеризуемая БД?" явно оказались неудобными ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 17:07 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov - я считаю что для "серьезной системы" вообще ХП не нужны. не будьте максималистом. - как вы реализуете без XP мой запрос выше? - как насчёт вьюх, триггеров, ключей, каскадов и других средств удобных для разработчика серверной части ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 17:39 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov - я считаю что для "серьезной системы" вообще ХП не нужны. юношеский максимализм, с годами проходит. KachalovP.S. про масштабирование и кластеризацию в контексте ХП что-то никто не хочет опонировать :) Вопросы типа: "сколько стоит кластеризуемая БД?" явно оказались неудобными да опонировать собственно нечему. вы с апп-серверами кластерами дел не имели, проблемы возникающие с репликацией кеша того же jboss вам не знакомы. в субд тоже кластера разные бывают, есть shared-nothing c вариантами типа mpp, есть shared-disk кластера, есть in-memory кластера аля mysql. найдите спеца по кластеризации апп-серверов подискутируем. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 17:43 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123не будьте максималистом. Yo.!юношеский максимализм, с годами проходит - для того чтобы вести разумный разговор об использовании ХП, необходимо предварительно определиться с задачей где именно их планируется использовать. Уважаемые пользователи ХП в "серьезных системах", пожалуйста потрудитесь сформулировать что такое "серьезная система", после чего диалог возможно преодолеет детсадовский уровень и обретет подобие смысла. Кстати насчет максимализма - лично я считаю что в OLAP системах использование ХП может иметь смысл (извиняюсь, за то что не хочу с пеной у рта доказывать что ХП это полная фигня, а вот ORM это круто и надо его пихать в любую задницу) Yo.!вы с апп-серверами кластерами дел не имели, проблемы возникающие с репликацией кеша того же jboss вам не знакомы. найдите спеца по кластеризации апп-серверов подискутируем. - Вы демонстрируете поразительное знание меня - польщен! Прошу Вас не отвлекаться от задачи захвата планеты Земля и уничтожения всех противников ХП :) Жду не дождусь когда выяснится что сервером приложений Вы называете СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 18:47 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123- как вы реализуете без XP мой запрос выше? - честно говоря не уловил о каком запросе шла речь Petro123- как насчёт вьюх, триггеров, ключей, каскадов и других средств удобных для разработчика серверной части ? - некоторые вещи не нужны (потому что иначе реализуются или относятся к другим задачам), другие реализованы на программном уровне (уровне сервера приложений). В любом случае, архитектура и средства реализации архитектуры зависят от задачи, в связи с чем говорить ХП/вью/триггер/и т. п. не нужны или нужны бессмысленно. Единственно серьезным из своих постов в данной теме считаю этот пост , все остальное флуд порожденный тупо-агрессивной позицией DBA не желающих изучать что-то кроме возможностей своей БД (другие БД им тоже обычно ненавистны), в связи с чем опасающихся потерять работу из-за приложений где прослойка в виде DBA просто не нужна ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 18:59 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov ...не желающих изучать что-то кроме возможностей своей БД (другие БД им тоже обычно ненавистны), в связи с чем опасающихся потерять работу... из-за приложений где прослойка в виде DBA просто не нужна Отличное понимание принципов функционирования рынка! Kachalov ...прослойка в виде DBA просто не нужна Тоже посмеялся ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 19:17 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
KachalovtadminПлюсом APP Сервера на XP является простота языка. Для небольшого проекта достаточно dba и кодера интерфесов/сайта. - почему-то вспоминается народная поговорка: "простота - хуже воровства" Сделав "просто", потом получишь воз неразрешимых проблем (решить которые можно двумя способами - либо все полностью переделать, либо, как в каком-то из постов: DBA становится президентом компании и выгоняет всех недовольных разработчиков) Насчет простоты языка полностью согласен с tadmin. Еще подчеркну лаконичность конструкций и ненужность сопряжения контекста приложения и контекста РБД (мы работаем все время в контексте РБД). У меня ХП размером в 30 строк обычно заменяет исходный код строк эдак в 100-150 на клиенте. И для себя я давно вывел аксиому фильтра, где должна находиться бизнес-логика : как только код какого-то процесса-расчета (то есть элемента БЛ) на клиенте превышает 5 строк - выношу его на сервер (как вьюшку, триггер, ХП ...). Понятное дело, что с повторно используемым кодом все усложняется - так на то есть как библиотеки классов на клиенте, так и наборы функций на сервере. Кстати сказать. Есть некоторые исключения из правил (в приятную сторону). В ProgressDB код ХП, код клиентских приложений и код БЛ пишется на одном и том же языке (4GL), и в одном контексте можно объединить все сразу. На этой платформе 3-х звенка стала естественной (и если бы не малая распространенность и связанные с этим некоторые досадные мелочи - завоевала бы мир). Кстати, за то, что здесь на одном языке пишешь все, но в трехуровневой архитектуре, Progress называют "сетевым Foxpro". Насчет "воза неразрешимых проблем" ... Тут частично согласен с Kachalov. Проблемы сопровождаемости через какое-то время нарастают до, казалось бы, неприличного уровня. Но это связано с периодами изменчивости самого бизнеса. А эта самая изменчивость - величина непостоянная. Пережил месяц головняка, получил премию за внедрение нового БП - и пол-года минимум почиваешь на лаврах занимаешься более приятными вещами занимаешься другими проектами и абсолютно нэ пэрэймаешься "сложной системой" - она живет себе и живет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 22:47 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
KachalovУважаемые пользователи ХП в "серьезных системах", пожалуйста потрудитесь сформулировать что такое "серьезная система" "Серьезная система" - это программная система, работающая в режиме 24*7 и обеспечивающая потребности бизнеса, генерирующего годовую добавочную стоимость в размере в 1000 раз больше затрат на создание этой программной системы. В ее составе OLTP-база данных, нагруженная большим количеством сложных и простых запросов, и OLAP-база (необязательно). Kachalovнеобходимо предварительно определиться с задачей где именно их (ХР) планируется использовать Дык, это ... определились уже и используем 10 лет как в этих самых "серьезных системах". Kachalovлично я считаю что в OLAP системах использование ХП может иметь смысл Гм. А зачем ХП в OLAP-базе ? Кубы дополнять - на то MSIS есть. Интеллектуальный анализ делать ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 23:04 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
strizh"Серьезная система" - это программная система, работающая в режиме 24*7 и обеспечивающая потребности бизнеса, генерирующего годовую добавочную стоимость в размере в 1000 раз больше затрат на создание этой программной системы. В ее составе OLTP-база данных, нагруженная большим количеством сложных и простых запросов, и OLAP-база (необязательно). - под Ваше определение вполне подходит какой-нибудь успешный web-проект :) Ведь Вы наверняка не это имели в виду а так все четко: 24x7 - не дай бог сайт 5 минут не работает, у хостера начинаются звонки от клиента с угрозами доб. стоимость в 1000 раз (с какого потолка взяли?) больше стоимости создания - видел проекты по продаже билетов в Интернет с такими показателями, в принципе видел некоторые успешные SEO-проекты которые тоже дают похожую прибыль - тут фишка в том чтобы система не очень дорого стоила, а для веба это характерно. база данных, нагруженная большим количеством сложных и простых запросов (что-то не так с нормализацией Вашей базы или с архитектурой, тут либо много простых и мало сложных, либо только сложные и все заросло травой с 90-х) - в общем Вы определитесь с OLAP или OLTP, т. е. в специфике системы, но и то и другое есть в web-проектах Вот и выходит что "сложная система" - это, в том числе, не особо крупный и нагруженный сайт Еще люблю когда говорят "большой проект" - Фрейда на вас нет, вообще ХЗ что, то ли бюджет большой, то ли база толстая, то ли нагрузка высокая. strizh Дык, это ... определились уже и используем 10 лет как в этих самых "серьезных системах". - про "серьезные системы" написал выше. Кстати Вы когда-нибудь видели ТЗ в котором использовался термин "серьезная система"? Скорее всего нет - отсюда вывод "серьезные системы" делают без ТЗ и без документации. Извините за стеб (он адресован не Вам лично), но просто не могу удержаться. strizh Гм. А зачем ХП в OLAP-базе ? Кубы дополнять - на то MSIS есть. Интеллектуальный анализ делать ? - а зачем они в OLTP? выходит что не нужны они нигде? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 23:35 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov Andrey, Так у меня процедуры на Update и delete не простые все таки. Я ее чуть под редактирую, но все равно вам будет понятно, что на клиенте мне это делать не улыбается. Код: 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. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 07:27 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
strizh И для себя я давно вывел аксиому фильтра, где должна находиться бизнес-логика : как только код какого-то процесса-расчета (то есть элемента БЛ) на клиенте превышает 5 строк - выношу его на сервер (как вьюшку, триггер, ХП ...). +1 Kachalov не путайте архитектуру и ТЗ на web-проект и НЕ web-проект. В том числе сабж (ХП) в web проектах имеет мЕньшее значение. Так уж исторически сложилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 09:52 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
baike2000что на клиенте мне это делать не улыбается."Не улыбается" это что значит? На языке клиента это сделать нельзя? Или это будет существенно сложнее? Ни в то ни в другое я не верю. Или лично вам T-SQL более приятен на вид? О вкусах не спорю, но речь не о вкусах шла, а о преимуществах. Естественно, что в случаях, когда речь идет об операции включающей некую "бизнес-логику", то появляется вопрос о месте реализации этой логики (в ХП или в другом слое) и в данном случае я ничуть не возражаю против ХП. Но апологеты процедур здесь декларировали какие-то преимущества процедур для абсолютно всех случаев, в том числе и не обремененных бизнес-логикой. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 10:57 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov Andreybaike2000что на клиенте мне это делать не улыбается. .... в том числе и не обремененных бизнес-логикой. например? Никто такого не говорил. Я прихожу к такому выводу, что "кто что знает, .... тот там и пишет" :) IMHO - БЛ неотрывна от данных - данные без БЛ никому не нужны - если данные - РЕЛЯЦИОННЫЕ по своей природе, то где их обрабатывать по бизнесу, если не в БД (рядом с БД :) ) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 11:14 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov Andreybaike2000что на клиенте мне это делать не улыбается."Не улыбается" это что значит? На языке клиента это сделать нельзя? Или это будет существенно сложнее?В данном случае на стороне клиента это будет как минимум медленнее работать, т.к. придётся делать внешнее управление транзакциями. Bogdanov AndreyЕстественно, что в случаях, когда речь идет об операции включающей некую "бизнес-логику", то появляется вопрос о месте реализации этой логики (в ХП или в другом слое) и в данном случае я ничуть не возражаю против ХП.Да, главным образом рассматривается этот случай. В примере baike2000 бизнес логика в хп есть. Bogdanov AndreyНо апологеты процедур здесь декларировали какие-то преимущества процедур для абсолютно всех случаев, в том числе и не обремененных бизнес-логикой.Да, есть и некоторые преимущества процедур для абсолютно всех случаев, которые тут уже описывали. Например, вынесение работы с данными в один слой и разработка этого слоя соотв. специалистами при наличии хп будет удобнее. Другое дело, что нужно оценивать величину этих преимуществ - конечно, процедуры совсем не обязательно использовать всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 11:38 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123например? Никто такого не говорил. На этом форуме не раз уже обсуждался подход с использованием CRUD (или SUID) процедур. Можете воспользоваться поиском. Также предлагаю посмотреть на название топика - оно предполагает, что обсуждаются преимущества (или недостатки) появляющиеся при замене обычных SQL-запросов процедурами. С недостатками мне все ясно, а вот про преимущества я хотел бы услышать, но пока никто ничего вразумительного не сказал. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 11:45 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov AndreyPetro123например? Никто такого не говорил. На этом форуме не раз уже обсуждался подход с использованием CRUD (или SUID) процедур. Можете воспользоваться поиском. ===== это не имеет отношения к сабжу. Или так скажем, граничный случай (инсерт только через процу). CRUD - разделение на 2 слоя ВНУТРИ БД Также предлагаю посмотреть на название топика - оно предполагает, что обсуждаются преимущества (или недостатки) появляющиеся при замене обычных SQL-запросов процедурами. С недостатками мне все ясно, ==== мне нет (Я не предлагаю CRUD). а вот про преимущества я хотел бы услышать, но пока никто ничего вразумительного не сказал. ==== тебе виднее, всё уже написано "БЛ - на сервер" - этим всё сказано. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 11:56 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
alexeyvgДа, главным образом рассматривается этот случай. Бессмысленно рассматривать этот случай. SQL - язык для работы с реляционными данными, а не язык для реализации бизнес логики. Глупо говорить о том, что прецедуры имеют преимущества перед SQL, так как позволяют реализовать бизнес-логику. С таким же успехом можно утверждать, что танк лучше мерседеса, так как стрелять умеет. В таких бессымысленных сравнениях я участвовать не буду. alexeyvgДа, есть и некоторые преимущества процедур для абсолютно всех случаев, которые тут уже описывали. Например, вынесение работы с данными в один слой и разработка этого слоя соотв. специалистами при наличии хп будет удобнее.А нельзя ли поподробнее это преимущество расписать. Что значит "удобнее" и почему? Мне, например, кажется, что удобнее просто создать таблицу, а потом в соответствующем классе на Java написать четыре SQL-оператора, чем городить еще и промежуточный слой в виде четырех хранимых процедур внутрь которых эти операторы запрятаны. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 11:57 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123 "БЛ - на сервер" - этим всё сказано. Я правильно понимаю, что других преимуществ кроме возможности реализации бизнес-логики у процедур вы привести не можете? Ну а то, что "сервера" разные бывают и можно реализовать БЛ на сервере бех ХП я говорить не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 11:59 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov AndreyPetro123 "БЛ - на сервер" - этим всё сказано. Я правильно понимаю, что других преимуществ кроме возможности реализации бизнес-логики у процедур вы привести не можете? Ну а то, что "сервера" разные бывают и можно реализовать БЛ на сервере бех ХП я говорить не буду. вы не можете понять, что "программист может всё", даже самые бредовые идеи реализовать. Есть только проблема в простоте-адекватности проекта, дешевизне проекта, и выполения поставленной задачи ограниченными рессурсами. "Сложнее всего в мире достигнуть простоты - это крайняя граница опыта и последнее усилие гения". George Sand. уж так случилось, что ООП язык клиента и Мира не реализуется в РСУБД. А хранить НЕпротиворечивые данные - надо. Приведите пример БЛ, которую лучше решать НЕ на сервере или НА сервере без ХП (ХП тут уже есть) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 12:19 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123уж так случилось, что ООП язык клиента и Мира не реализуется в РСУБД. А хранить НЕпротиворечивые данные - надо. Приведите пример БЛ, которую лучше решать НЕ на сервере или НА сервере без ХП (ХП тут уже есть) Вы никак не можете понять, что сервера бывают разные. И это не только сервера РСУБД. На некоторых серверах ООП языки вполне себе реализуются. Но в любом случае все это тема для другого разговора. Я уже писал, что меня не интересуют возможности ХП, как средства реализации бизнес-логики (нормальным ООП-языкам они уступают, но в случае двузвенного приложения других вариантов нет). Я хочу услышать о преимуществах ХП перед SQL-запросами в задаче сохранения/извлечения данных. А вы мне упорно бизнес-логику подсовываете. Есть что сказать кроме бизнес-логики? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 12:32 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov Andrey Мне, например, кажется, что удобнее просто создать таблицу, а потом в соответствующем классе на Java написать четыре SQL-оператора, чем городить еще и промежуточный слой в виде четырех хранимых процедур внутрь которых эти операторы запрятаны. К сожалению, удобнее создать, может прийти в противоречие с удобнее сопровождать, дорабатывать. Особенно если клиентские программеры и серверные разные челы. Серверник пишет SQL, передает его клиентисту, тот лезет в код: зависмость клиента от БД. А так во многих случаях на сервере поменял, а клиентисту даже ниче не говорили. Поменять в БД на сервере одно дело, на нескольких клиентах у заказчика другое, тем более удаленно. А представьте, например, ситуацию SQL стал тормозить со временем. Нуно ехать в командировку там оптимизировать. Шо же и еще потом и с клиентистом связываться? Када сам пишу примеры с клиентами для техпредложений, то пишу SQL в коде клиента, потому шо удобней, быстрей. А када реализуют в промышлненное, то, это удобство, уже вызывает опасения. Не говоря уже о случаях када, клиенты разные, а SQL общие во многих случаях (логика на серверной части приложения). А если хоть в одном случае это так, то уже из единообразия стиля тада и все так делать надежнее, иначе сопровождение может вызывать значительно больше беспокойства. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 12:40 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalovбаза данных, нагруженная большим количеством сложных и простых запросов (что-то не так с нормализацией Вашей базы или с архитектурой, тут либо много простых и мало сложных, либо только сложные и все заросло травой с 90-х) zapros Код: plaintext
Vrode da, a esli po nemu srabatyvaet trigger, delajushij sledujushij shag BP, na kotorom i obnovlenie drugih tablic (pereschet plana dostavki), i posylka uvedomlenij useram ? Vot i poluchaetsya, chto v sistemah s razvitoj BL na XP prostyh zaprosov ne bolshinstvo. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 12:40 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
vadiminfoА так во многих случаях на сервере поменял, а клиентисту даже ниче не говорили.В подавляющем большинстве случаев все ровно наоборот. В случае с процедурами работы по модификации на порядок больше, и выполняться она должна "согласованнее". Типовой случай - в работающей системе добавляют колонку в таблицу. Без процедур это добавление спокой проходит, а потом клиенты начинают использовать эту колонку по мере возникновения потребности. В случае с процедурами сразу же вместе с добавлением колонки надо поменять еще и все CRUD-процедуры - у них изменяется интерфейс и это требует пересборки клиентской части (причем всех клиентов, работавших с этими процедурами). Да, несомненно случаются и такие случаи, когда табличку правят, а интерфейс CRUD-процедур не трогают, но такие случаи вряд ли один процент всех случаев составляют. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 12:54 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov AndreyPetro123уж так случилось, что ООП язык клиента и Мира не реализуется в РСУБД. А хранить НЕпротиворечивые данные - надо. Приведите пример БЛ, которую лучше решать НЕ на сервере или НА сервере без ХП (ХП тут уже есть) Вы никак не можете понять, что сервера бывают разные. И это не только сервера РСУБД. На некоторых серверах ООП языки вполне себе реализуются. ===== на каких? Я пишу как клиента на ЯП-ООП, так и серверную часть на оракле. Однако ОБЪЕКТНО на нём не пишу. Про ООПБД или ОРСУБД давайте не будем, т.к. OFFTOP Но в любом случае все это тема для другого разговора. Я уже писал, что меня не интересуют возможности ХП, как средства реализации бизнес-логики (нормальным ООП-языкам они уступают, но в случае двузвенного приложения других вариантов нет). Я хочу услышать о преимуществах ХП перед SQL-запросами в задаче сохранения/извлечения данных. А вы мне упорно бизнес-логику подсовываете. Есть что сказать кроме бизнес-логики? ===== странное желание у Вас - без БЛ ХП не имеют смысла Типовой случай - в работающей системе добавляют колонку в таблицу ==== что за ИС-калькулятор?. Просто колонку без логики (связей, отчётов, форм) не добавляют ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 12:58 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123===== на каких? Ну например на любом J2EE сервере. :) Petro123странное желание у Вас - без БЛ ХП не имеют смыслаС этим утверждением полностью согласен. Но и разговаривать в таком случае в этом топике (посмотрите на заголовок) не о чем. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 13:05 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov AndreyPetro123===== на каких? Ну например на любом J2EE сервере. :) договорились :) ХП не нужны там, где сервер - импотент - просто хранилище данных. За непротиворечивость данных с точки зрения бизнеса ОН не отвечает. За это отвечают 3 дополнительных сервера, слоя, админа и зарплаты. Я не против этих...других, только решения у них больно дорогие. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 13:17 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
strizheto prostoj zapros ? Vrode da, a esli po nemu srabatyvaet trigger, delajushij sledujushij shag BP, na kotorom i obnovlenie drugih tablic (pereschet plana dostavki), i posylka uvedomlenij useram ? Vot i poluchaetsya, chto v sistemah s razvitoj BL na XP prostyh zaprosov ne bolshinstvo. - именно что "не надо делать сложным то что проще простого" C "Нутилус Помпилиус". Отправлять оповещения пользователям с помощью хранимых процедур или триггеров - это типичное извращение, которое должно реализовываться программно, с помощью нормального ЯП в отдельном уровне (предположительно в сервере приложений). На мой взгляд Вы привели пример того как не надо использовать СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 13:39 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123ХП не нужны там, где сервер - импотент - просто хранилище данных. - опять новинка в терминологии, теперь "сервера импотенты" (всем добавить в избранное). Извините, но Вас реально трудно понять - о чем конкретно идет речь?! Petro123Я не против этих...других, только решения у них больно дорогие. - на сегодняшний день большинство серверов приложений под JavaEE бесплатные или оплачивается только техническая поддержка. Держать на работе DBA который держит всю бизнес-логику системы у себя в голове, тоже небось недешево обходится. Особенно учитывая, что его увольнение автоматически означает полную переделку системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 13:46 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov AndreyДа, несомненно случаются и такие случаи, когда табличку правят, а интерфейс CRUD-процедур не трогают, но такие случаи вряд ли один процент всех случаев составляют. Что-то моя практика, говорит об обратном. У нас полно удаленных клиентов, и случаи када приходится править клиентов не так часто возникают, меньше 10% от всех. Зато када возникают, то геморно. А так нужен тока один серверист, так еще и процедура исправлеия: нужна тока Аська и там, чел который умеет запускать утилиту для команд SQL, PL/SQL. Он тупо копирует из Аськи и все. А это оч просто. Не то шо инсталировать клиентов, да еще на всех компах. Т.е. использование ХП по полной, и всех SQL в ХП имеет разумные доводы. Кроме того, када есть разделение на клиентистов и серверистов, то улучшается специализация. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 13:49 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
KachalovPetro123ХП не нужны там, где сервер - импотент - просто хранилище данных. - опять новинка в терминологии, теперь "сервера импотенты" (всем добавить в избранное). Извините, но Вас реально трудно понять - о чем конкретно идет речь?! Держать на работе DBA который держит всю бизнес-логику системы у себя в голове, тоже небось недешево обходится. Особенно учитывая, что его увольнение автоматически означает полную переделку системы. 1. СУБД не импотент - хранить НЕпротиворечивые для бизнеса данные СУБД импотент - хранить данные (за непротиворечивость отвечает другой) 2. "держать DBA дорого" :) чё-то я не понял, это какой уровень системы проектируем? Вы серьёзно считаете, что решения на J2EE дешевле по стоимости владения? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 14:20 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123 СУБД не импотент - хранить НЕпротиворечивые для бизнеса данные СУБД импотент - хранить данные (за непротиворечивость отвечает другой)Поздравляю с изобретением новых терминов. Осталось только добиться их мирового признания. :) Можете также задуматься о том имеют ли эти термины отношение к ХП. Для этого вам придется сильно над определением "непротиворечивости" поработать. А в остальном мне всегда импонировали экстремистские взгляды. Посему ваш мне тоже нравится. Жаль только, что на практике экстремизм проигрывает более гибким подходам. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 14:30 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
vadiminfoЧто-то моя практика, говорит об обратном.Если у вас бизнес-логика реализована в СУБД, то так скорее всего и есть. Но я уже говорил, что случай использования ХП для бизнес-логики не собираюсь рассматривать в контексте данного топика. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 14:31 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov Andrey, у вас портфолио есть? Я вам привёл свой пример ХП для клиент-сервера 2-х звенки. Заказчик хочет видеть таблицу должников с параметром вверху-ползунком. У меня всегда есть шаблоны, библиотеки и комьюнити http://www.databaseanswers.org/data_models/index.htm для разработки архитектуры. Что кроме слова J2EE есть у вас для "простого народа" на пальцах? Или гербалайфом торгуем? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 14:51 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123 СУБД не импотент - хранить НЕпротиворечивые для бизнеса данные СУБД импотент - хранить данные (за непротиворечивость отвечает другой) - я бы еще добавил определение: "система мачо" - СУБД хранит не противоречивые данные (т. е. СУБД не импотент) и бизнес логика вынесена в отдельный уровень (трехзвенка) на котором данные дополнительно проверяются на непротиворечивость при внесении и изменении Petro123 "держать DBA дорого" :) чё-то я не понял, это какой уровень системы проектируем? - я за перенос бизнес логики из ХП в отдельный уровень (трехзвенка) и использование ХП только в тех случаях когда они дают существенное преимущество по производительности Petro123Вы серьёзно считаете, что решения на J2EE дешевле по стоимости владения? - смотря что сравнивать и учитывать ли случай когда DBA умер (ну ладно - уволился) и оставил в наследство базу с путаной структурой и кучу недокументированных ХП и триггеров. Также еще раз при таких сравнениях придется определиться с масштабами и назначением системы, а то каждый участник топика под системой подразумевает что-то свое и с нездоровой горячностью доказывает свою правоту собеседникам которые имеют в виду что-то иное. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 14:52 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov, "система мачо" +5 согласен. ДОПОЛНИТЕЛЬНЫХ уровней может быть много (вместе с клиентскими). Особенно при нескольких серверах в гетерогенной среде. про 3 звена спорить бессмысленно и лень. Я надеялся что контекст топика про вынос SQL на клиента ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 14:59 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov и использование ХП только в тех случаях когда они дают существенное преимущество по производительности здесь играем (ООП), здесь не играем (процедурные хп), а здесь мы рыбу заворачивали (с) отличный подход сурьезного шпециалиста ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 15:06 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov AndreyvadiminfoЧто-то моя практика, говорит об обратном.Если у вас бизнес-логика реализована в СУБД, то так скорее всего и есть. Но я уже говорил, что случай использования ХП для бизнес-логики не собираюсь рассматривать в контексте данного топика. Не вся, наверное, но на распределение логики между сервеной и клиетской частями приложения выше названные соображения могут влиять. Конечно, есть парни, которые хотят налабать клиента независмомго от СУБД. У них другие приоритеты. Я скептически отношусь к этим идеям, но я помню, что я базист, и потому могу относиться к клиентской части предвзято. Потому не настаиваю, а говорю тока об альтернативах, и о преимуществах, которые, мне кажется, стоит учитывать время от времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 15:07 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
во наговорили :) При небольшом числе клиентов ХП на 1-2 порядка быстрее, т.е вся бизнес логика д.б. в ХП. При росте числа клиентов нагрузка на сервер БД растет. Когда производительность ХП сравняется с клиентом, пора переносить логику на клиента. Критичное число клиентов для среднего железа ~ 500-1000 Однако многие системы используют динамические вычисления, и тогда бизнес логика д.б. в ХП однозначно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 15:10 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalovя считаю что для "серьезной системы" вообще ХП не нужны. Кстати что Вы называете "серьезной системой"?Все просто - как разработчик (ну совсем не DBA), я достаточно сложной считаю систему, для которой имеет смысл распределять работу хотя бы традиционно на троих :) - БД, апп-сервер, клиент. Тогда каждый кусок есть черный ящик для остальных, и своя логика, от остальных независимая, есть в каждом. И при нормальном проектировании тогда логика обработки, формализуемая в реляционных терминах, естественно живет внутри СУБД, объектная - внутри апп-сервера. И противопоставлять их друг другу - просто бред. Kachalovто очевидно что подавляющее большинство таких систем относится к типу OLTP-приложений, которые прекрасно могут обходиться без ХП и где использование ХП означает скорее архитектурную безграмотность разработчика, а не реальную необходимость.Безграмотностью разработчика в любых системах является нежелание разбивать систему на части с описанными интерфейсами между ними. Использование ХП - возможно, не лучший (не самый понятный) интерфейс между БД и апп-сервером, но может быть с успехом заменен на те же вью с триггерами, внутри которых - те же ХП. Тогда и любимые всеми (но по-разному:) ) ОРМы думают, что работают с БД, и разработчик БД в своей части делает все, что считает нужным. KachalovP.S. про масштабирование и кластеризацию в контексте ХП что-то никто не хочет опонировать :) Вопросы типа: "сколько стоит кластеризуемая БД?" явно оказались неудобными Не смешите людей - кластеризация апп-серевера, распараллеливающия обработку логики и кластеризациция БД, распараллеливающия обработку сверхбольших массивов данных - это совершенно разные (и не сключающе друг друга) задачи, противопоставлять их нельзя. И если появилась нечастая необходимость кластеризации именно БД, то стоимость СУБД будет очень небольшим довеском к стоимости железа. Еще раз не о "плюсах", а о необходимости логики в БД: 1. Все, что можно сделать на чистом SQL - надо на нем и делать, процедурная обработка данных - зло . Параллелизм внутри запроса не может заменить никакая процедура, где бы она не находилась, как и оптимизацию этого запроса на основании актуальных данных (статистики). Естественно, писать многостраничные запросы, как и следить за целостностью модели в БД может только специалист в конкретной СУБД, эту БД проектирующий, и выносить все это за рамки БД - бред. Эту логику надо маскировать для использования в следующих уровнях обработки (апп-сервер, например) с помощью вью и/или ХП (в зависимости от СУБД), формируя для этих уровней интерфейс к БД. 2. Все, что нельзя сделать декларативно, но что касается только и именно обработки в рамках реляционной модели - лучше делать внутри БД, она это сделает гораздо эффективнее. Что, опять-таки, позволит разделить логические уровни при проектировании. 3. Внешние отн. реляционной модели задачи естественно могут (и как правило должны) решаться вне СУБД, на следующих уровнях. P.S. С моей точки зрения - данный спор ни о чем, каждый инструмент должен решать свойственные именно ему задачи. И раскидать задачи проекта по соответствующим инструментам есть прямая обязанность проектировщика системы. P.P.S. А ХП именно вместо запросов (а не вместе с ними), т.е. замена декларативного SQL на процедурную обработку - зло безусловное. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 15:13 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Bogdanov Andrey, Что-то мне непонятны отличия при добавлении колонки в таблицу? Bogdanov AndreyТиповой случай - в работающей системе добавляют колонку в таблицу. Без процедур это добавление спокой проходит, а потом клиенты начинают использовать эту колонку по мере возникновения потребности. В случае с процедурами сразу же вместе с добавлением колонки надо поменять еще и все CRUD-процедуры - у них изменяется интерфейс и это требует пересборки клиентской части (причем всех клиентов, работавших с этими процедурами). Какая разница в обновлении клиента и сервера при использовании процедур или без использования? Изменилась таблица - значит поменялась логика, а это значит надо обновить и сервер и клиента и среднее звено. Или не так? Или я что-то пропустил? Bogdanov AndreyВ случае с процедурами сразу же вместе с добавлением колонки надо поменять еще и все CRUD-процедуры - у них изменяется интерфейс и это требует пересборки клиентской части (причем всех клиентов, работавших с этими процедурами). Если задуматься, то он изменится хоть применяешь, хоть не применяешь процедуры... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 15:25 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
baike2000Или я что-то пропустил? Пропустили: он как раз выдвигал довод, что придется менять и там. Это я говорил, что менять достаточно буит тока на сервере во многих слуях на практике, если все SQL в ХП. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 15:30 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
vadiminfobaike2000Или я что-то пропустил? Пропустили: он как раз выдвигал довод, что придется менять и там. Это я говорил, что менять достаточно буит тока на сервере во многих слуях на практике, если все SQL в ХП. С этим я очень даже согласен. Ну я говорю именно про колонку в таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 15:34 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Favn P.P.S. А ХП именно вместо запросов (а не вместе с ними), т.е. замена декларативного SQL на процедурную обработку - зло безусловное. вы наверно имели ввиду клинику вроде: вместо Код: plaintext
Код: plaintext
процедурно циклом Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 15:41 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.!Kachalov и использование ХП только в тех случаях когда они дают существенное преимущество по производительности здесь играем (ООП), здесь не играем (процедурные хп), а здесь мы рыбу заворачивали (с) отличный подход сурьезного шпециалиста - специалист это не осел и не баран (для которых характерна позиция - "вот так и никак иначе"), он должен видеть весь спектр возможностей и выбирать наиболее эффективные варианты. Вопрос в том что в конкретном случае значит "эффективный"? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 16:01 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
FavnKachalovя считаю что для "серьезной системы" вообще ХП не нужны. Кстати что Вы называете "серьезной системой"?Все просто - как разработчик (ну совсем не DBA), я достаточно сложной считаю систему ... - ага, теперь кроме "серьезных систем" всплыли еще какие-то "достаточно сложные системы" Ну Вы хоть читайте что пишите. Favn И при нормальном проектировании тогда логика обработки, формализуемая в реляционных терминах, естественно живет внутри СУБД, объектная - внутри апп-сервера. И противопоставлять их друг другу - просто бред. - просто бред не понимать что пользователю нужны данные в удобной форме и, если 20 лет назад, таблично реляционная форма представления была достаточно удобной, то по мере усложнения решаемых бизнес задач объектное представление данных стало более естественным для описания данных имеющих большое количество и иерархию связей. Поскольку РСУБД это историческая данность, ООП - это жизненная необходимость, возникает потребность в объектно реляционном маппинге, при использовании которого вполне естественно осуществлять обработку данных в объектном виде, хотя, в некоторых случаях выполнение логики на РСУБД может оказаться более эффективным. Извиняюсь, устал ... и некогда. Засим временно откланяюсь, хотя Ваш топик благодатный для трепа. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 16:13 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov просто бред не понимать что пользователю нужны данные в удобной форме и, если 20 лет назад, таблично реляционная форма представления была достаточно удобной, то по мере усложнения решаемых бизнес задач объектное представление данных стало более естественным для описания данных имеющих большое количество и иерархию связей. Поскольку РСУБД это историческая данность, ООП - это жизненная необходимость, возникает потребность в объектно реляционном маппинге, при использовании которого вполне естественно осуществлять обработку данных в объектном виде, хотя, в некоторых случаях выполнение логики на РСУБД может оказаться более эффективным. - представление не зависит от данных, и уж тем более от логики - потребность в коммунизме, ООСУБД и искусственном интелекте уже давно назрела ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 16:48 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123вы наверно имели ввиду клинику вроде...Нет, клиника совсем в другом. Если вместо сложного MERGE в процедуре появляется кучка циклов с update-курсорами и промежуточными массивами, или вместо SELECT с with-выражениями и window-функциями появляются те же циклы с курсорами, "процедура", где бы она не находилась, становится источником проблем. И ХП с вью, по-моему, нужны в первую очередь для изоляции сложного SQL-кода от разработчиков, не владеющих мощным современным SQL. Да, в общем, и не дОлжных владеть. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 17:05 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Favn, да, это проблема. Просто ум заточенный на ООП часто плохо воспринимает реляционную алгебру и наоборот. Много зависит от профи-разработчика БД. Даже в бОльшей степени, чем от клиентщика (он всё более-более тонкий и презентационно-витринный). а так, если в общем, то плохой синтаксис-стиль есть везде :) http://www.govnokod.ru/delphi ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 17:23 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov- ага, теперь кроме "серьезных систем" всплыли еще какие-то "достаточно сложные системы" Ну Вы хоть читайте что пишите.Да, между "сложными" и "серьезными" - в данном контексте просто огромная лингвистическая разница :). Еще раз - и то, и другое - с точки зрения проектирования и разработки. Kachalov- просто бред не понимать что пользователю нужны данные в удобной форме и, если 20 лет назад, таблично реляционная форма представления была достаточно удобной, то по мере усложнения решаемых бизнес задач объектное представление данных стало более естественным для описания данных имеющих большое количество и иерархию связей. Кстате, о бреде - пользователь-то тут причем? Он у Вас процедуры вызывает или на SQL пишет? Вид данных, получаемых пользователем, к серверному коду вообще никакого отношения не имеет. Если используется РСУБД - БД должна проектироваться в терминах РМД, и ее данные должны обрабатываться в рамках этой модели. А все, что работает с БД, может использовать любую другую модель абстракции, уже на своем уровне. Нормально спроектированная БД - это не набор таблиц, а законченный уровень абстракции с описанными интерфейсами для работы с ним, черный ящик. KachalovПоскольку РСУБД это историческая данность, ООП - это жизненная необходимость, возникает потребность в объектно реляционном маппинге, при использовании которого вполне естественно осуществлять обработку данных в объектном виде, хотя, в некоторых случаях выполнение логики на РСУБД может оказаться более эффективным.Я где-то с этим спорил? Не замечал. Просто отдавать объектному уровню хоть в апп-сервере, хоть на клиенте "сырые" таблицы вместо вью и процедур - крайне опасный во всех смыслах подход. Хотя и самый простой (примитивный). Kachalovхотя, в некоторых случаях выполнение логики на РСУБД может оказаться более эффективным.Если эта логика описана в рамках РМД - всегда. Еще раз - каждый инструмент должен решать свои задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 17:24 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123Просто ум заточенный на ООП часто плохо воспринимает реляционную алгебру и наоборот. Много зависит от профи-разработчика БД.Я думаю, что это скорее нежелание (лень) изучить. В конце концов, логика предикатов и работа с множествами - общие и одинаково нужны для любого программирования. Другое дело, что ООП-разработчику хорошее знание SQL может быть и не нужно, если он работает с БД через продуманный интерфейс. И даже если РСУБД и ООП разработчик - одно лицо, в грамотном проектировании это мало что меняет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 17:33 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
KachalovПоскольку РСУБД это историческая данность, ООП - это жизненная необходимостьНу, это просто заклинание. Могу сказать, что РСУБД это жизненная необходимость, ООП - это историческая данность. При этом я могу всё таки представить некую доказательную базу, а не просто голое утверждение. Kachalov- просто бред не понимать что пользователю нужны данные в удобной форме и, если 20 лет назад, таблично реляционная форма представления была достаточно удобной, то по мере усложнения решаемых бизнес задач объектное представление данных стало более естественным для описания данных имеющих большое количество и иерархию связей.По моему, вы не совсем верно представляете разницу ролей в современном мире между ООП-языками и платформами и РСУБД. Реляционные данные (РД) - это актив компании, это большая доля из того, что она стоит, а иногда и всё, что она стоит. Причём "реляционные данные" - это независит от того, есть-ли у компании РСУБД или даже вообще компьютеры. Просто есть массивы множеств данных, между которыми есть связи по значениям атрибутов. Очень важно здесь то, что РД появляются и становятся активом компании без инициации какого-либо программирования, создания объектной модели, и т.д., важно лишь позаботиться об их сохранении и эффективном использовании. РД - это естественно и первично. При проектировании, например, ООП-приложения делают маппинг сущностей на объекты, а не наоборот. Далее, вполне логично хранить эти реляционные данные и управлять ими в РСУБД. Зачем компании менять десять раз платформы и технологии для РД в течении их активной жизни (а это минимум десятки лет), мирясь с неминуемыми искажениями и потерями при их смене (это не считая собственно затрат на смену платформ)? Как следует из всего этого, период использования ООП при работе с РСУБД - это просто короткий период применения удобной и продуктивной ООП-технологии при работе с РД; соответственно, важно понимать, что является первичным, а что вторичным, и не ставить программирование вперёд данных . Возвращаясь к вопросу - где реализовывать логику: Разумеется, никто не против применения АПП-серверов и ООП, на нынешнем этапе, когда используются ООП-языки для разработки пользовательских приложений. Однако вполне логично работать с РД в их максимально нативном хранилище - РСУБД. Это хотя бы делает вложения максимально долгоиграющими, это позволяет поддерживать общий пул РД и БЛ. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2010, 09:40 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
alexeyvg, с точки зрения практика, со всем согласен. с точки зрения теоретика, авторПричём "реляционные данные" - это независит от того, есть-ли у компании РСУБД или даже вообще компьютеры. Просто есть массивы множеств данных, между которыми есть связи по значениям атрибутов. почему в активах лежат реляционные, когда природа их объектна ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2010, 10:22 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123alexeyvg, с точки зрения практика, со всем согласен. с точки зрения теоретика, авторПричём "реляционные данные" - это независит от того, есть-ли у компании РСУБД или даже вообще компьютеры. Просто есть массивы множеств данных, между которыми есть связи по значениям атрибутов. почему в активах лежат реляционные, когда природа их объектна ?Разумеется, мир состоит из объектов. Но я считаю, что люди не могут воспринимать объекты как объекты. Они упрощают их до множеств и атрибутов. Кроме того, если говорить не о реальном мире, а о хранящейся в компании информация - это хоть иногда и объекты, но уж очень разнородные и абсолютно не стыкующиеся друг с другом. А чаще - это именно записи в чистом виде, в которых пытливый ум может найти атрибуты и построить отношения с другими записями. Для примера - Книга Продаж, налоговые уведомления, списки названий и контактов клиентов у сейлов (конечно, у каждого в своём формате, в т.ч. и в памяти), Книги кадрового учёта. Конечно, Книга Продаж (бумажная) - это объект, но работа с ней как с объектами - это плодить сущности сверх необходимого :-) Что-то из этого есть в компах, причём возможно даже в виде объектов на АПП-серверах. Но эти софтовые объекты появились позже, вторичны, и возможно, неполно и/или искажённо отражают реальные объекты окружающего мира и реляционное представление этого мира. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2010, 11:47 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
alexeyvg, спасибо за интересные мысли. Хотя я считаю, что человек изначально НЕ мыслит реляционно. Просто при переложении информации в комп и структуировании её требуется упрощённая реляционная модель. До объектного ПО и СУБД ещё далеко , но ОН будет...... :) Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2010, 12:13 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123alexeyvg, спасибо за интересные мысли. Хотя я считаю, что человек изначально НЕ мыслит реляционно. Просто при переложении информации в комп и структуировании её требуется упрощённая реляционная модель. До объектного ПО и СУБД ещё далеко , но ОН будет...... :) Удачи!Ну да, наверное, с реляционностью мышления я погорячился - просто я сам работаю с РСУБД :-) Я просто актентировал внимание на то, что та информация, которая есть в наличии у компаний и которая их актив, всё таки больше в реляционном виде. Нельзя представить работу с имеющейся бумажной Книгой Продаж изначально как с объектом, но можно как с записями и атрибутами. И только после этого этапа можно сделать программный объект. "До объектного ПО и СУБД ещё далеко , ОН будет" - с этим я согласен, но нужно хотя бы увести ООП от программирования - это ключевой и абсолютно необходимый момент. Должно быть так, как описывается работа с компами в фантастических произведениях, и как уже есть в реляционных бд - чтобы можно было взять объект (сложный, с милионами элементов) с одной системы, и спокойно использовать в другой, о которой авторы первой не могли и подозревать. Т.е. нужна теоретическая база и станлдарты, чего для ОБД пока нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2010, 12:26 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
alexeyvg Разумеется, мир состоит из объектов. ... Я просто актентировал внимание на то, что та информация, которая есть в наличии у компаний и которая их актив, всё таки больше в реляционном виде. Нельзя представить работу с имеющейся бумажной Книгой Продаж изначально как с объектом, но можно как с записями и атрибутами. И только после этого этапа можно сделать программный объект. Kachalovпользователю нужны данные в удобной форме и, если 20 лет назад, таблично реляционная форма представления была достаточно удобной, то по мере усложнения решаемых бизнес задач объектное представление данных стало более естественным для описания данных имеющих большое количество и иерархию связей. Поскольку РСУБД это историческая данность, ООП - это жизненная необходимость - собственно и я говорил примерно о том же ;) alexeyvgНо я считаю, что люди не могут воспринимать объекты как объекты. Они упрощают их до множеств и атрибутов. - очень люблю на лекциях вспоминать пример из жизни: как-то услышал разговор женщин между собой, где одна женщина говорила другой - "у меня, у мужа, на работе ..." ни дальше про работу мужа. Такие безграмотные с точки зрения русского языка конструкции можно часто услышать. По моему это доказательство того что люди мыслят объектно или как минимум используют структуры :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2010, 12:38 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov [у меня].[у мужа].[на работе]. ) в ООБД так и сделано ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2010, 16:25 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123Kachalov [у меня].[у мужа].[на работе]. ) в ООБД так и сделано Пик ожиданий связанных с ООБД, скорее всего, прошел не менее 10 лет. Счас спад ожиданий. Второй волны пока не видно. Так что, возможно, вспоминать сейчас об ей либо слишком поздно, либо слишком рано. Мапировать объекты на реляционные таблы, тоже выглядит больше как двойная работа (сначало проектироваль РБД, потом еще и классы), двойные риски: плохо спроектировали и то и другое, а выигрышь не вседа очевиден. Все же для типовых задач пошли по пути, в котором ООП занимаются производители Сишарпов, Дельфей, Васиков лабая библиотеки классов с датасетами, адаптеров. Видимо, пока это и есть наибольший успех ООП, а не доморщенное лобание объектов предметной области. Ить плохо спректровнную ОО модель исправлять сложно, а хорошую налабать сложгновато буит. А выигрышь в случае успеха может быть не значителен. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2010, 23:57 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
vadiminfoМапировать объекты на реляционные таблы, тоже выглядит больше как двойная работа (сначало проектироваль РБД, потом еще и классы), двойные риски: плохо спроектировали и то и другое, а выигрышь не вседа очевиден. - проблема не в двойной работе, а в том что часть работы уже сделана :( У большинства заказчиков информационных систем (ИС) существенного масштаба уже есть данные хранимые в РСУБД (часто в совершенно диком виде) и к этим данным написано некоторое количество софта, который частично планируется заменить новой ИС, а часть софта заказчик считает удовлетворяющей его потребности и отказываться от нее не желает. Короче - вариант "все с нуля" не пройдет. В итоге и приходится сопрягать разрабатываемую ИС (использующую ООП) с тем слабо документированным "авгием" который скопился у заказчика (ХП, триггеры, криво спроектированные таблицы и т. п.). Отсюда и сложный объектно-реляционный маппинг и ненависть к тем кто все это сотворил (они тоже зачастую заложники ситуации) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2010, 00:32 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Kachalov- проблема не в двойной работе, а в том что часть работы уже сделана :( У большинства заказчиков информационных систем (ИС) существенного масштаба уже есть данные хранимые в РСУБД (часто в совершенно диком виде) и к этим данным написано некоторое количество софта, который частично планируется заменить новой ИС, а часть софта заказчик считает удовлетворяющей его потребности и отказываться от нее не желает. Короче - вариант "все с нуля" не пройдет. В итоге и приходится сопрягать разрабатываемую ИС (использующую ООП) с тем слабо документированным "авгием" который скопился у заказчика (ХП, триггеры, криво спроектированные таблицы и т. п.). Отсюда и сложный объектно-реляционный маппинг и ненависть к тем кто все это сотворил (они тоже зачастую заложники ситуации) Возможно, проблем значительно больше, так что и в случае варианта "с нуля" в настоящее время без применения РСУБД содержит риски в плане дипрессии программного обеспечения. Т.е. пока все выглядит так, что там где РМД не адекватна, и другие подходы абсолютно не реляционные (никак не использующие реляционные подходы) не достаточно адекватны. А там где РМД адекватна другие все так же не достаточно адекватны. А это многие типовые среди информационного обеспечения задачи. А без вытеснения РСУБД в типовых задачах, новые подходы имеют много рисков заглохнуть в любой момент. Как следствие попытки поиска решений с сохранением всего полезного от РМД, т.е. расширения оной, включая, например, ОРМД. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2010, 09:48 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
повторюсь, я за научную фантастику, но ООБД даже на научную не тянет. Тока на популярную. Это в принципе, как колесо, которого нет в природе. Ну и ещё маркетинг производителей (поддерка наследования и классов в Оракле) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2010, 10:09 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123повторюсь, я за научную фантастику, но ООБД даже на научную не тянет. Тока на популярную. Это в принципе, как колесо, которого нет в природе. Ну и ещё маркетинг производителей (поддерка наследования и классов в Оракле) В Оракле не ООБД, а ОРБД. Это две существенные разницы так как эти подходы противопоставляются друг другу: первый начисто отрицает РМД, второй есть расширение оной. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2010, 10:17 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
vadiminfoТ.е. пока все выглядит так, что там где РМД не адекватна, и другие подходы абсолютно не реляционные (никак не использующие реляционные подходы) не достаточно адекватны. А там где РМД адекватна другие все так же не достаточно адекватны. - ну если РМД адекватна задаче построения на ней объектной модели, то и объектно-реляционный маппинг делается легко и работает хорошо, а если нет, то и маппинг делать сложно и производительность теряется :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2010, 10:54 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
KachalovvadiminfoТ.е. пока все выглядит так, что там где РМД не адекватна, и другие подходы абсолютно не реляционные (никак не использующие реляционные подходы) не достаточно адекватны. А там где РМД адекватна другие все так же не достаточно адекватны. - ну если РМД адекватна задаче построения на ней объектной модели, то и объектно-реляционный маппинг делается легко и работает хорошо, а если нет, то и маппинг делать сложно и производительность теряется :) IMHO плюс РМД в построении МД. Это соблюдение законов моделирования предметной области. Его основного закона - УПРОЩЕНИЕ модели реального мира. Без этого, все классы и сущности, которые пришли в голову прикладнику-клиентщику, были бы в хранилище данных компании. Скульптор (архитектор БД) только отсекает всё лишнее. И РМД только помогает в этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2010, 11:22 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
vadiminfo Пик ожиданий связанных с ООБД, скорее всего, прошел не менее 10 лет. Счас спад ожиданий. Второй волны пока не видно. Так что, возможно, вспоминать сейчас об ей либо слишком поздно, либо слишком рано. уже начались метания и в подходе к ООП, переболев оосубдами и ормами начинается движение в сторону LINQ в котором ООП вообще не проглядывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2010, 11:34 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Petro123IMHO плюс РМД в построении МД. Это соблюдение законов моделирования предметной области. Его основного закона - УПРОЩЕНИЕ модели реального мира. Одним из существенных плюсов РМД является манипулирование данными в этой МД, которая обеспечивает "УПРОЩЕНИЕ" получения информации о реальном мире. А получение таковой есть "основная" цель создания ИС. Можно придумать какие угодно по выразительности МД, но если манипулирование остается сложным, то это сводит все достоинства на нет. Реальный мир - самая содержательная БД, но извлеч нужную инфу сложно. Числами легко манипулировать, но описать сложно предметну область. Т.е. имеет значение оптимум. И РМД пока наииболее опртимальна в этом плане. Шобы ея отменить нуно найти шо-то более оптимальное. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2010, 11:49 |
|
Хранимые процедуры против обычных SQL-запросов
|
|||
---|---|---|---|
#18+
Yo.!Alex SВероятность отваливания перегруженной СУБД все-таки повыше. А апп-сервера очень легко резервируются. (Все это при прочих равных - т.е. конфигурация СУБД одна и та-же, но в одном случае есть апп-сервера, выполняющие часть работы, а в другом только СУБД) с чего бы одинокой субд быть более перегруженой если ресурсов она будет тратить много меньше чем апп сервер+субд+гоняние трафика между апп-сервером и субд ? от того что ты зарезервируешь апп-сервер субд под апп-сервером надежней одинокой субд не станет. да и резервировать одинокую субд (standby, репликация, лог шипинг) и гонять RO репорты на стендбай не так уж сложно. Слушайте, я вот почитал ваши и его высказывания. У вас совершенно разный уровень технической подготовки. Вы абсолютно правильно привели все аргументы, что ХП гораздо выгоднее. Такое ощущение, что вам просто нравится спорить. Прошу вас, оставьте человека в покое, если он не внемлет ничего из написаного. Тема превращается в банальный флейм. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2010, 16:46 |
|
|
start [/forum/topic.php?all=1&fid=33&tid=1548373]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
157ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 244ms |
0 / 0 |