Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5 6 7 8 9 10 .. 14   вперед  Ctrl
 Re: использование хранимых процедур  [new]
StalkerS
Member

Откуда: Melbourne
Сообщений: 1344
Dimitry Sibiryakov

Хотите сказать, что MS отрастил своему SQL серверу cost-based
оптимизатор? В какой версии?

а в какой версии у него был rule-based ? =) Зачем отращивать то, что уже было с рождения ? (как минимум с 2000 версии)

А вообще динамический sql (при желании) ведь тоже параметризуется (что исключает инджекшен) и кэшируется. Так что имхо ХП более важны с точки зрения безопасности и интерфейса БД к своим клиентам, чем с точки зрения скорости

Кстати иногда динамический sql все равно нужен (что-бы не положить сервер неподьемным запросом), но собираться он должен все равно в ХП для инкапсуляции
25 окт 09, 13:46    [7835382]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Dimitry Sibiryakov

locky
А можно с этого места немного поподробнее?

Хотите сказать, что MS отрастил своему SQL серверу cost-based
оптимизатор? В какой версии?

Насчет 6.5. не уверен (давно было), так что скажу - минимум с 7-ки. Лет 11 уже, поди, минуло.
хотя и в 6.5, кажись, уже было....
25 окт 09, 14:39    [7835459]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
StalkerS

А вообще динамический sql (при желании) ведь тоже параметризуется (что исключает инджекшен)

В оракле с этим получше будет :(
25 окт 09, 14:40    [7835461]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

Dimitry Sibiryakov пишет:

> Хотите сказать, что MS отрастил своему SQL серверу cost-based
> оптимизатор? В какой версии?

Он в MSSQL с рождения cost-based.

Posted via ActualForum NNTP Server 1.4

25 окт 09, 18:02    [7835723]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

locky пишет:

> Насчет 6.5. не уверен (давно было), так что скажу - минимум с 7-ки. Лет
> 11 уже, поди, минуло.

С 3-ки. Хотя вы даже не знаете наверное о существовании такой версии.

Posted via ActualForum NNTP Server 1.4

25 окт 09, 18:04    [7835727]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
hvlad
Member

Откуда:
Сообщений: 11554
MasterZiv

С 3-ки. Хотя вы даже не знаете наверное о существовании такой версии.
И называлась она совсем не MSSQL ;)
25 окт 09, 18:22    [7835756]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
MasterZiv

locky пишет:

> Насчет 6.5. не уверен (давно было), так что скажу - минимум с 7-ки. Лет
> 11 уже, поди, минуло.

С 3-ки. Хотя вы даже не знаете наверное о существовании такой версии.

Ну, с трёшки так с трёшки, спорить не буду.
Я начал с 6.5.
25 окт 09, 20:03    [7835922]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
StalkerS
Member

Откуда: Melbourne
Сообщений: 1344
locky

В оракле с этим получше будет :(

инджекшн там вообще не возможен ? А это как ?
26 окт 09, 01:05    [7836357]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
StalkerS
locky

В оракле с этим получше будет :(

инджекшн там вообще не возможен ? А это как ?

Возможен.
Но, емнип, при помощи чего-то вроде DBMS_SQL можно создавать запросы с переменным к-вом параметров.
в скуле мне пока известен единственный способ создать такое
declare @stmt nvarchar(max)
set @stmt = 'declare @p1 int select @p1 = ... from VarTable...
....
select * 
from Table where Field1 = @p1 and ....
'
exec sp_executesql @stmt
т.е. невозможно построить запрос с плейсхолдерами (которых неизвестное к-во) и потом забайндить на них значение - приходится делать довольно кривой DSQL.
26 окт 09, 01:11    [7836360]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
Денис Ильин
Member

Откуда: Железнодорожный
Сообщений: 242
Ну, плейсхолдеры особенно и не нужны.
Лично мне хватает возможности передавать в хранимую процедуру в качестве параметра какой нибудь XML. Вот честно - из почти 2-х тысяч хранимок динамический sql только в 5..6..и штучках, и то - в процедурках административного характера, пользователь их даже и не зовёт.
26 окт 09, 08:54    [7836702]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
Albatross
Member

Откуда:
Сообщений: 1001
SergSupr

В MS SQL появились индексы по битовым полям?

Даже в 2000 были. Из EM их создать нельзя было, но вручную - пожалуйста
26 окт 09, 09:14    [7836755]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

hvlad пишет:

> И называлась она совсем не MSSQL ;)

Да, называлась она SQLServer.

Posted via ActualForum NNTP Server 1.4

26 окт 09, 10:07    [7836920]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
DPH3
Guest
Ну, про производительность вроде бы все уже сказали (что по сравнению с просто SQLем разницы никакой, прирост может быть за счет экономии сетевого трафика при реализации последовательности select с промежуточной обработкой, падение может быть из-за логики пересчета плана запроса).

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

Правда, вроде бы еще используют хранимки для обхождения ограничений и проблем ORMов (по крайней мере в мире .Net это обычная практика, судя по форумам).

Зачем они сейчас еще нужны - не знаю :)
28 окт 09, 13:54    [7849973]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10528
DPH3
Ну, про производительность вроде бы все уже сказали (что по сравнению с просто SQLем разницы никакой, прирост может быть за счет экономии сетевого трафика при реализации последовательности select с промежуточной обработкой, падение может быть из-за логики пересчета плана запроса).

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

Правда, вроде бы еще используют хранимки для обхождения ограничений и проблем ORMов (по крайней мере в мире .Net это обычная практика, судя по форумам).

Зачем они сейчас еще нужны - не знаю :)

