Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 17 18 19 20 21 [22] 23 24 25 26 .. 31   вперед  Ctrl
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

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

А что не так? Давно я в паскале не писал, может что-то не помню, но объясни прикол.
Что будет, если y = 0?

возникнет иключение, в обработчике которого результат обнуляется.
вариант
 if y = 0 then result:=0 else result = x div y; 
имхо, поприличнее будет
20 янв 05, 11:36    [1259830]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
с127
раза три уже объясняли, что эти "древесные" операторы и циклы в Вашем случае просто перемещаются на на этап заполнения/модификации таблицы.

Именно так ! И что в этом плохого ? Притормаживать при модификации конечно будет, но не думаю, что существенно. Как правило древесными таблицами явл. справочники, вставка в которые происходит раз в 1000 реже, чем чтение.
А вот рекурсия при каждом чтении может оказаться непозволительной роскошью. И разве можно сравнить "удобство" получения рез-та от некоей навороченной рекурсивной ф-ции и элементарного SELECT ?
Как сделать рекурсию по записям, сложность условий отбора которых заранее неизвестна ? Придётся в этой ф-ции предусмотреть все (!) условия отбора.
А вот у SELECT нет никаких проблем со сложностью условий отбора. Построение отчётности упрощается в разы, а это одно из популярнейших применений для древесных таблиц.
20 янв 05, 11:43    [1259867]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

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

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

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

softwarer

Бардак в первую очередь в изложенном Вами видении проблемы. Когда это SQL стал _алгоритмом_? Это декларативный язык, и задекларированная рекурсия в нем совершенно ничего не говорит об алгоритме выполнения. Собственно, все (изначальные) ограничения были связаны именно с тем, что алгоритм реализации не является рекурсивным.

;)
можно и "Оку" танком назвать...
если рекурсией назвали что-то ей не являющейся - это уже проблемы того, кто назвал. ну и пользователей, которых вводят в заблуждение.
20 янв 05, 11:49    [1259896]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
AAron
Ораклоиды, что еще есть интересного в Oracle?

На этот вопрос ответить довольно трудно - очень мало людей хотя бы может назвать по памяти все заметные фичи :)

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

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

Если говорить о возможостях для программирования - это в первую очередь пакеты, это мощный набор коллекций и объектных типов и операций, увязанных с SQL, это весьма мощный и приятный PL/SQL (я не знаю T-SQL и не могу провести объективного сравнения, но виденные фрагменты кода мне нравятся много меньше). Из непрограммных возможностей - партиционирование, bitmap индексы, уникальные (afaik) возможности группировки - grouping sets/rollup/cube, аналитические функции, медленно, но выходит на настоящий уровень OLAP Option.

AAron
Мне например, понравились вполне вменяемые обработчики исключений, записи (Record)

Хм. Это настолько естественно, что мне было бы странно назвать их преимуществами :)
20 янв 05, 11:57    [1259934]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
LSV
Как сделать рекурсию по записям, сложность условий отбора которых заранее неизвестна ? Придётся в этой ф-ции предусмотреть все (!) условия отбора.

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

LSV

А вот у SELECT нет никаких проблем со сложностью условий отбора.

Дык. Именно поэтому Oracle и встроил древесину в select, не требуя делать каких-то скриптов для получения того же результата.
20 янв 05, 12:00    [1259945]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
andy st
можно и "Оку" танком назвать...
если рекурсией назвали что-то ей не являющейся - это уже проблемы того, кто назвал. ну и пользователей, которых вводят в заблуждение.

В данном случае в заблуждение вводите Вы. Примерно на уровне бабушки, кричащей "дошли! мышам коврики покупают! скоро тараканам автомобили сделают".
20 янв 05, 12:03    [1259961]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

Откуда:
Сообщений: 899
softwarer
andy st
можно и "Оку" танком назвать...
если рекурсией назвали что-то ей не являющейся - это уже проблемы того, кто назвал. ну и пользователей, которых вводят в заблуждение.

В данном случае в заблуждение вводите Вы. Примерно на уровне бабушки, кричащей "дошли! мышам коврики покупают! скоро тараканам автомобили сделают".

в заблуждение ввел некто Yo!
фразой
Yo!

изначально нам тут несколько человек упорно доказывали то что без рекурсивных sql запросов можно удобно и эфективно работать с деревьями

сейчас я внимательно прочитал оракловские планы выполнения тех запросов -
правда. пишут NESTED LOOPS - истинной рекурсией и не пахнет - чисто название....
20 янв 05, 12:19    [1260030]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
andy st
в заблуждение ввел некто Yo!
фразой
Yo!

изначально нам тут несколько человек упорно доказывали то что без рекурсивных sql запросов можно удобно и эфективно работать с деревьями

сейчас я внимательно прочитал оракловские планы выполнения тех запросов -
правда. пишут NESTED LOOPS - истинной рекурсией и не пахнет - чисто название....

Не скажу, что я во всем согласен с неким Yo! - но он вряд ли виноват в том, что Вы не отличаете "рекурсивный запрос" от "рекурсивного выполнения запроса".
20 янв 05, 12:36    [1260138]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

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

Не скажу, что я во всем согласен с неким Yo! - но он вряд ли виноват в том, что Вы не отличаете "рекурсивный запрос" от "рекурсивного выполнения запроса".

первая мысль после того, как кто-то услышит фразу "рекурсивный запрос" будет о том, что он выполняется с использованием рекурсиии.
и это будет правильно. все надо называть своими именами.
в данном случае - название будет более правильное название: "по дереву" - отражает смысл, но вообще отвязан от алгоритма выполнения
или "вложенными циклами" - соответствует истине.
20 янв 05, 12:59    [1260278]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
andy st
первая мысль после того, как кто-то услышит фразу "рекурсивный запрос" будет о том, что он выполняется с использованием рекурсиии.

Ага. А "первая мысль после того, как кто-то услышит фразу "запрос с join-ом" будет о том, что он выполняется с помощью join-а". А оказывается он, сволочь такая, выполняется через nested loops. Или вообще, страшно подумать, через картезиан + фильтр.

Хм. С моей точки зрения, человек либо знает и понимает, что SQL - декларативный язык, либо не знает и не понимает. В первом случае он понимает, что алгоритм выполнения запроса - внутренняя кухня сервера, куда можно заглянуть через планы, но не более того. Во втором случае.. хм, надо учиться и переходить к первому.
20 янв 05, 13:15    [1260393]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
Yo!
Guest
andy st

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


sql это декларативный язык если вы в запросе пишете delete from ... select * вы же не ожидаете что сервер выполнит их именно в этой последовательности. т.е. очень вероятно что oracle11Ы будет такой запрос выполнять рекурсивно а не вложенымим циклами, это его дело как он это будет делать, для разработчика ничего не меняется и запрос как был "рекурсивным" так и останется.
20 янв 05, 13:20    [1260424]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
dwl
Member

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

вариант
if y = 0 then result:=0 else result = x div y; 
имхо, поприличнее будет

из частного случая не всегда следует общее правило. Безусловно исключения накладывают overhead (чуть менее 10%)на программу использующую их. И иногда проще проверить аргументы операции(сама проверка это тоже своего рода overhead). Особенно когда суть операции известна и характер возможных ошибок определен. Но существуют ситауции более оптимального использования исключений. И таких ситуаций значительно больше, чем приведенный вами случай.

Перечесление и аргументация таких ситуаций - это имхо будет оффтоп.
20 янв 05, 13:31    [1260497]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andsm
Member

Откуда: Москва
Сообщений: 1320
Блог
2 Yo!
Письмо не дошло:
The mPOP.Fallback_MX program

<celko@inbox.lv>: message size 1836206 exceeds size limit 1000000 of server
a.mx.inbox.lv[81.94.227.7]
20 янв 05, 13:34    [1260512]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

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

Ага. А "первая мысль после того, как кто-то услышит фразу "запрос с join-ом" будет о том, что он выполняется с помощью join-а". А оказывается он, сволочь такая, выполняется через nested loops. Или вообще, страшно подумать, через картезиан + фильтр.

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

Хм. С моей точки зрения, человек либо знает и понимает, что SQL - декларативный язык, либо не знает и не понимает. В первом случае он понимает, что алгоритм выполнения запроса - внутренняя кухня сервера, куда можно заглянуть через планы, но не более того. Во втором случае.. хм, надо учиться и переходить к первому.

declare "Танк Т-90" "ОКА"
;-) добро пожаловать на http://www.ioccc.org/

Yo!

sql это декларативный язык если вы в запросе пишете delete from ... select * вы же не ожидаете что сервер выполнит их именно в этой последовательности. т.е. очень вероятно что oracle11Ы будет такой запрос выполнять рекурсивно а не вложенымим циклами, это его дело как он это будет делать, для разработчика ничего не меняется и запрос как был "рекурсивным" так и останется.

для разработчика поменяется то, что для рекурсии в явном виде надо больше ресурсов и старые запросы будут работать на том же железе медленнее.
соответственно, в худшем случае, нужно будет запрос переписывать.
а запрос будет называться "иерархическим" ;)
з.ы.: я прекращаю эту баталию - пальцы устали...
20 янв 05, 13:41    [1260562]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
andy st
рекурсия - способ реализации алгоритма.

:)

Первая подвернувшаяся под руку подходящая цитата:

неизвестный гуманитарий
То же можно сказать и относительно игр: культурная норма -координация и субординация единиц деятельности; поведение - объединеие; объединение - организация; организация - личность. При конструировании систем, описывающих личность человека и разные типы личности, рефлексивная игра развертывается на многих рекурсивных планах, таких как личность - психика, личность - организация индивидов, личность - объединение индивидов в группы, личность - индивидуальное поведение, личность - сознание и личность - культурные нормы деятельности и социальной организации. (Королев, & Бойтим, 1999)


И где здесь алгоритмы? Рекурсия - это понятие. А какое-то суженное его понимание - именно оно и есть.

andy st
а запрос тот правильнее будет называться (и многие называют ) иерархическим.

Не возражаю. В то же время это не повод делать странные выводы.

andy st
declare "Танк Т-90" "ОКА"

Есть язык, на котором это что-то значит? Я готов это воспринять разве что как то ли описание переменной "ОКА" типа "Танк", то ли наоборот..

andy st
;-) добро пожаловать на http://www.ioccc.org/

Спасибо. Неплохая ссылка.
20 янв 05, 13:58    [1260652]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7078
LSV
с127
раза три уже объясняли, что эти "древесные" операторы и циклы в Вашем случае просто перемещаются на на этап заполнения/модификации таблицы.

Именно так ! И что в этом плохого ? Притормаживать при модификации конечно будет, но не думаю, что существенно. Как правило древесными таблицами явл. справочники, вставка в которые происходит раз в 1000 реже, чем чтение.
А вот рекурсия при каждом чтении может оказаться непозволительной роскошью. И разве можно сравнить "удобство" получения рез-та от некоей навороченной рекурсивной ф-ции и элементарного SELECT ?
Как сделать рекурсию по записям, сложность условий отбора которых заранее неизвестна ? Придётся в этой ф-ции предусмотреть все (!) условия отбора.
А вот у SELECT нет никаких проблем со сложностью условий отбора. Построение отчётности упрощается в разы, а это одно из популярнейших применений для древесных таблиц.

Не забывайте, что добавляя два поля вы делате следующее:
1. Увеличиваете объем таблицы
2. Как я понял на эти поля вешаются индексы, еще увеличиваем объем
3. Говорите, изменять надо не так часто? А если у Вас несколько сотен пользователей, а таблица с деревьями основная? Модификация замедляется, что приводит к частым блокировкам, особенно в MS SQL. Запись блокирует чтение, deadlock и... сервер встал
20 янв 05, 13:58    [1260654]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

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

неизвестный гуманитарий
То же можно сказать и относительно игр: культурная норма -координация и субординация единиц деятельности; поведение - объединеие; объединение - организация; организация - личность. При конструировании систем, описывающих личность человека и разные типы личности, рефлексивная игра развертывается на многих рекурсивных планах, таких как личность - психика, личность - организация индивидов, личность - объединение индивидов в группы, личность - индивидуальное поведение, личность - сознание и личность - культурные нормы деятельности и социальной организации. (Королев, & Бойтим, 1999)

И где здесь алгоритмы? Рекурсия - это понятие. А какое-то суженное его понимание - именно оно и есть.

правда.????
и что же оно означает это понятие
а то в гугле поиск "рекурсия определение" дает кучу ссылок, дык там какая-то лажа - там не понятия - там больше похоже на то, о чем я трындю уже несколько постов ;)

softwarer

andy st
declare "Танк Т-90" "ОКА"

Есть язык, на котором это что-то значит? Я готов это воспринять разве что как то ли описание переменной "ОКА" типа "Танк", то ли наоборот..

это Це. дальше когда я буду писать в коде "Танк Т-90" при компиляции будет подставляться "Ока"
20 янв 05, 14:16    [1260718]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
andy st
правда.????

Правда.

andy st
и что же оно означает это понятие

Хм. Я не достиг уровня Даля, поэтому не собираюсь давать определения, которые гарантированно окажется в чем-то неверным. Лучше именно что поискать.

andy st
а то в гугле поиск "рекурсия определение" дает кучу ссылок, дык там какая-то лажа - там не понятия - там больше похоже на то, о чем я трындю уже несколько постов ;)

Поиск дает и то, что никак не похоже на Ваш трындеж ;) Я привел один из примеров непохожего.

andy st

declare "Танк Т-90" "ОКА"

это Це. дальше когда я буду писать в коде "Танк Т-90" при компиляции будет подставляться "Ока"

Эээ... "Це" - это что-то типа "ТРУБО-ПАСКАКАЛЯ"? Не встречал такого.
20 янв 05, 15:10    [1261030]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

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

Хм. Я не достиг уровня Даля, поэтому не собираюсь давать определения, которые гарантированно окажется в чем-то неверным. Лучше именно что поискать.

http://www.trinitas.ru/forum/03/940.shtml
а у нас тут детский лепет... ;))))

softwarer
Я привел один из примеров непохожего.

но в основном то похоже?... или нет?
я ссылку (которая выше) нашел далеко не сразу...

softwarer
Эээ... "Це" - это что-то типа "ТРУБО-ПАСКАКАЛЯ"? Не встречал такого.

если я напишу - C - будет понятнее? ;)
20 янв 05, 15:32    [1261155]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
andy st

http://www.trinitas.ru/forum/03/940.shtml
а у нас тут детский лепет... ;))))

Неплохо. Сказано много умного, особенно собственно определение :)

andy st

если я напишу - C - будет понятнее? ;)

Если так - непонятно, какое отношение эти слова имеют к C :)
20 янв 05, 15:44    [1261238]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

Откуда:
Сообщений: 899
softwarer
andy st

http://www.trinitas.ru/forum/03/940.shtml
а у нас тут детский лепет... ;))))

Неплохо. Сказано много умного, особенно собственно определение :)

и понятия цикл и рекурсия автор различает...
опять на мои утверждения больше похоже.... ;)
20 янв 05, 15:57    [1261315]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
andy st
и понятия цикл и рекурсия автор различает...
опять на мои утверждения больше похоже.... ;)

А кто говорит, что их не следует различать? Следует. Утверждается то, что рекурсия - понятие куда более глобальное, нежели "рекурсивное выполнение определенного алгоритма". И из этого обсуждения это имхо очевидно ;)
20 янв 05, 16:04    [1261347]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andsm
Member

Откуда: Москва
Сообщений: 1320
Блог
alex-ls

3. Говорите, изменять надо не так часто? А если у Вас несколько сотен пользователей, а таблица с деревьями основная? Модификация замедляется, что приводит к частым блокировкам, особенно в MS SQL. Запись блокирует чтение, deadlock и... сервер встал

Можно использовать алгоритмы (модификации алгоритма Celco) минимизирующие количество необходимых изменений и расчетов. Тем самым можно добиться времени модификации не намного уступающей времени модификации без этих полей. Хотя сложность алгоритмов при этом растет.
Про deadlock - у меня внесение изменений реализовано таким образом что deadlock получить невозможно.
20 янв 05, 16:51    [1261631]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
Yo!
Guest
andsm
2 Yo!
Письмо не дошло:
The mPOP.Fallback_MX program

<celko@inbox.lv>: message size 1836206 exceeds size limit 1000000 of server
a.mx.inbox.lv[81.94.227.7]


бл* а говорят что ящик 100мб, можно тогда на triffids@gmail.com
20 янв 05, 17:46    [1261905]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
ЗоринАндрей
Member

Откуда: Санкт-Петербург
Сообщений: 3004
... видимо кроме размера ящика есть еще лимит на размер одного письма.
20 янв 05, 17:58    [1261984]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 17 18 19 20 21 [22] 23 24 25 26 .. 31   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить