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

Откуда: Набережные Челны
Сообщений: 293
Серьезно -зачем?
Вот мы пишем на MySQL, склад, заказы, производство.
В принципе вроде все работает.

Но все вокруг смеются над MySQL, типа там триггеров нет, ХП.
Меня прям комплекс заедать начинает.
А вдруг это действительно нужная вещь, без которой просто немыслимо работать?

Хочется примеры задач где без ХП не обойтись.
Заранее спасибо

Жизнь коротка - потерпи немного :)
30 мар 04, 15:19    [604037]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны хранимые процедуры?  [new]
mv
Member

Откуда:
Сообщений: 8876
Правильно. И без СУБД можно. Типизированным файлом. (ударение - на букве "о")
Бонус - и учиться не надо.
Ха.
30 мар 04, 15:28    [604060]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны хранимые процедуры?  [new]
Marat_L
Member

Откуда: Набережные Челны
Сообщений: 293
Ну вот опять пинают:)
Опять флейм :)
Хотя MySQL гораздо лучше типизованного файла :))
Согласись

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


Жизнь коротка - потерпи немного :)
30 мар 04, 15:57    [604147]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны хранимые процедуры?  [new]
Guest
Guest
2 Marat_L

3 punkta na vskidku:

1) Hranimye procedury pozvolyaut otdelit DB ot busness logiki i izmenyat odno bez zavisimosti ot drugogo.
2) Server DB hranit plany vypolneniya zaprosov dlya hran. proc (to est zaprocy vypolnyutsya bysteree)
3) Bezopasnost - Vy mozhete vydavat otdelnye granty na vypolnenie procedur
30 мар 04, 16:02    [604157]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны хранимые процедуры?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
1. ХП позволяют менять алгоритмы расчетов без изменения клиентского приложения
2. Во многих случаях (но не всех) быстрее выполняются за счет кэширования планов запроса
3. позволяют гораздо более строго контроллировать вносимые данные/изменения.
30 мар 04, 16:05    [604167]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны хранимые процедуры?  [new]
f_w_p
Member

Откуда:
Сообщений: 1603
Но все вокруг смеются над MySQL, типа там триггеров нет, ХП.
А еще транзакций.
30 мар 04, 16:06    [604170]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны хранимые процедуры?  [new]
Sad Spirit
Member

Откуда:
Сообщений: 569
"Невозможно" --- вряд ли.

Для "тяжело" классический пример --- когда тебе надо реализовать одну и ту же логику работы с данными в разных приложениях (до кучи: на разных языках). Если ты реализуешь её на ХП, то будешь из этих приложений просто дёргать ХП, в противном случае придётся каждый раз переписывать.

Ну и наконец --- встречный вопрос. Если ХП настолько никому не нужны, зачем мысклеписатели их реализуют в версии 5.0?
30 мар 04, 16:06    [604171]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны хранимые процедуры?  [new]
f_w_p
Member

Откуда:
Сообщений: 1603
Продолжу:
- ХП позволяют в ряде случаев значительно снизить сетевой трафик.
- Снизить требования к клиенту.
30 мар 04, 16:09    [604180]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны хранимые процедуры?  [new]
mv
Member

Откуда:
Сообщений: 8876
Назови хотя бы одну программу для ЭВМ, которую нельзя было бы выполнить с помошью машины Тьюринга. Нафиг тогда гипертрейдинг?
30 мар 04, 16:40    [604302]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны хранимые процедуры?  [new]
Gt.
Guest
что-то все странные аргументы, апп-сервер может все это с легкостью заменить. но менее эфективно чем хп, в плане скорости.
кроме того иногда может гораздо удобнее иметь код в субд, например в оракле у тебя процедура станет инвалидной если таблица с которой работает хп вдруг удалена. в результате апп-сервер тупо бы исполнял эту логику пока бы не дошел до неправильного селекта.
30 мар 04, 16:48    [604318]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны хранимые процедуры?  [new]
Urri
Member

Откуда: Москва
Сообщений: 2693
Если БД полностью нормализована, то совсем можно обойтись и без ХП и триггеров, пользуясь только заданием ключей, check constraint'ов и отношений (или все-таки нет ?). На практике так не делается. Во-первых, полностью нормализованная система очень трудозатратна. Во-вторых, она будет не гибкой, а достижение некоторой гибкости сделает систему сверхсложной. И в программировании, и в эксплуатации. Да и вообще, вряд ли физически возможно создать мало мальски сложную и при этом полностью нормализованную систему. Я уж не говорю о том, что 1.невозможно будет найти достаточно людей для ее поддержки, а также о том, что 2. не представляю, появится ли в ближайшее время ЭВМ, у которой ресурсов будет достаточно для того, чтобы такая система на ней заворочалась.

(Я подразумеваю также, что любое действие над такой БД должно быть корректно обработано или отвергнуто по той причине, что: 1.нарушено ограничение ключа, 2.значение не прошло проверку на соответствие условию или 3.данные нарушают ограничения, наложенные на связи между таблицами. А так - очень даже можно создать систему, которая будет работать только до тех пор, пока человек совершает над ней корректные действия).

Есть такой термин: бизнес-логика. Разработчики стараются отделить мух (бизнес-логику) от котлет (костяка, физической структуры БД), помещая мух, например, в ХП, где они и живут (ну, не только в ХП, но ХП предпочтительней других мест, потому что неотделимо от БАЗЫ).
Другой случай, когда ХП полезны - объединение множества операций над данными в одном логически завершенном блоке. Могут возразить: а зачем в ХП - можно и из приложения выполнить ту же последовательность операций? А вот затем, чтобы из всех приложений вызывать одну и ту же ХП. А то захотят приладить наряду с WinForms-интерфейсом также Web-интерфейс, и чего-нибудь там напутают, недоделают... Могут также возразить: что же это за система, которая требует множественных изменений в данных? А вот такие они, реальные системы. В отличие от идеальных (см. выше, про нормализацию).

Примеров не будет. Потому что, действительно, все можно сделать и без ХП и триггеров.
30 мар 04, 17:40    [604460]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны хранимые процедуры?  [new]
Marat_L
Member

Откуда: Набережные Челны
Сообщений: 293
Я пытаюсь подытожить:

ХП можно обойти созданием соответствующей подпрограммы на клиенте.
Этот способ позволяет отделить логику от данных.

Проигрыши такого решения:
  • При изменении логики надо менять приложение на всех клиентских машинах
  • Вопрос безопасности частично переносится на клиента, клиентское приложение фактически получает больший доступ.
  • Больше обмен данными клиента с сервером
  • Вычислительная нагрузка переносится на клиента
  • Нет доп .оптимизации в виде кеширования плана запроса
  • Такую процедуру невозможно использовать из приложения на другом языке

    Вроде ничего не забыл

    Мда....
    В принципе конечно все это терпимо, до определенных пределов.
    Но все-таки уже хочется MySQL 5.0

    2 f_w_p : Есть там транзакции, уже год как работаем

    2 Gt. : Rollback в случае неудачи решает проблему

    2 Urri: Foreign key решат задачу ссылочной целостности. Другие проверки , действительно придется пихать в клиентскую процедуру.


    Жизнь коротка - потерпи немного :)
  • 30 мар 04, 17:59    [604500]     Ответить | Цитировать Сообщить модератору
     Re: Зачем нужны хранимые процедуры?  [new]
    Gt.
    Guest
    Чего-то ты не допонял. имея бизнес логику на апп-сервер:

    При изменении логики надо менять логику апп-сервереа а не на всех клиентских машинах

    Вопрос безопасности частично НЕпереносится на клиента, клиентское приложение фактически НЕполучает больший доступ.

    Больше обмен данными апп-сервером с сервером субд

    Вычислительная нагрузка НЕпереносится на клиента

    Такую процедуру ВОЗМОЖНО использовать из приложения на другом языке
    30 мар 04, 18:25    [604547]     Ответить | Цитировать Сообщить модератору
     Re: Зачем нужны хранимые процедуры?  [new]
    Marat_L
    Member

    Откуда: Набережные Челны
    Сообщений: 293
    Может я действительно не понял.

    АПП сервер - это который, вместе с php и апачем?
    Тогда да, ты прав, но тогда уточню:

    Я пишу на VFP5.0 + MyODBC
    и не вижу легкого штатного способа из VFP обращаться обращаться к вебсерверу, передавая туда параметры (логин/пароль хотя бы), и главное (КАК??) получая оттуда результат.

    Поэтому я проигнорировал апп сервер

    Жизнь коротка - потерпи немного :)
    30 мар 04, 18:56    [604612]     Ответить | Цитировать Сообщить модератору
     Re: Зачем нужны хранимые процедуры?  [new]
    tygra
    Member

    Откуда: Тверь (Иркутск, Край)
    Сообщений: 9997
    автор
    Вот мы пишем на MySQL, склад, заказы, производство....
    .......
    ...Меня прям комплекс заедать начинает.


    Похоже меня заел бы не только комплекс, если бы я писал такое на таком =:()

    -- Tygra's --
    30 мар 04, 18:59    [604615]     Ответить | Цитировать Сообщить модератору
     Re: Зачем нужны хранимые процедуры?  [new]
    Gt.
    Guest
    ну даже в фоксе можно юзать DCOM, типа клиенты по DCOM общаются с фокпро "сервером". помню для фокса были некие платные либы даже SOAP гонять, вот только людей гоняющих такое на фоксе не видел ... но это уже из другой оперы.
    а так да - тебе было бы гораздо проще нормально юзать ODBC+хп, чем писать логику на пхп :) хотя знаю игрушку у нее что-то типа майла/форума - есть веб клиент и есть клиент на дельфях который к пхп обращается.

    автор
    и главное (КАК??) получая оттуда результат.


    ну это даже на фоксе пару команд, спрси в их форуме.
    30 мар 04, 19:10    [604628]     Ответить | Цитировать Сообщить модератору
     Re: Зачем нужны хранимые процедуры?  [new]
    Marat_L
    Member

    Откуда: Набережные Челны
    Сообщений: 293
    2 Тигра
    Ну вот и поделился бы своими мыслями по поводу

    Жизнь коротка - потерпи немного :)
    30 мар 04, 19:10    [604629]     Ответить | Цитировать Сообщить модератору
     Re: Зачем нужны хранимые процедуры?  [new]
    f_w_p
    Member

    Откуда:
    Сообщений: 1603
    2 f_w_p : Есть там транзакции, уже год как работаем
    Поздравляю. Без всего остального действительно можно обойтись. Хоть и неприятно. А вот без транзакций тяжко. Кстати, MySQL версионник или блокировочник?

    Вопрос безопасности частично переносится на клиента, клиентское приложение фактически получает больший доступ.
    Не совсем так. В клиенте действительно можно реализовать свои режимы безопасности, но ведь существует еще возможность коннекта к БД слева. Другим клиентом или штатными средствами администрирования
    31 мар 04, 08:03    [604931]     Ответить | Цитировать Сообщить модератору
     Re: Зачем нужны хранимые процедуры?  [new]
    Marat_L
    Member

    Откуда: Набережные Челны
    Сообщений: 293
    2 f_w_p
    Версионная наверное. :))
    Ну эта када там всякие уровни изоляции, да?

    READ-UNCOMMITTED
    READ-COMMITTED
    REPEATABLE-READ
    SERIALIZABLE

    (только InnoDB таблицы )

    Жизнь коротка - потерпи немного :)
    31 мар 04, 08:38    [604971]     Ответить | Цитировать Сообщить модератору
     Re: Зачем нужны хранимые процедуры?  [new]
    tygra
    Member

    Откуда: Тверь (Иркутск, Край)
    Сообщений: 9997
    Мысли плохие, делюсь: не могу представить MySQL и задачи склад, заказы, производство. Даже если есть - все-равно.
    - А бывают ERP-системы на MySQL?
    - Нет сынок, это фантастика ((с) реклама сыра Хохланд)

    -- Tygra's --
    31 мар 04, 11:13    [605335]     Ответить | Цитировать Сообщить модератору
     Re: Зачем нужны хранимые процедуры?  [new]
    gardenman
    Member

    Откуда: С-Петербург
    Сообщений: 2347
    2 Marat_L
    Я примерно понимаю к чему ты клонишь...
    Действительно, у тех кто пришет софт для MSSQL,Sybase,Oracle несколько гипертрофированное представление о сохраненных процедурах.
    Чем это чревато? - низкой интерактивностью приложения.
    А вообще-то без сохраненок действительно можно обойтись.
    Хотя некоторые виды обработки данных действительно лучше делать на сохраненках. Особенно те, кторые жрут немерянно трафик.
    Но в некоторых случаях разгузить сервер БД очень даже полезно.
    31 мар 04, 11:52    [605460]     Ответить | Цитировать Сообщить модератору
     Re: Зачем нужны хранимые процедуры?  [new]
    Marat_L
    Member

    Откуда: Набережные Челны
    Сообщений: 293
    Спасибо всем за конструктивные ответы. Картина получилась достаточно исчерпывающей. Я многое для себя понял в ходе обсуждения.
    Теперь меня комплексы не заедают :)

    Тигра
    Мысли плохие, делюсь: не могу представить MySQL и задачи склад, заказы, производство. Даже если есть - все-равно.

    Будете у нас на Колыме - заходите :)

    gardenman
    Я примерно понимаю к чему ты клонишь...

    Дык, никуда 8))

    Жизнь коротка - потерпи немного :)
    31 мар 04, 12:45    [605631]     Ответить | Цитировать Сообщить модератору
     Re: Зачем нужны хранимые процедуры?  [new]
    Заглянул
    Guest
    Здесь можно почитать про "всякие там уровни изоляции", их критику в стандарте ANSI и про другие интересные вещи.
    А вот это
    gardenman
    Действительно, у тех кто пришет софт для MSSQL,Sybase,Oracle несколько гипертрофированное представление о сохраненных процедурах.
    Чем это чревато? - низкой интерактивностью приложения.
    меня потрясло до глубины души.
    Теперь-то я понимаю, в чем корень зла и где основной источник проблем. Только как бороться с "низкой интерактивностью" приложения, ума не приложу. Кстати, а что это? ;-)
    31 мар 04, 14:38    [606022]     Ответить | Цитировать Сообщить модератору
     Re: Зачем нужны хранимые процедуры?  [new]
    tygra
    Member

    Откуда: Тверь (Иркутск, Край)
    Сообщений: 9997
    gardenman
    Но в некоторых случаях разгузить сервер БД очень даже полезно.


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

    -- Tygra's --
    31 мар 04, 14:47    [606057]     Ответить | Цитировать Сообщить модератору
     Re: Зачем нужны хранимые процедуры?  [new]
    Borland
    Member

    Откуда: $HOME
    Сообщений: 15839
    2 gardenman > Действительно, у тех кто пришет софт для MSSQL,Sybase,Oracle несколько гипертрофированное представление о сохраненных процедурах.

    Пояните, плз, гипетрофированность ораклистов и сиквелистов...даже интересно...

    -----
    Все великие дела совершаются в командной строке
    31 мар 04, 15:04    [606117]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: [1] 2 3 4 5 6   вперед  Ctrl      все
    Все форумы / Сравнение СУБД Ответить