Нужны еще как.
Помимо производительности еще и облегчение администрирования, все права даются на хранимки, а напрямую с таблицами клиент работать не должен. Да и изменение логики проходит проще - без сборки новой версии клиента, а просто заменой логики хранимки на сервере.
29 окт 09, 09:44    [7853571]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54789

barrabas

Да и изменение логики проходит проще - без сборки новой версии клиента,
а просто заменой логики хранимки на сервере.

Можно посмотреть на пример такого изменения логики?

Posted via ActualForum NNTP Server 1.4

29 окт 09, 13:02    [7855433]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10528
Dimitry Sibiryakov

barrabas

Да и изменение логики проходит проще - без сборки новой версии клиента,
а просто заменой логики хранимки на сервере.

Можно посмотреть на пример такого изменения логики?

да легко.
1. банальная трудновыявляемая ошибка, неправильный результат на определенных параметрах, подправил процедуру и всё, никаких пересборок проекта.
2. Добавить например аудит или ещё чего.
29 окт 09, 13:07    [7855471]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
ЛП
Guest
2 barrabas
DPH3
...
По мере перехода на трехзвенки, смысл хранимок несколько снижается (ну, кроме совсем уж экстремальных задач с требованиями к производительности).
...
Зачем они сейчас еще нужны - не знаю :)

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

Выделенное цветом Вы с первого раза не заметили?
В трехзвенках (многозвенках) - клиент не работает с таблицами, изменение логики происходит без пересборки клиента, итд. Т.е. плюсов от использования хранимок не наблюдается. А минусы наблюдаются (размазывание логики, дополнительная раздача прав, и прочие мелкие радости администрирования).
29 окт 09, 13:08    [7855481]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10528
Проще на самом деле.
Меньше действий
с процедурами:
1. исправил / закомитил в svn/cvs/меркуриал
2. выполнил

без процедур:
1. Исправил / закомитил
2. собрал
3. выложил / в зависимости от слоя еще и всех выгнать из проги может понадобится
4. сказал всем перезайти.
29 окт 09, 13:11    [7855515]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10528
ЛП
2 barrabas
DPH3
...
По мере перехода на трехзвенки, смысл хранимок несколько снижается (ну, кроме совсем уж экстремальных задач с требованиями к производительности).
...
Зачем они сейчас еще нужны - не знаю :)

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

Выделенное цветом Вы с первого раза не заметили?
В трехзвенках (многозвенках) - клиент не работает с таблицами, изменение логики происходит без пересборки клиента, итд. Т.е. плюсов от использования хранимок не наблюдается. А минусы наблюдаются (размазывание логики, дополнительная раздача прав, и прочие мелкие радости администрирования).

а средний слой пересобирать не нужно ?
стопить сервис там и другие прелести.
29 окт 09, 13:13    [7855529]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10528
ИХМО средний слой бы тоже делал без логики, а чисто передатчиком команд и результатов, на нем бы сделал кэширование (если нужно), ну и что то специфическое с чем нормальная субд хуже справится.
29 окт 09, 13:17    [7855570]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54789

barrabas
Меньше действий
с процедурами:
1. исправил / закомитил в svn/cvs/меркуриал
2. выполнил

Получил в лоб "object in use", пошёл всех выгонять из базы.

Posted via ActualForum NNTP Server 1.4

29 окт 09, 13:27    [7855683]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
ЛП
Guest
2 barrabas
а средний слой пересобирать не нужно ?

Вы таки определитесь, про Вы клиентскую часть говорили или нет - когда отвечали на сообщение про трехзвенки.
А так я могу и серверные (СУБД-шные) хранимые процедуры пересобирать. На дотнете хранимку наваяю, в сиквел засуну.
И такую модификацию логики придумаю, что пользователей выгнать придется.

ИХМО средний слой бы тоже делал без логики, а чисто передатчиком команд и результатов, на нем бы сделал кэширование (если нужно), ну и что то специфическое с чем нормальная субд хуже справится.

Вот и занахуа такой средний слой нужен, спрашивается?
29 окт 09, 13:28    [7855700]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35345
ЛП
Вот и занахуа такой средний слой нужен, спрашивается?

чтобы исключить
ЛП
размазывание логики, дополнительная раздача прав, и прочие мелкие радости администрирования.
29 окт 09, 13:31    [7855744]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
ЛП
Guest
iscrafm
ЛП
Вот и занахуа такой средний слой нужен, спрашивается?

чтобы исключить
ЛП
размазывание логики, дополнительная раздача прав, и прочие мелкие радости администрирования.

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

Приложение или двузвенное, или многозвенное. Если решили (по каким-либо причинам) делать многозвенку - то совершенно логично именно туда и запихнуть логику, права, и прочие мелкие радости. А иначе просто зачем. Сделать средний слой, но ничего туда не положить - ???
29 окт 09, 13:39    [7855856]     Ответить | Цитировать Сообщить модератору
 Re: использование хранимых процедур  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35345
ЛП
Приложение или двузвенное, или многозвенное. Если решили (по каким-либо причинам) делать многозвенку - то совершенно логично именно туда и запихнуть логику, права, и прочие мелкие радости. А иначе просто зачем. Сделать средний слой, но ничего туда не положить - ???

много ложится на средний слой. А вот логика - не всегда. Действительно, часто проще и оптимальней отдать обработку данных тому, кто эти данные хранит - СУБД. Но, кроме обработки данных есть куча другой логики, а вообще:
1. управление контентом системы
2. права доступа
3. управление данными (в смысле различные БД)
4...
впрочем этого уже достаточно
29 окт 09, 13:50    [7855978]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5 6 7 8 9 10 .. 14   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить