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

Откуда: 127.0.0.1
Сообщений: 67468
Блог
ЛП
А по русскому?

Опять же плохо помню, скорее всего аналогично. Если ищете предмет, по которому у меня не было пятерки, то стопроцентно уверен в рисовании.

ЛП
Наверное, не надо было начинать. Рассуждали бы про оракл, оно у Вас лучше получается :)

Спасибо на добром слове.

ЛП
Тем не менее, независимо от того, чем является причастие в русском, и независимо от того, во что переводится английское inserted, в английском inserted есть adjective, а никак не participle.

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

Ну а мнение Вебстера по этому поводу таково:

К сообщению приложен файл. Размер - 0Kb
16 июл 07, 16:47    [4394402]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
drev
Member

Откуда: Одесса - Берег Красного Дерева - Красный мир
Сообщений: 564
2 softwarer.

У Вас хорошо получается спорить о вкусе устриц, с теми, кто их ел:)

Я вам пытался объяснить сложность проблемы с точки зрения разработчика..видимо у мены не получилось :)

У мены уже 5 утра, так что я отвечу первую порцию.

В грамматиках существует такое понятие как нетерминальный элемент. Грубо говоря, всё, что не определено в лексере им и является.

Для идентификатора, например, созидается не один нетерминальный элемент, а несколько, которые "суживают" определение и употребляются в разных контекстах.

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

Первый: Если этот "двойственный" нетерминал лежит не глубоко в иерархии структуры - создаются копии определения структуры с разными внутренними нетерминалами.

Второй: (менее эффективный) - в двойственный нетерминал добавляют специальный разработчик, который анализирует контекст.

В данной ситуации в нетерминале "идентификатор-источника-данных" появляется именно такой контекстно-зависимый дополнительный вариант.
16 июл 07, 16:47    [4394407]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
locky
Member

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

softwarer wrote:
> Скажите пожалуйста, Вы читать умеете? Разницу между inserted и :inserted
> видите? Я не знаю, как еще вам объяснить, но попробуйте хотя бы
> посчитать символы; в одном - восемь символов, в другом - девять. Если не
> хватает, можно использовать какой-нибудь :table.inserted - это уже
> вообще ни с чем даже теоретически не перепутаешь.
Угу... так что мы будем использовать то?
И кто составит спецификацию на то, что именно надо использовать?
И сколько на это уйдет времени? (это я всё еще продолжаю цеплятся к двум
часам).

> Я помню, что вы работаете в одной конторе, но не думал, что это
> настолько... отражается на мыслительном процессе.
Работаем над одним продуктом, и проблемы видим - одинаковые - а что делать?

> Согласен, это преувеличение, акцентирующее внимание на Вашем "а зачем
> вообще row-level, если".
А он и правда - не шибко нужен, хотя, наверное - и удобен иногда.


> Я не в курсах внутренних порядков Oracle и вполне допускаю, что "фич
> менее человеко-года там просто не бывает в принципе". Но это уже вопрос
> исключительно плохой организации труда, а не трудоемкости конкретной фичи.
Угу... "это они просто не умеют работать! Вот я бы на их месте всё бы
сделал за час!".
сто пудов.

> То, что это можно сделать легко и просто при
> вполне адекватном качестве - факт.
Сомнительно.
Как именно Вы "собираетесь" реализовывать свою "табличку" selected? на
основании какого нового/существующего механизма?

Posted via ActualForum NNTP Server 1.4

16 июл 07, 16:51    [4394450]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
ЛП
Guest
softwarer
Ну а мнение Вебстера по этому поводу таково:

Скажите пожалуйста, Вы читать умеете? Разницу между insert и inserted видите? Я не знаю, как еще вам объяснить, но попробуйте хотя бы посчитать символы. В одном - шесть символов, в другом - восемь.
16 июл 07, 16:54    [4394487]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67468
Блог
drev
У Вас хорошо получается спорить о вкусе устриц, с теми, кто их ел:)

Если Вы имеете в виду знакомство со внутренними порядками Oracle, то я о них нисколько не спорю, могу в третий раз повторить: если аргументация исключительно в этом, это не проблема "трудоемкости реализации фичи", это проблема плохой организации труда в Oracle. В это я готов поверить, но вопрос отдельный.

drev
Я вам пытался объяснить сложность проблемы с точки зрения разработчика..видимо у мены не получилось :)

Увы, не получилось. И сразу могу сказать, "с точки зрения разработчика" это будет не так просто, а общими словами без конкретики - просто невозможно.

drev
В грамматиках существует такое понятие как нетерминальный элемент.

В курсе.

drev
Для идентификатора, например, созидается не один нетерминальный элемент, а несколько, которые "суживают" определение и употребляются в разных контекстах.

Имхо не совсем удачная формулировка; я бы сказал, позволяют легко использовать разные семантические подпрограммы в зависимости от места применения.

drev
В данной ситуации в нетерминале "идентификатор-источника-данных" появляется именно такой контекстно-зависимый дополнительный вариант.

Может быть, и добавляется (честно говоря, у меня есть подозрение, что он уже давно существует). И? tokenizer для него тривиальный и уже есть (вышеупомянутые :new), реализация также сугубо тривиальна - table (:param).
16 июл 07, 17:10    [4394613]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67468
Блог
ЛП
Скажите пожалуйста, Вы читать умеете? Разницу между insert и inserted видите?

Умею. И специально для Вас обвел в красный кружок url, не обратили внимания? Можете провести эксперимент сами: просим у Вебстера inserted - он посылает в insert, в основную форму. Мало того, в примерах к этой основной форме он опять-таки употребляет "inserted", это второй кружок, опять же обведенный специально для Вас.

Если для Вас "глагол в прошедшем времени уже не глагол" - ну извините.....
16 июл 07, 17:13    [4394636]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
давайте закроем тему инсертов: inserted - это записи, которые были отправлены на вставку "снаружи"(т.е. "вставляющему" они кажутся inserted), а не те, которые физически вставились в таблицу. С этой точки зрения термин подходящий.
16 июл 07, 17:17    [4394660]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
ЛП
Guest
2 softwarer
И специально для Вас обвел в красный кружок url, не обратили внимания?

Обратите внимание на второй обведенный Вами кружочек, пардон, на третий по Вашей нумерации...

Можете провести эксперимент сами: просим у Вебстера

Если Вебстер не умеет считать буквы - ну это его проблемы.
Его спрашивают значение одного слова - он дает значение другого. Ну что поделать.
Я же не у Вебстера спрашивал, умеет ли он читать и/или считать буквы.

Если для Вас "глагол в прошедшем времени уже не глагол" - ну извините.....

Где я сказал, что "глагол в прошелдшем времени уже не глагол"? Я вроде бы сказал, что inserted точно так же может быть и в настоящем, и в будущем, зависит от контекста. А без контекста неизвестно даже - глагол ли это вообще. Следуя общепринятой традиции наименований объектов - предполагаю, что всё-таки не глагол :).
16 июл 07, 17:21    [4394698]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
ЛП
Guest
SergSuper
давайте закроем тему инсертов

Слушаю и повинуюсь :)
Сори за оффтоп.
16 июл 07, 17:21    [4394700]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67468
Блог
locky
После ответа pkarklin - смысл было дубли пускать?

Безусловно, не было. Мне в данном случае был бы интересен чистый эксперимент, но не судьба. Проехали.

locky
правда - несознательно и уже - в третий раз :(

Тогда еще раз прошу прямо ответить на тот вопрос, который я задал, и который начинался словами (что характерно) "Внимание, вопрос".

locky
Угу... так что мы будем использовать то?

Вы - видимо, то, что есть в MSSQL, я - то, что напишут в Oracle, если конечно вдруг с бадуна таки решат это реализовать. Подход, которым с моей точки зрения это легче всего было бы сделать, я назвал; безусловно, они могут выбрать и drev-овское "изменить понятие идентификатора ради появления #####inserted", хотя настолько плохо я о них не думаю.

locky
И кто составит спецификацию на то, что именно надо использовать?
И сколько на это уйдет времени? (это я всё еще продолжаю цеплятся к двум
часам).

Цепляться - оно правильно, поддерживаю. Сколько времени.... Ну если у меня на поиск ответа ушла пара секунд, и если предположить, что они не слишком глупее меня, то в пределах примерно 0,14% от двух часов. Далее на это можно накрутить неограниченное количество "митингов и прочего", зависит только от степени дури и идет вне конкурса.

locky
> Согласен, это преувеличение, акцентирующее внимание на Вашем "а зачем
> вообще row-level, если".
А он и правда - не шибко нужен, хотя, наверное - и удобен иногда.

Не собираюсь спорить. Вопрос в том, что раз он есть - либо предлагаемая Вами реализация должна быть совместима с его наличием, либо что-то придется отломать. Насчет совместимости... ждем ответа.

locky
Угу... "это они просто не умеют работать! Вот я бы на их месте всё бы сделал за час!". сто пудов.

Я бы - вряд ли; на первичное знакомство с исходниками и методиками-стандартами ушло бы гораздо больше времени. Грамотный парень из текущей core development team - безусловно.

locky
Как именно Вы "собираетесь" реализовывать свою "табличку" selected? на
основании какого нового/существующего механизма?

Кто Вам сказал, что я собираюсь ее реализовывать? Вы попросили некоторую дополнительную фичу; я ответил, что уж если реализовывать что-то подобное, то иначе, чем видится Вам (и это отдельная работа). В реализацию "inserted" я ее не вписывал и не собираюсь; собственно я бы весьма скептически отнесся к такой фиче по одной простой причине: она была бы неэффективна. Такой подход нарушит крайне удобную схему потоковой обработки - прочитал-применил-забыл - ради в общем-то малопонятно чего.
16 июл 07, 17:32    [4394774]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
locky
Member

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

softwarer wrote:
> Тогда еще раз прошу прямо ответить на тот вопрос, который я задал, и
> который начинался словами (что характерно) "Внимание, вопрос".
Ок, я прочитаю его еще раз и отвечу Вам, просто - несколько позже.


> конечно вдруг с бадуна таки решат это реализовать. Подход, которым с
> моей точки зрения это легче всего было бы сделать, я назвал; безусловно,
> они могут выбрать и drev-овское "изменить понятие идентификатора ради
> появления #####inserted", хотя настолько плохо я о них не думаю.
Насколько я понял, Ваш подход - это хранение списка rowid для
вставленных/удаленных/измененных записей?

> locky
> И кто составит спецификацию на то, что именно надо использовать?
> И сколько на это уйдет времени? (это я всё еще продолжаю цеплятся к двум
> часам).
>
>
> Цепляться - оно правильно, поддерживаю. Сколько времени.... Ну если у
> меня на поиск ответа ушла пара секунд, и если предположить, что они не
> слишком глупее меня, то в пределах примерно 0,14% от двух часов. Далее
> на это можно накрутить неограниченное количество "митингов и прочего",
> зависит только от степени дури и идет вне конкурса.
Я прицеплюсь к этому... позже...


> locky
> > Согласен, это преувеличение, акцентирующее внимание на Вашем "а зачем
> > вообще row-level, если".
> А он и правда - не шибко нужен, хотя, наверное - и удобен иногда.
>
> Не собираюсь спорить. Вопрос в том, что раз он есть - либо предлагаемая
> Вами реализация должна быть совместима с его наличием, либо что-то
> придется отломать. Насчет совместимости... ждем ответа.
Вот уже цепляюсь. Нам, оказывается, необходимо подумать о совместимости
с уже существующими механизмами. Это, пожалуй, отымет какое-то время...
Необходимо прописать механизмы взаимодействия, согласовать их...

> locky
> Угу... "это они просто не умеют работать! Вот я бы на их месте всё бы
> сделал за час!". сто пудов.
>
>
> Я бы - вряд ли; на первичное знакомство с исходниками и
> методиками-стандартами ушло бы гораздо больше времени. Грамотный парень
> из текущей core development team - безусловно.
Который за "субботы, 50 баксов и пиццу сделает всё как надо"... Угу...

Posted via ActualForum NNTP Server 1.4

16 июл 07, 17:47    [4394856]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
locky
Member

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

softwarer wrote:
> Тогда еще раз прошу прямо ответить на тот вопрос, который я задал, и
> который начинался словами (что характерно) "Внимание, вопрос".
Да, вопрос был философский :)

"какова практическая ценность того inserted-а, который Вы обрабатывали"

Примерно совпадает с ценностью :new :)

например в instead of триггере можно было бы написать нечто вроде

.....
insert into SomeTable
select ....
from inserted i
where not exists(select * from SomeTable S where S.value=I.Value)

избежав тем самым вставки дубликатов (хотя наличие UQ всё-таки обязательно).

С другой стороны - instead of - это всё-таки не то же самое, что before
там (возможно; если бы это было сделано) необходимо было бы чистить
табличку inserted от тех записей, которые не надо вставлять (но тут надо
думать - а что делать при update/delete - ведь подход должен быть
единообразен, по идее).






Posted via ActualForum NNTP Server 1.4

16 июл 07, 17:53    [4394895]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67468
Блог
locky
Насколько я понял, Ваш подход - это хранение списка rowid для
вставленных/удаленных/измененных записей?

В контексте этой части - использование синтаксиса "с двоеточием", того же, который применяется для :new и :old. Он вполне надежно отделяет пространство пользовательских идентификаторов, лишая опоры ту часть апокалиптического сценария, которая посвящена переделке понятия идентификатора и катастрофическим последствиям пересечения с уже задействованными идентификаторами inserted.

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

Не "нам", а "Вам". Я, уж поверьте, перед тем, как выносить оценку, построил в голове непротиворечивую на первый взгляд модель реализации. Вы хотите нечто дополнительное - чего, насколько я понимаю, в MSSQL нет - ну так Вам и обосновывать "как оно впишется".

locky
Который за "субботы, 50 баксов и пиццу сделает всё как надо"... Угу...

Не готов осознать смысл этой фразы.
16 июл 07, 18:00    [4394928]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
locky
Member

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

softwarer wrote:
> locky
> Насколько я понял, Ваш подход - это хранение списка rowid для
> вставленных/удаленных/измененных записей?
>
>
> В контексте этой части - использование синтаксиса "с двоеточием", того
> же, который применяется для :new и :old. Он вполне надежно отделяет
> пространство пользовательских идентификаторов, лишая опоры ту часть
> апокалиптического сценария, которая посвящена переделке понятия
> идентификатора и катастрофическим последствиям пересечения с уже
> задействованными идентификаторами inserted.
Да бог с ним, с пересечением по inserted - не такая это и проблема, хотя
я прекрасно понимаю почему волнуется drev - но это специфика работы.
Дык, где и как мы будем хранить эти самые rowid?

>
> locky
> Вот уже цепляюсь. Нам, оказывается, необходимо подумать о совместимости
> с уже существующими механизмами. Это, пожалуй, отымет какое-то время...
> Необходимо прописать механизмы взаимодействия, согласовать их...
>
> Не "нам", а "Вам". Я, уж поверьте, перед тем, как выносить оценку,
> построил в голове непротиворечивую на первый взгляд модель реализации.
> Вы хотите нечто дополнительное - чего, насколько я понимаю, в MSSQL нет
> - ну так Вам и обосновывать "как оно впишется".
ок, "построение модели", написание спеков и прочее - мы просто не
включаем во время, необходимое для реализации фичи...
Но вот "модель реализации" - хотелось бы услышать.

> locky
> Который за "субботы, 50 баксов и пиццу сделает всё как надо"... Угу...
>
> Не готов осознать смысл этой фразы.
Это из старой читки - насчет смыщленного паренька... ну, неважно - найти
я сейчас её не могу - я даже не помню на каком языке это было :(

Posted via ActualForum NNTP Server 1.4

16 июл 07, 18:08    [4394962]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67468
Блог
locky
Да, вопрос был философский :)

Согласен, вопрос о пользе мусора можно назвать философским.

locky
Примерно совпадает с ценностью :new :)

Пока что неубедительно. От этой картины я очень даже конкретную пользу вижу - она дырку на обоях загораживает. А от кота.... (c)

locky
например в instead of триггере можно было бы написать нечто вроде

Тут я согласен со сказанным Вами ниже, instead - это не before. "Табличные" понятия тут вообще бессмысленны, действовать будет - если будет - опять же selected.

locky
но тут надо думать - а что делать при update/delete - ведь подход должен быть
единообразен, по идее).

Тут, честно говоря, я вообще не очень понимаю mssql-ное отсутствие таблички updated (я ведь не ошибаюсь, она отсутствует?) То есть я понимаю, что можно и без нее, но особого смысла именно такой конструкции не улавливаю.
16 июл 07, 18:14    [4394996]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67468
Блог
locky
Дык, где и как мы будем хранить эти самые rowid?

Меня таки вполне устроила бы коллекция.

locky
Но вот "модель реализации" - хотелось бы услышать.

Ну дык ключевые моменты вроде бы изложил еще страницу назад.
16 июл 07, 18:19    [4395020]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
locky
Member

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

softwarer wrote:
> Дык, где и как мы будем хранить эти самые rowid?
>
> Меня таки вполне устроила бы коллекция.
А меня таки напугал бы update по большой табличке...
Я не очень хорошо себе представляю, как оно внутри, но - задам вопрос:
коллекция - как реализована? Т.е. Могу ли я создать коллекцию размером
больше, чем мне доступно памяти?
Другими словами - чем ограничен размер коллекции?

Posted via ActualForum NNTP Server 1.4

16 июл 07, 18:22    [4395032]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
locky
Member

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

softwarer wrote:
> locky
> Да, вопрос был философский :)
>
> Согласен, вопрос о пользе мусора можно назвать философским.
Ну вот, любимый аргумент: то, чего нет в оракле - мусор :)


> locky
> Примерно совпадает с ценностью :new :)
>
> Пока что неубедительно. От этой картины я очень даже конкретную пользу
> вижу - она дырку на обоях загораживает. А от кота.... (c)
Посмотрите еще раз, повнимательнее ;)
И подумайте: почему в оракле есть одно - и оно полезно, в сиквеле -
другое, и оно полезно... что из этого "полезного" - мусор?
Я например с трудом вижу полезность "позаписной" обработки данных - ведь
есть чудесная set oriented обработка :(

> Тут я согласен со сказанным Вами ниже, instead - это не before.
> "Табличные" понятия тут вообще бессмысленны, действовать будет - если
> будет - опять же selected.
Ну, в РСУБД табличные понятия никогда не бессмыслены, надо сказать...
на то они и РСУБД.


> Тут, честно говоря, я вообще не очень понимаю mssql-ное отсутствие
> таблички updated (я ведь не ошибаюсь, она отсутствует?) То есть я
> понимаю, что можно и без нее, но особого смысла именно такой конструкции
> не улавливаю.
Почитайте документацию - там довольно таки много написано "на тему".
МС СКЛ представляет операцию обновления как пару "удалено-вставлено",
откуда deleted - это old, inserted - new.
связывая по ПК мы получаем "было-стало".

Posted via ActualForum NNTP Server 1.4

16 июл 07, 18:26    [4395060]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67468
Блог
locky
> Меня таки вполне устроила бы коллекция.
А меня таки напугал бы update по большой табличке...
Я не очень хорошо себе представляю, как оно внутри, но - задам вопрос:
коллекция - как реализована? Т.е. Могу ли я создать коллекцию размером
больше, чем мне доступно памяти?
Другими словами - чем ограничен размер коллекции?

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

Вопрос в том, что альтернативы заведомо ничем не лучше. Для реализации такой функциональности я вижу три принципиальных направления:

1. Сохранить где-нибудь в сторонке
2. Когда данные потребуются во второй раз, сделать запрос еще раз
3. В дополнение к 2 - пометить эти данные спецфлагом или как-то еще организовать их более быструю выборку.

Из этих вариантов второй и третий - явно кардинально хуже. Ну а в "сторонке" вариантов тоже немного - коллекции либо временные таблицы. Опять же, коллекции заведомо производительнее в "нормальных" случаях. Ну а тема памяти - именно то, почему я страницу назад сказал, что вопрос "только rowid непроизводителен" довольно неоднозначный.
16 июл 07, 18:47    [4395146]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67468
Блог
locky
> Согласен, вопрос о пользе мусора можно назвать философским.
Ну вот, любимый аргумент: то, чего нет в оракле - мусор :)

Не передергивайте, пожалуйста, будьте так любезны.

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

locky
Посмотрите еще раз, повнимательнее ;)

Жду яркого примера. Я понимаю, Вам гораздо легче слезть на накатанную дорожку холивара.

Впрочем, что забавно, так это то, что все проистекает из понимания роли inserted (и если угодно, selected).

locky
Почитайте документацию - там довольно таки много написано "на тему".
МС СКЛ представляет операцию обновления как пару "удалено-вставлено",
откуда deleted - это old, inserted - new. связывая по ПК мы получаем "было-стало".

(Терпеливо) Цитирую: то есть я понимаю, что можно и без нее, но особого смысла именно такой конструкции не улавливаю.

