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

Откуда:
Сообщений: 175
Gluk (Kazan)
"валидностью серверного кода"

Думаю здесь вы немного не договариваете. Неужели у вас все программы постоены только на пакетах? Интерфейс на чем пишете? Анонимные PL\SQL блоки изпользуете? Мне избавиться совсем от тестирования не удается, но пакеты значительно снижают вероятность ошибок в наиболее важных модулях.
26 янв 07, 10:18    [3697273]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
Мне кажеться, что систематизация кода и раздача привелегий не совсем тесно связанные задачи. Мне, например, представлятеся удобным атомарность раздачи прав в MS SQL. Т.е. я могу создать необходимое кол-во ролей (например, отображающие реальные роли бизнес-процессов) и раздать права на необходимые модули (которые, например, реализуют определенную задачу из этого бизнес-процесса).


Процедуры доступ к которым одинаков обычно располагаются в одном пакете. На практике это не создает неудобств, а вот 200 процедур вместо 20 пакетов может создать неудобства. Кромеого, в теле пакетов обычно объявляются вспомогательные процедуры, к которым досту вообще не раздается, в MS SQL, аналогичные хранимки будут мозолить глаза. Как следствие, IMHO системные ПАКЕТЫ Oracle удобнее разрозненных хранимок MS SQL. Я понисаю, что это может казаться мелочью, но ...

pkarklin

Gluk (Kazan)
Мне очень не нравится перспектива нарваться на ошибку в коде через месяц после внедрения. Кроме того, удаление/изменение объекта от которого зависит какой-то код, MS SQL также проглотит молча ДО ПОРЫ :(


Гм... Эта ошибка (Invalid Object Name) в MS SQL будет чем то отличаться от ошибки типа invalid object в Oracle (на знаю, как она правильно звучит), если дропнуть таблицу, которая используется в хп?


Тем что ивалидация будет заметна немедленно, а не в тот момент когда до кода дойдет управление

pkarklin

Кроме того, объекты в MS SQL можно создавать с опцией WITH SCHEMABINDING, которая не позволит модифицировать (в том числе удалить) объекты, используемые в этом объекте.


Не знал. Это несомненно плюс, но не приводит ли это к дополнительным издержкам ???
26 янв 07, 10:24    [3697317]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
kennethr
Gluk (Kazan)
"валидностью серверного кода"

Думаю здесь вы немного не договариваете. Неужели у вас все программы постоены только на пакетах? Интерфейс на чем пишете? Анонимные PL\SQL блоки изпользуете? Мне избавиться совсем от тестирования не удается, но пакеты значительно снижают вероятность ошибок в наиболее важных модулях.


В последнее время, пакеты, представления и редко триггеры. Нет никокого разумного обоснования использованию одиночных процедур и функций в продакт-коде (во всяком случае мне неизвестно). Анонимные блоки в продакте используются в инсталяционных скриптах. Разумеется на тестовой БД, никаких ограничений, речь только о продакте.
26 янв 07, 10:28    [3697361]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
kennethr
Интерфейс на чем пишете?


Понял вопрос :) Я противник возврата ref-курсоров клиенту, поэтому выборки одиночными select-ами, ВЕСЬ DML только через вызовы процедур пакетов. На клиенте, разумеется эти вызовы оборачиваются в анонимный блок.
26 янв 07, 10:31    [3697389]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67390
Блог
pkarklin
Я то же мало интересуюсь xml, но работа с оным в 2005 по сравнению с 2000 улучшена значительно:

Спасибо за ссылку. Судя по первому впечатлению, конструкция FOR XML доработана до уровня, отвечающего практическим потребностям.
26 янв 07, 10:34    [3697411]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67390
Блог
pkarklin
Gluk (Kazan)
Что меня всегда удручало в TSQL - так это отсуствие пакетов.

Честно говоря не испытываю особых неудобств от их отсутствия.

Хорошей аналогией является следующая - возьмите какую-нибудь свою программу и напишите ее так, чтобы каждая функция располагалась в своем файле. Так можно писать, но.... неудобство ощущается.

pkarklin
Вот только ответьте мне на вопросик, если пермишшены раздаются на пакет в целом, то как предоставить пользователю пермишшены на отдельные модули в пакете, отличные от пермишшенов пакета?

А зачем делать бессмысленную операцию? Смысл пакетов в том числе в том, что вместо

grant execute on sp_selectsomething to somebody ;
grant execute on sp_insertsomething to somebody ;
grant execute on sp_updatesomething to somebody ;
grant execute on sp_deletesomething to somebody ;

достаточно сделать

grant execute on something$utils to somebody ;

pkarklin
Не вижу прямой связи между наличием\отсутствие пакетов и "валидностью серверного кода".

Скорее соглашусь, особой связи действительно нет.
26 янв 07, 10:45    [3697493]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Gluk (Kazan)
Процедуры доступ к которым одинаков обычно располагаются в одном пакете. На практике это не создает неудобств, а вот 200 процедур вместо 20 пакетов может создать неудобства.


Мне кажется, что эти неудобства сравни неудобств езды на машине по Англии после многолетней езды по России. :) Хотя, не спорю, у пакетов есть свои плюсы. Имея более 3000 процедур не испытываю никаких неудобств. ;)

Возьмем две роли "просмотр документа" (только чтение) и "работа с документами" и набор хп, отвечающих за выборку, добавление, изменение и удаление документов. Первой роли я раздавм права только на первую, второй - на все. Как это будет выглядеть в реализации с использованием пакетов? Насколько я понимаю, понадобяться минимум 2 пакета?

Gluk (Kazan)
Это несомненно плюс, но не приводит ли это к дополнительным издержкам ???


Естественно, что у этой медали есть и обратная сторона. Нельзя изменить объект, на который ссылаются объект, созданный WITH SCHEMABINDING. Придеться или пересоздать их без оной опции или грохнуть, получив их список с помощью sp_depends.

Кстати, при создании хп, ссылающейся на отсутствующую таблицу, сервер не молча это съедает, а выдает соответсвующший варнинг.

Gluk (Kazan)
Я противник возврата ref-курсоров клиенту, поэтому выборки одиночными select-ами,


Ох, не хотел "сыпать соль на раны". ;) Меня лично не устраивает отсутствие в Oracle вернуть из хп набор данных.
26 янв 07, 10:46    [3697501]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67390
Блог
Gluk (Kazan)
Связь прямая, основной плюс пакетов - разрыв цепочек зависимостей. Перекомпиляция ТЕЛА пакета не вызывает развала объектов зависимых от ЗАГОЛОВКА пакета.

Прямой связи тут нет. Сказанное Вами - всего лишь "конкретная реализация в Oracle". Никто не мешает точно так же рассматривать ХП как два отдельных объекта - заголовок и тело - с вытекающими отсюда последствиями. Просто Oracle так не делает, причем никаких объективных причин для этого нет, единственно "так исторически сложилось".

Gluk (Kazan)
+ в пакетах можно объявлять глобальные переменные (в том числе коллекции, ассоциативные массивы и т.п.).

А это безусловно плюсы пакетов, но к зависимостям отношения уже не имеет :)

Gluk (Kazan)
Мне очень не нравится перспектива нарваться на ошибку в коде через месяц после внедрения. Кроме того, удаление/изменение объекта от которого зависит какой-то код, MS SQL также проглотит молча ДО ПОРЫ :(

Признаться, на мой вкус, "как в MSSQL" и "как в Oracle" - две экстремальных точки зрения, равноудаленные от золотой середины. Хотя и здесь в Oracle ситуация постепенно улучшается.
26 янв 07, 10:49    [3697528]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Что касаемо ситематизации кода. Единственное, что MS SQL предоставляет для систематизации на уровне ядра, так это возможность группировки хп, с одним наименованием:

CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ] 
...

; number
Is an optional integer that is used to group procedures of the same name. These grouped procedures can be dropped together by using one DROP PROCEDURE statement. For example, an application called orders might use procedures named orderproc;1, orderproc;2, and so on. The DROP PROCEDURE orderproc statement drops the whole group. If the name contains delimited identifiers, the number should not be included as part of the identifier; use the appropriate delimiter around only procedure_name.


Но я этой возможностью никогда не пользовался, да и:

This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.
26 янв 07, 10:57    [3697609]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
softwarer
Хотя и здесь в Oracle ситуация постепенно улучшается.


А в чем улучшения ?
26 янв 07, 11:02    [3697654]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67390
Блог
pkarklin
Мне кажеться, что систематизация кода и раздача привелегий не совсем тесно связанные задачи.

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

pkarklin
Мне, например, представлятеся удобным атомарность раздачи прав в MS SQL.

Фичность, конечно, лишней не бывает. С практической точки зрения удобно одним движением управлять "группой подпрограмм", и можно найти применение "персональным грантам на отдельные подпрограммы".

Возможно, идеальным вариантом было бы что-то типа "пакета с несколькими заголовками". То есть одно тело и несколько интерфейсов, каждый из которых грантуется отдельно.
26 янв 07, 11:05    [3697683]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
Ох, не хотел "сыпать соль на раны". ;) Меня лично не устраивает отсутствие в Oracle вернуть из хп набор данных.


Такая возможность есть Можно даже из одной процедуры вернуть неограниченное количество курсоров и даже курсоры внутри курсоров :) Мне не нравится то как незамысловато к этому подошел MS SQL. В частности непонятно, что будет если в ХП последовательно вызвать два select-а с разнотипными выборками. Что будет на выходе ?
26 янв 07, 11:06    [3697687]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
softwarer
Прямой связи тут нет.


Пакеты позволяют значительно реже играть в пятнашки с инвалидными объектами. Теоретически отделить заголовок от тела для хранимок можно, но вряд ли на это кто-то пойдет, 2 мелких объекта вместо одного, овчинка не стоит выделки :(
26 янв 07, 11:07    [3697696]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67390
Блог
pkarklin
; number
Is an optional integer that is used to group procedures of the same name.

Мне кажется, речь идет об overloading, это совсем из другой оперы.

В Oracle ХП не могут быть overloaded, процедуры в пакетах - могут быть.
26 янв 07, 11:07    [3697702]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
Кстати, при создании хп, ссылающейся на отсутствующую таблицу, сервер не молча это съедает, а выдает соответсвующший варнинг.


Он молча съедает удаление таблицы, используемой в ХП, если не сделано предварительных телодвижений
26 янв 07, 11:08    [3697715]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67390
Блог
pkarklin
Ох, не хотел "сыпать соль на раны". ;) Меня лично не устраивает отсутствие в Oracle вернуть из хп набор данных.

Хм. Если таки посыпать соль на раны, окажется, что в MSSQL дела с этим обстоят существенно хуже. Не так давно было подробное обсуждение здесь же.
26 янв 07, 11:09    [3697721]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
Что касаемо ситематизации кода. Единственное, что MS SQL предоставляет для систематизации на уровне ядра, так это возможность группировки хп, с одним наименованием:

CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ] 
...


IMHO неудобно и непонятно что дает
26 янв 07, 11:09    [3697731]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
kennethr
Member

Откуда:
Сообщений: 175
softwarer
Просто Oracle так не делает, причем никаких объективных причин для этого нет, единственно "так исторически сложилось".

Ваша неправда. Все это напрямую вытекает из предварительной и раздельной компиляции хранимого PL\SQL кода. Близжайшая аналогия и исток этого - модули в АДА. Заголовок должен храниться отдельно от тела. Фундаментальная вещь.
26 янв 07, 11:10    [3697739]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Gluk (Kazan)
Можно даже из одной процедуры вернуть неограниченное количество курсоров и даже курсоры внутри курсоров :)


Эээ... Курсор есть курсор. Я их тоже из хп могу возвращать. :) Имелась в виду возможность сделать следующее выполнить в хп какой-либо расчет и последним SELECTом вернуть набор.

автор
В частности непонятно, что будет если в ХП последовательно вызвать два select-а с разнотипными выборками. Что будет на выходе ?


На выходе будет столько наборов, сколько SELECTов (в никуда) будет в хп, причем они не обязаны иметь одинаковый перечень выборки.

Пример работы такой хп:

sp_helpdb 'pubs'
GO

name                                                                                                                             db_size       owner                                                                                                                            dbid   created     status                                                                                                                                                                                                                                                           compatibility_level 
-------------------------------------------------------------------------------------------------------------------------------- ------------- -------------------------------------------------------------------------------------------------------------------------------- ------ ----------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------- 
pubs                                                                                                                                  34.56 MB OZON\pkarklin                                                                                                                    7      Aug  8 2006 Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=SIMPLE, Version=611, Collation=SQL_Latin1_General_CP1251_CS_AS, SQLSortOrder=105, IsTornPageDetectionEnabled, IsAutoCreateStatistics, IsAutoUpdateStatistics                            90

 
name                                                                                                                             fileid filename                                                                                                                                                                                                                                                         filegroup                                                                                                                        size               maxsize            growth             usage     
-------------------------------------------------------------------------------------------------------------------------------- ------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- ------------------ ------------------ ------------------ --------- 
pubs                                                                                                                             1      C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\pubs.mdf                                                                                                                                                                                                PRIMARY                                                                                                                          30720 KB           Unlimited          10%                data only
pubs_log                                                                                                                         2      C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\pubs_log.ldf                                                                                                                                                                                            NULL                                                                                                                             4672 KB            Unlimited          10%                log only

ЗЫ. Сорри за такие длинные строки.
26 янв 07, 11:14    [3697777]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Gluk (Kazan)
pkarklin
Что касаемо ситематизации кода. Единственное, что MS SQL предоставляет для систематизации на уровне ядра, так это возможность группировки хп, с одним наименованием:

CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ] 
...


IMHO неудобно и непонятно что дает


Поэтому и не пользовал никогда.
26 янв 07, 11:15    [3697786]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
softwarer
В Oracle ХП не могут быть overloaded, процедуры в пакетах - могут быть.


Да забыл об этом сказать. Пакеты в Oracle позволяют выполнять перегрузку процедур и рекурсивные вызовы. Второе опять же тесно связано с цепочками зависимости и поскольку в MS SQL их нет, рекурсия ХП не должна вызывать проблем. Кстати какая сейчас максимально допустимая глубина рекурсии ?
26 янв 07, 11:16    [3697805]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
softwarer
Хм. Если таки посыпать соль на раны, окажется, что в MSSQL дела с этим обстоят существенно хуже. Не так давно было подробное обсуждение здесь же.


Я всего-навсего высказал свое отношение к подходу, используемому в Oracle. А на счет ссылки, можно попросить привести, м.б. я что-то пропустил? Заранее благодарен.
26 янв 07, 11:16    [3697810]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
На выходе будет столько наборов, сколько SELECTов (в никуда) будет в хп, причем они не обязаны иметь одинаковый перечень выборки.


Это то и пугает
26 янв 07, 11:17    [3697819]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
DimaR
Member

Откуда:
Сообщений: 1570
pkarklin
Ох, не хотел "сыпать соль на раны". ;) Меня лично не устраивает отсутствие в Oracle вернуть из хп набор данных.

Это миф,
мы уже сдесь обсуждали, и как оказалось в оракле с этим дело обстоит гораздо лучше,
я даже приводил пример процедуры, которая например может возвращать набор данных, с динамически формируемым количеством столбцов.
26 янв 07, 11:20    [3697848]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67390
Блог
Gluk (Kazan)
Пакеты позволяют значительно реже играть в пятнашки с инвалидными объектами.

Да. Но только потому, что сделать аналогичную функциональность для ХП никто не озаботился.

Делать для этого два объекта совершенно не обязательно. Давайте рассмотрим цепочку взаимодействия: P1 -> P2 -> T. T - таблица, которую мы например дропаем. Oracle действует следующим образом:

  • P2 - в любом случае становится инвалидной.
  • Если P1 и P2 - "простые хранимки", P1 тоже становится инвалидной.
  • Если P2 - хранимка в пакете, P1 остается валидной.

    В Oracle это обусловлено тем моментом реализации, что на пути инвалидации встает "прокся" - инвалидное тело пакета не делает инвалидным его заголовок. Это именно момент реализации. Ровно так же можно было бы сделать так, что у простых хранимок инвалидность P2 оставляет валидной P1, и в этом случае получилась бы ровно та же ситуация, что и с пакетами [подразумевается - с пакетами из одной процедуры, чтобы не оговариваться насчет инвалидности тела с несколькими процедурами из-за проблем одной из них].
  • 26 янв 07, 11:20    [3697854]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: Ctrl  назад   1 .. 3 4 5 6 7 [8] 9 10 11 12 .. 23   вперед  Ctrl
    Все форумы / Сравнение СУБД Ответить