|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
Всем спасибо за конструктивную критику. Немного эмоциональный постинго у меня получился, за что и получил. Постараюсь исправить свои заблуждения. Теперь по поводу хранимых процедур. Честно говоря я надеялся, что мне доступно объяснят в чем преимущество наличия только extended SP в DB2, и как это классно сопрягается с задачами, которые в основном крутятся на ней. Вместо этого меня пытаются убедить, что можно жить без процедур вообще. Хмм. Даже не знаю, что и сказать. Во всех книжках пишут для чего нужны ХП, для чего нужны VIEW, Triggers. И замена одного из этих инструментов другими как правило к хорошему не приводит. Приведу пример одной процедуры, которую недавно писал и задам вопрос - как такое нормально можно сделать на VIEW+Triggers?. Есть таблица платежей с полями Дебет,Кредит, Сумма. Задача выбрать все платежи с реквизитами кредит заданными списком, дебет заданными списком. Упрощенно процедура должна выбирать все платежи между двумя группами клиентов, где счета входящие в группы задаются из-вне и заранее неизвестны. Я для этого сделал ХП, в которую передаются две строки. Каждая из этих строк содержит счета группы разделенными запятыми. Эти строки внутри процедуры парсаются и значения заносятся в соответствующие временные таблицы. После чего просто производится выбор строк из таблицы платежей, счета дебет которых есть в во временной таблице счетов дебета, счета кредит в таблице счетов кредита. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2003, 23:03 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
Dumaju cht zameniv UNION ALL na prosto UNION sdelaet spisok "nel'zja" esche bol'she, i deistvitel'no - a zache takoe VIEW. Tema, v celom, interesnaja, no mne "za bugrom" ne ponjatnaja : samolet - letit, mashina - edet. DB2 - na mainfraime. Po drugomu ne videl (v real'nih "production" systemah). I tut deleju VB programni, kotorie est' -"clients" for DB2. No DB2 na mainframe, a dlja soedinenija vb(PC) s DB2(mainfraim) mi ispol'zuem "DB2 connect"( IBM pruduct) ili "Host Integration Server" (from Bill). I nikogda ne stojal vopros perestavit' DB2 kudanibud'. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2003, 23:25 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
По поводу хранимых процедур. Я могу привести и другой пример, когда реализация на хранимой процедуре и проще и эффективней. Связан он с формирование отчетов, когда процедура формирования выборки для отчета и процедура его форматирования различаются по числу вызовов. Далее, я конечно всегда восхищался умельцами, который пишут SQL запрос на 3 - 4 страницы, и для модификации которого, в случае ухода такого умельца, необходимо 3 - 4 дня. Кроме индивидуального мастерства, важен еще и факт стоимости владения такой штукой. При промышленной работе, коглда например вопросы кодирования и проектирования разнесены, важно иметь более легкий в понимании, реализации и модификации код. Увы, но большая часть например наших проектироващиков мыслит императивно. Т.е. последовательными категориями. В этом плане хранимая процедура проще для понимания. Конечно, за все надо платить, как правило такие решения менее производительные. Но зачастую лучше иметь вовремя не оптимальное решение, чем оптимальное, когда оно не нужно. Есть еще и один чисто прагматический взгляд. Чем это хуже решение, когда есть возможность использовать 2 механизма. Т.е. логика такая: этого механизма нету, потому что мне это не надо, и это хорошо,что то непонятно. Непонятно также и почему, в таком случае IBM от версии к версии пытается улучшить механизм хранимых процедур. Межлу прочим разница между 6 и 7 версией колосальная, наверно не знают уроды, что нафиг это не нужно :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2003, 09:46 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
Guest123, а вы все-таки почитайте книжку с http://ourworld.compuserve.com/homepages/Graeme_Birchall/HTM_COOK.HTM. Поинтересуйтесь конструкциями выборок, начинающимися с WITH, особенно главами Recursive SQL и Fun with SQL. Временные таблицы _прекрасно_ эмулируются внутри DB2-шного запроса (и даже VIEW). Триггеры, кстати, можно считать одним из видов SP, но более удобным - вызываются неявно и всегда, обойти нельзя. В 8-ке появились триггеры INSTEAD OF. Еще один довод против "настоящих" SP - GUI builder'ы (точнее, библиотеки, которыми они пользуются) и генераторы отчетов обычно знают о таблицах, колонках, первичных ключах, ингода об автоинкрементных колонках, но не в состоянии заглянуть во внутрь хранимых процедур. В книжках, да, пишется, "зачем" нужны SP, но примеры обычно... сомнительные. Сейчас перечитываю одну переводную книжонку про Oracle - это ж настоящий позор, такие примеры. По-моему, всё там выражается без процедурных конструкций (хотя не обязательно одним SQL-оператором), обычно короче и наверняка быстрее выполняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2003, 10:03 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
2 petroff. Приводите свой пример. Нормально написанный запрос на выборку хорошо пишется, читается и понимается, даже если большой. Он выглядит как последовательность VIEW, что тут сложного-то? Не вижу никакой "колоссальной разницы" в SP между v6 и v7. А IBM ведет себя так, как должна вести себя приличная фирма: если пользователи это хотят, то они это получат, даже если, по большому счету, они вполне могли бы без этого обойтись. Кроме того, некоторые фичи вводятся, облегчить миграцию с других SQL-серверов. Поэтому, к примеру, есть теперь и автоинкрементальные поля, и sequences одновременно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2003, 10:43 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
2 Guest123 реквизиты, говоришь, приходят извне? что проще, чем засунуть их в систему. заведи таблицу, что ли :) за одно и историю получишь. а дальше-клавиатуру в руки и вперед. а места для процедуры я в упор не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2003, 14:20 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
Sorry, вижу -- распарсить строки :) применение интересное, хотя почему бы и нет. я бы, наверно, сделал это на клиенте. отдельной кнопкой 'Import xxx to zzz'. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2003, 14:33 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
Еще есть один довод в пользу ХП - Безопасность БД. Я всегда следую принципу: - пользователи имеют доступ к БД только через ХП. пользователи не имеют никакого права на объекты БД кроме как права выполнять доступные им ХП. - доступ к объектам БД на SELECT, должен даваться только некоторым пользователям и на непродолжительное время и только в качестве исключения. Такой подход спасает от гигантского кол-ва проблемм. Например изменить право доступа к таблице в Sybase ASA если эта таблица кем-то используется просто нельзя. Если таблица БД постоянно занята, то ждать можно очень долго. Есть еще плюс - управляемость режимом использования БД. Например, если небходимо модифицировать процедуру во премя работы БД или запретить в определнное время суток выполнять некоторую работу с БД, то достаточно забрать права доступа на определенные процедуры у юзеров и все. Или еще такой сценарий: есть OLTP база. В ней две процедуры - одна делает транзакции - добавляет/изменяет записи в таблице. Другая процедура делает жуткую выборку и лочит эту таблицу. (конечно не хорошо смешивать OLTP и DSS в одной базе, но если сервер один то надо выкручиваться) Необходимо, чтобы пользователь мог выполнять обе операции, но в определенное время дня выполнять процедуру на выборку прав не имел, дабы избавить базу от тормозов. Правами на таблицу здесь ничего не сделаешь. Ну про вариант, когда обну стандартную процедуру используют несколько разных приложений (например под WEB, Delphi, LotusNotes) даже и говорить нечего. Не писать же в каждой апликухе один и тот-же запрос. Кстати, очень интерестно услышать мнение публики на правильность применения такого приема: вызов внутри ХП запроса, который формируется динамически самой ХП c с помощью функции sp_execsql (MSSQL точно такое дает сделать). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2003, 15:27 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
ну и что? чем права на процедуру отличается от прав на вью в плане функциональности? конечто, проблема с локировками существует и в DB2 (только под платформу AS/400, там grant на вью зто grant на logical file, и никакой атрибут файла нельзя изменить, ести тот открыт). решается просто: поддерживать 2 системы, test environment и productional environment. все эксперименты - в тесте. я если кто вздумает что-то менять в productional, да еще и во время работы системы -- в лучьшем случае можно побить, в худшем--уволить. доступ к обьектам на непродолжительное время у меня по крайней мене вызывает недоумение. получаеся, что в кто-то меняет productional систему во время работы. жуткие выборки в определенное время огранизуются вообще просто: в системе должен быть планировщик. жуткое прилжение, которое составляет отчет(например) планируется для выполния ночью. сценарий примерно таков: c 00.00 гасится подсистема QINTER(напиши свое название) гасится. как следствие, все пользователи отваливают. затем подсистема QNIGHT поднимается, и приходит время ночных джобов. резултаты ночных джобов где-то сохраняются(если они нужны) в 06.00 -- обратный процесс :) Ну про вариант, когда одну стандартную процедуру используют несколько разных приложений (например под WEB, Delphi, LotusNotes) даже и говорить нечего. здесь ты прав. и нахрена столько одинаковых приложений? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2003, 17:33 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
Спор о том что нужнее VIEW или ХП и без чего можно обойтись мне кажется неперспективным. Если условия задачи позволяют использовать VIEW, то можно использовать VIEW, если удобно работать с ХП, то надо юзать ХП (пример процедуры я привел выше). А упорствовать в борьбе за VIEW против ХП глупо, кстати как и наоборот. Кстати,в LotusDomino вся идея доступа к информации построена на VIEW, ну нету динамических запросов на выбор документов и все. Но от этого функционал не страдает. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2003, 18:18 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
нее, еще не все... еще можно писать под мониторы транзакций, еще бывают сервера приложений... вот тогдо то ХП оказываются вообще в ... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2003, 18:50 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
С невозможностью сменить права я у DB2 как-то не сталкивался; вообще, правильно написанное приложение для серверов-блокировочников (DB2, Sybase, MS SQL...) должно коммититься как можно чаще (если только иное не обусловлено логикой), ибо и SELECT порождает блокировки. Запрет на выполнение VIEW может быть встроен в сам VIEW (поскольку мы во время выполнения запроса можем * узнать время, когда он исполняется * выбросить исключение, если время "не то" но вообще, лучше прочитайте в руководстве DB2 про Governor. "Ну про вариант, когда обну стандартную процедуру используют несколько разных приложений" - как будто для VIEW это не так. Я с DB2 Common Server/DB2 UDB вожусь уже много лет, и, раз средство (SP) есть, я _хотел_ его применить. Но так и не смог! ;-) Не придумал, зачем. Одна только процедурка проработала относительно недолгое время (sequences эмулировал, хотя и здесь в конечном счете обошелся без нее). Минусы, они как на ладони, а плюсов так и не увидел. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2003, 19:29 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
Прения на тему: что лучше View или SP не состоятельны. Я бы еще понял, если бы вопрос стоял так: где лучше исполнять модули (EXE или DLL) на клиенте, на сервере приложений или на SQL сервере. SP оформляется как DLL на SQL сервере (для WinNT) и может содержать не один SQL оператор, а несколько, которые порой затруднительно или даже невозможно соединить в один. Кроме того, я могу COMMITить отдельные SQL операторы внутри SP. Если же рассматривать SP из одного SQL оператора (чтобы приблизить его к View), то естественно ни каких преимуществ (кроме см.ниже), одни накладные расходы на загрузку DLL. Перед клиентским модулем (про сервер приложений ничего сказать не могу), SP на SQL (не на JAVA!) имеет на мой взгляд только одно существенное преимущество или фичу :) связанное с обходом прав доступа: Может исполняться от имени создателя процедуры (например, от имени юзера с правами DBADM) ,что задается опцией DYNAMICRULES BIND при создании. Таким образом, имея права на выполнение такой процедуры, можно не давая явных прав на UPDATE (DELETE, INSERT и даже SELECT) таблиц разрешить корректировать (читать) через процедуру отдельные поля или записи (удалять, вставлять). Или в сочетании с возможностью динамического построения SQL операторов выполнять любые запросы, которые не существуют в природе на момент написания приложения, и на которые, естественно, не могут быть розданы права заранее. Или выполнять запросы из заранее подготовленного списка (тексты запросов в поле пользовательской таблицы). Или, наконец, выполнять те же View, текст которых SP может вытащить из мемо-поля системных таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2003, 12:56 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
В догонку. SP бекапятся с БД. Поэтому при правильном проектировании (распределением бизнес-логики между клиентской частью и SP) нет проблем с версионностью. Т.е. один клиент может работать с любыми версиями структуры БД. Еще раз обращаю внимание: в SP можно реализовать алгоритмы выходящие за рамки одного SQL оператора (читай View). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2003, 07:28 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
Забавно, а народ ведь пришел к мнению, что в DB2 SP настолько неудобны, что лучше как угодно извратиться, лишь бы не использовать ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2003, 14:37 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
просто у кого-то голова уже заточена под SP ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2003, 16:35 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
Если с применением или не применением TSQL ХП все более или менее понятно, то лично мне непонятно назначение extended ХП (какие только и присутствуют в DB2 и "сложно делаются" в MS и Sybase.). Лично мне не приходилось в своей практике писать такого рода процедуры. Кто что может сказать за них? Имеет ли смысл делать их на сервере БД? Может лучше их функционал, если он действительно нужен, выносить во внешнее приложение за пределы сервака? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2003, 18:36 |
|
Особенности DB2 - в чем цимус?
|
|||
---|---|---|---|
#18+
Да спор бесполезный по поводу что лучше - SP или view... По мере надобности применять можно все. Если нужно. Кстати - зря так, что SP хреновые у DB2. Не хреновые они. Просто другие. Я их на С пишу. Дык по ходу дела SP может все, хоть за пивом сбегать :) Ну С он и в африке С :) В части... Ладно коротко - лазил по надобности в LDAP из SP. A SQL у DB2 действительно очень силен, чувтсвуеться рука создателя :) Кстати, как говорит сама дока, SP можно применять так же как вариант static SQL из dynamic приложения. Ну ясное дело, static SQL при наличии обновляемой статистики - песня, нет слов. Но иногда надо в dynamic SQL получить такое же. Есть два пути, один с ограничениями, не будем о нем, второй - SP. Гибкость, аднака. Ну и само собой - fenced/unfenced - только отлизать SP надо, чтобы нехорошо не получилось. Производительность - песня :) У меня сейча V8.1 workgroup на Solaris (Blade 100, 500 MHz single CPU кто не помнит) и на linux dual CPU 2.4 GHz Intel. Так вот моя задача (OLTP) шпарит по невыясненным причинам _гораздо_ шустрее на моем домашнем Blade чем на корпоративном сервере. Все одинаково, вплоть до сырцов приложения. Это к вопросу о стоимости линуксовой версии. за что платить-то ? А так - читать надо, чтобы понять, но только с условием - читать во время реальной работы. ROLLUP, CUBE, GROUPING SETS - интересное чтиво. управление дисками/памятью... Я так лично просто тащусь с возможности делать SP на С :) легко-просто-гибко называеться :) любой функционал доступен :) Ну а если что-то реально тяжелое надо, как действителтьно работающие распределенно сревера - то по старому EEE, по новоми фиг знает как его - ES, что-ли, самое оно. правда, за хорошие деньги. НО ОНО ведь как работает!!! А как легко добольно таки настраиваеться ?? Я правда, с ним только игрался - задач таких нет... А жалко... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2003, 22:34 |
|
|
start [/forum/topic.php?fid=43&msg=32106310&tid=1606646]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 248ms |
total: | 376ms |
0 / 0 |