В частности, я не понимаю, зачем в 100% случаев join-ить записи (и тратить на это ресурсы, полагаю), когда та же информация уже существовала готовой к употреблению. Также я не понимаю, зачем, если мне нужен триггер INSERT AND UPDATE AND DELETE, меня заставляют делать full outer join, а потом разгребать, какого типа очередная строка результата - вместо написания трех красивых фрагментов по трем таблицам.
16 июл 07, 18:55    [4395172]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
locky
Member

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

softwarer wrote:
> (Из предположения, что снова искренне не понимаете) Мусор -
> бессмысленные данные, которые присутствуют в предлагаемой Вами модели.
> Не знаю, почему-то у многих mssql-щиков очень... странная реакция, раз
> плохое слово, так сразу "это обозвали mssql, мозги отключаем".
пропущу, для первого разу... Но - лучше так не говорить, наверное.


> locky
> Посмотрите еще раз, повнимательнее ;)
>
> Жду яркого примера. Я понимаю, Вам гораздо легче слезть на накатанную
> дорожку холивара.
> Впрочем, что забавно, так это то, что все проистекает из понимания роли
> inserted (и если угодно, selected).
Я предпочитаю set-oriented обработку - и inserted/deleted прекрасно в
это дело вписываются (хотя - со своими приколами).


> (Терпеливо) Цитирую: то есть я понимаю, что можно и без нее, но особого
> смысла именно такой конструкции не улавливаю.
(еще более терпеливо) А Я не понимаю необходимости в row-level триггерах
- без них можно прекрасно обходится, и вообще - в моем понимании - они
зло :)

> В частности, я не понимаю, зачем в 100% случаев join-ить записи (и
> тратить на это ресурсы, полагаю), когда та же информация уже
> существовала готовой к употреблению. Также я не понимаю, зачем, если мне
> нужен триггер INSERT AND UPDATE AND DELETE, меня заставляют делать full
> outer join, а потом разгребать, какого типа очередная строка результата
> - вместо написания трех красивых фрагментов по трем таблицам.
Ну, не в 100% случаев джойнить, и не всегда делать фулл джойн....
Да, иногда приходится, бывает.

Posted via ActualForum NNTP Server 1.4

16 июл 07, 19:02    [4395191]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67468
Блог
locky
Я предпочитаю set-oriented обработку - и inserted/deleted прекрасно в
это дело вписываются (хотя - со своими приколами).

Безусловно.

locky
> (Терпеливо) Цитирую: то есть я понимаю, что можно и без нее, но особого
> смысла именно такой конструкции не улавливаю.
(еще более терпеливо) А Я не понимаю необходимости в row-level триггерах
- без них можно прекрасно обходится, и вообще - в моем понимании - они
зло :)

(По-прежнему терпеливо) Я это понимаю и ничуть не агитирую Вас переходить на них, но не очень понимаю, зачем Вы отвечаете мне в первом случае общеизвестной вещью, а во-второй - не имеющей отношения. Какое отношение row-level триггеры имеют к почему-то не реализованному updated - не берусь судить.

locky
Ну, не в 100% случаев джойнить,

Насколько я понимаю, если хочешься получить updated - в 100% случаев. Во всяком случае, куда чаще, чем в альтернативной реализации пришлось бы делать union inserted-у c updated-ом.

locky
и не всегда делать фулл джойн....

Не всегда, конечно - указал задачу. Предполагаю, в этом случае это лучше, чем делать двойные обращения к таблицам.
16 июл 07, 19:36    [4395249]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
drev
Member

Откуда: Одесса - Берег Красного Дерева - Красный мир
Сообщений: 564
softwarer
drev
У Вас хорошо получается спорить о вкусе устриц, с теми, кто их ел:)

Если Вы имеете в виду знакомство со внутренними порядками Oracle, то я о них нисколько не спорю, могу в третий раз повторить: если аргументация исключительно в этом, это не проблема "трудоемкости реализации фичи", это проблема плохой организации труда в Oracle. В это я готов поверить, но вопрос отдельный.

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

drev
Я вам пытался объяснить сложность проблемы с точки зрения разработчика..видимо у мены не получилось :)

Увы, не получилось. И сразу могу сказать, "с точки зрения разработчика" это будет не так просто, а общими словами без конкретики - просто невозможно.

согласен, полностью будет сложно, на более-менее понятном уровне попробую

drev
В грамматиках существует такое понятие как нетерминальный элемент.

В курсе.

drev
Для идентификатора, например, созидается не один нетерминальный элемент, а несколько, которые "суживают" определение и употребляются в разных контекстах.

Имхо не совсем удачная формулировка; я бы сказал, позволяют легко использовать разные семантические подпрограммы в зависимости от места применения.


Нет, на этом этапе до семантики достаточно далеко. И отличия идут на декларативном уровне. "Подпрограммы" в основном отсутствуют. Мы пока говорим о грамматике.


drev
В данной ситуации в нетерминале "идентификатор-источника-данных" появляется именно такой контекстно-зависимый дополнительный вариант.

Может быть, и добавляется (честно говоря, у меня есть подозрение, что он уже давно существует). И? tokenizer для него тривиальный и уже есть (вышеупомянутые :new), реализация также сугубо тривиальна - table (:param).


1. Ваше предположение ошибочно.
2. Токенайзер строится на базе лексера, т.е. на более низком уровне.

Вы уже второй раз смешиваете разные уровни.

Грубо говоря:

1. Лексический анализ
2. "грамматический анализ" плюс преобразование потока лексем в некоторую структуру
3. Первичный семантический анализ

Кстати, "tokenizer для него" звучит очень странно.. tokenizer для одного элемента не строится.


16 июл 07, 21:28    [4395423]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67468
Блог
drev
Корпоративная структура разработки немного не похожа на привычную,но, это является лишь дополнительным коэффициентом, а не основным аргументом.

Немного; в привычной тоже более чем достаточно бардака. OK, для экономии времени предлагаю завершить это направление.

drev
Нет, на этом этапе до семантики достаточно далеко. И отличия идут на декларативном уровне. "Подпрограммы" в основном отсутствуют. Мы пока говорим о грамматике.

Возможно, я не понял, какую именно ситуацию Вы подразумеваете, расписывая размножение нетерминалов. Я имею в виду примерно следующее: с точки зрения грамматики (то есть проверки соответствия входного текста синтаксическим правилам) вполне достаточно

<var_declaration> ::= <ident> <ident> ;

Однако, иногда удобнее использовать

<var_declaration> ::= <var_ident> <type_ident> ;

drev
1. Ваше предположение ошибочно.

Может быть. Пороюсь на досуге, повспоминаю, в какой ситуации я видел системный SQL вида "... FROM :ABCD0008 ..."

drev
2. Токенайзер строится на базе лексера, т.е. на более низком уровне.

Похоже, если нашей целью не является утонуть в терминологических спорах, стоит договориться о терминологии и об отделении "привычной в частном случае практики" от глобальных концепций. В частности, как мне представляется, по сравнению с обычным для меня значением Вы в этой фразе путаете понятия "lexer" и "scanner".

Что ж, давайте приступим. Итак, обычно выделяют: лексический анализ, синтаксический анализ и семантические стадии, коих сейчас стоит касаться по минимуму. Сразу следует оговориться, что "стадия" вовсе не подразумевает некоего последовательного многопроходного процесса.

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

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

В англоязычной терминологии, как мне представляется, анализатор в целом называется lexer, первый блок - scanner, второй блок - tokenizer.

Синтаксический анализатор воспринимает поток лексем и выделяет из него законченные синтаксические конструкции. Фаза похожа на предыдущую, но работающую над потоком метасимволов, каждый из которых является "словом". Ее выходом является поток семантик - директив, имеющих смысл фраз, таких как "определи переменную", "возьми элемент массива", "присвой переменной значение выражения" итп.

Далее начинается семантический анализ, который нам сейчас совсем неинтересен.

Итого, это мое представление о "стандартном общем изложении теории". Есть возражения?

drev
Вы уже второй раз смешиваете разные уровни.

Сомневаюсь, что Вы правы.

drev
Кстати, "tokenizer для него" звучит очень странно.. tokenizer для одного элемента не строится.

"Tokenizer, способный его выделить и вернуть" устроит больше?

К сожалению, обещанного Вами "попробую" пока что так и не увидел. Жду.
17 июл 07, 00:34    [4395656]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
Какой странный разговор о легкости внедрения inserted в Oracle.

softwarer
И сразу могу сказать, "с точки зрения разработчика" это будет не так просто, а общими словами без конкретики - просто невозможно.


Вероятно, это должно означать нежелание разработчика что-либо менять в системе, несмотря на то, что «в действительно» это совсем просто.
Мне представляется, что это :new и inserted - «перпендикулярные» технологии.

По моему скромному мнению попытка внедрения в Oracle inserted|deleted должна как минимум приводить к изменениям в механизмах фиксации версии строки и управления temp-областями, серьезными изменениями в той части ядра, которое отвечает за обработку dml операций.

Предельно упрощая ( в действительности – не зная, как оно там устроено на самом деле),
я рассуждаю так:
Псевдоалгоритм работы сервера с построчным триггером может быть изображен примерно так (InputCollection здесть используется как неточный аналог/синоним selected jn softwarer-a):
A)
For Each newElement IN InputCollection
LOOP	
     For Each CurrentRow In MatchedRows
     LOOP
		:old:=CurrentRow;
		:new :=MakeNew(CurrentRow, newElement);		
		RaiseTrigger “TriggerName”,:new ,:old;
		FixRowVersion :new;
     END LOOP;
END LOOP;

Псевдоалгоритм работы с таблицами типа inserted рисуется как-то так:

Б)
INSERT INTO deleted From Table Where MatchConditions;
INSERT INTO inserted From TABLE(MakeInserted(deleted, InputCollection));

RaiseTrigger  “TriggerName”,inserted, deleted;

Для алгоритма типа А) в принципе не возникает проблемы с версионностью.,
т.к. по завершению триггера не представляет проблемы вопрос – что именно является тем, что должно быть зафиксировано как новая версия строки и где оно находится. Это экземпляр new строки таблицы и находится он в оперативной памяти под управлением текущего потока исполнения. «В принципе» выполнение триггера в схеме A) хорошо распараллеливается в одном сеансе между процессорами при булк-обработке. Размеры временных (дисковых) ресурсов хорошо фиксируются и не могут выйти далеко
за размеры InputCollection + MatchedRows. В алогитме типа А) количество переключений контекста между кодом, вызывающим триггер и исполнителем триггера равно количеству обрабатываемых строк.

Для алгоритма типа Б) требует доопределения понятие версии строки и решение вопроса о том, где это оно и как его фиксировать. Переключение контекста единственно и распараллеливание в сеансе возможно только на уровне параллелизма использованных в триггере dml-операций. В объем необходимых ресурсов нужно включать размер inserted+ deleted. Т.е. в худшем случае это учетверенный размер изменяемой таблицы.

Оба алгоритма не зависят от фактического наличия или отсутствия триггера для таблицы. Механика работает однотипно и независимо от того, задействован триггерный механизм разработчиком или нет.

Напрямую один алгоритм в другой не вкладывается. Конкретно вызванный для исполнения код триггера не может быть (так мне кажется) одновременно вызван в контексте построчной и множественной обработки. И один тип триггера в данном сеансе, по моим представлениям, не может быть вызван до того, как весь входной поток не будет обработан триггером другого типа. Т.е. код обоих типов – множественный и построчный может вызваться только последовательно. Целесообразность этого – отдельный вопрос.

Кроме того, при попытке добавления поведения inserted нужно дать ответ на такие вопросы:
Как будут синтаксически реализован новый функционал: 1) мы добавим в описание триггера что-то типа FOR_SET_OPERATION и код над множествами будет располагаться в собственных триггерах или 2) мы введем через неявный параметр переменную :triggermode, ориентируясь на которую в теле триггера разработчик будет отделять «множественный код» от «построчного».
Оба варианта требуют ответа на вопрос о последовательности запуска триггеров одного типа и второго, для случая, когда на таблице определены оба.
Оба варианта требуют ответа на вопрос – должны ли мы обеспечивать разработчика дополнительными хинтами, например – запрещающими запуск триггеров определенного типа.

Из вышепридуманного у меня не сложилось впечатления, что речь пойдет о часах или неделе на реализацию. Скорее речь пойдет о несовместимости или очень плохой совместимости этих двух подходов.

------------------
PS
На тему попал случайно. Думал - может действительно что содержательное будет. Ан нет. Как всегда.

О себе – я плохой акцессник. Про Oracle и MS SQL совсем практически не имею представления. Школу заканчивал на 5 двоек – по физике, алгебре, геометрии, литературе и истории. Четверка по рисованию и физкультуре.
Языкам, как живым, так и формальным – не обучен.
17 июл 07, 07:15    [4395845]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 [6] 7 8 9 10 .. 24   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить