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


ясно будем ждать :) изначально нам тут несколько человек упорно доказывали то что без рекурсивных sql запросов можно удобно и эфективно работать с деревьями, в результате вместо запроса привелся "некий код" с кучей циклов.
18 янв 05, 14:36    [1253563]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

Откуда:
Сообщений: 906
Yo!

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

;) дык без рекурсии же...
цикл всего 1...
код даже неплохо работет (что, наверное, очень странно для кода на tsql) и по функционалу = тому, что появилось встроенное только в oracle 10 (по словам softwarer-a). а до этого в общем случае код oracla вряд ли сильно будет отличаться от mssql.

2softwarer:
меня по ссылке не пустили - можно страничку на личный?
18 янв 05, 14:48    [1253632]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
andy st
2softwarer:
меня по ссылке не пустили - можно страничку на личный?

Насколько я в курсе, он может просить зарегистрироваться - это совершенно необременительно. После этого - без проблем.

Со страничкой вопрос в том, что многое доступно по ссылкам с той странички :)
18 янв 05, 14:51    [1253644]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

Откуда:
Сообщений: 906
alex-ls

Можно ставить любые условия при построении дерева (это я про Oracle 9):
Причем есть два варианта: либо сначала строить дерева, а потом отсекать непроходящие по условию элементы, либо либо сразу отсечь целую "ветку".

ну дык чем не повод потестить... ;)
из моего сообщения вставь запись и добавь строки в код.
допиши свой (оба варианта) и напиши в форум результаты
по скорости работы...
18 янв 05, 14:53    [1253653]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

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

Насколько я в курсе, он может просить зарегистрироваться - это совершенно необременительно. После этого - без проблем.

1. лень
2. суточный лимит по трафику, который уже кончился
3.... я думаю, что и первый аргумент очень весомый

softwarer

Со страничкой вопрос в том, что многое доступно по ссылкам с той странички :)

понятно. завтра попробую зарегиться.
18 янв 05, 14:57    [1253675]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
AAron
Member

Откуда: Москва
Сообщений: 4324
2Yo!
Я думаю, что можно и эффективно и быстро судя по описанным алгоритмам. В то же время у меня не было сложных деревьев с большим количеством элементов. Безусловно отсутствие рекурсивных запрос - это плохо, в Юконе же есть CTE и рекурсивные запросы - будем подождать :)
18 янв 05, 14:58    [1253679]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
andy st
а до этого в общем случае код oracla вряд ли сильно будет отличаться от mssql.

Да я бы не сказал. Безусловно, для настоящей обработки графов нужны не "деревянные" алгоритмы; впрочем, обвинять Oracle в том, что его деревья не работают с произвольными графами - согласитесь, это уже большая похвала. На задачах же, где "настоящей обработки" не нужно, обычно все довольно просто. Скажем, следующий тривиальный вариант:

SQL> create table cycled (id integer, parent_id integer);

Table created

SQL> insert into cycled select rownum, decode ( rownum, 1, 10, rownum - 1 ) 
  2  from dba_objects where rownum <= 10 ;

10 rows inserted

SQL> select *
  2  from cycled
  3  start with id = 1
  4  connect by prior id = parent_id ;

ORA-01436: CONNECT BY loop in user data

SQL> select *
  2  from cycled
  3  start with id = 1
  4  connect by prior id = parent_id and parent_id < id ;

                                     ID                               PARENT_ID
--------------------------------------- ---------------------------------------
                                      1                                      10
                                      2                                       1
                                      3                                       2
                                      4                                       3
                                      5                                       4
                                      6                                       5
                                      7                                       6
                                      8                                       7
                                      9                                       8
                                     10                                       9

10 rows selected
18 янв 05, 15:05    [1253709]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7079
Да, с циклом в Oracle 9 проблемы... Можно ввести доп. поле, можно сделать как предлагает softwarer, можно перйти на 10.
А Вы можете привести реальный пример, где это действительно пригодится? Так мне думать будет легче, с абстрактым мышлением у меня некоторые проблемы , лучше использовать ассоциативное.
18 янв 05, 15:45    [1253942]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andsm
Member

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

а можно в кратце осветить эти чудо алгоритмы ? или нужно быть Иным что их увидеть ? :(

Для того чтобы познакомиться с этим алгоритмами, Иным быть не требуется. Но вот английский необходим. Книга Joe Ceclo’s "Trees and hierarchies in sql for smarties", глава 5.

Yo!
неделя кончилась а мы с вами даже путь в Celko не нарисовали ... это так сложно или в чем проблема ? у меня табличка CelkoTree, в ней 1M записей вот хочу path и перенос веток, можно наконец код увидеть ?

Книга Joe Ceclo’s "Trees and hierarchies in sql for smarties", глава 3. Не помню откуда я ее скачал, но могу кинуть pdf-файл по почте. 2.6 Мб.
18 янв 05, 23:37    [1255266]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
Yo!
Guest
2andsm

celko@inbox.lv
19 янв 05, 00:45    [1255345]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
Yo
изначально нам тут несколько человек упорно доказывали то что без рекурсивных sql запросов можно удобно и эфективно работать с деревьями

Ё, знаешь анекдот про объявление в ресторане? "Быстро, вкусно, недорого - выберите любые два!"
Вот и тут - удобно, эффективно, без рекурсии :)
19 янв 05, 01:14    [1255384]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

Откуда:
Сообщений: 906
alex-ls
Да, с циклом в Oracle 9 проблемы... Можно ввести доп. поле, можно сделать как предлагает softwarer, можно перйти на 10.
А Вы можете привести реальный пример, где это действительно пригодится? Так мне думать будет легче, с абстрактым мышлением у меня некоторые проблемы , лучше использовать ассоциативное.

да это я так... размышляю...
Yo ведь начал усложнять задачу... путь вдруг потребовалось сосчитать до каждого узла.
ну, собственно, и понеслось..... ;)
а по поводу примера:
в рабочем месте отображаются для каждого узла дерева какая-то форма с данными и кнопочками для перехода на другой узел дерева. навигация по дереву контекстно-зависимая, т.е. в зависимости от выбранного узла с него есть переходы на другие связанные узлы. циклы возможны вплоть до "сам на себя".
19 янв 05, 05:51    [1255509]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

Откуда:
Сообщений: 906
Лох Позорный

Ё, знаешь анекдот про объявление в ресторане? "Быстро, вкусно, недорого - выберите любые два!"
Вот и тут - удобно, эффективно, без рекурсии :)

рекурсия - дело хорошее, но шибко ресурсоемкое (по сравнению с теми же циклами).
лет с 10-15 назад применение рекурсии было приемлемо только на этапе ее изучения (дабы позырить)
или когда глубина и обрабатываемые объемы не очень большие. в реальных случаях люди тратили время на избавление от нее, переводили все в циклы....
а сейчас.... бардак... рекурсия вдруг стала "эффективным" алгоритмом.

2Yo!
свежак
19 янв 05, 06:20    [1255513]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7079
andy st

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

Пример не понял, ну да ладно. И так пришла мысль...

Например, добавляем дополнительно поле. Если в нем 0 все ОК, если 1, то не учитываем его при построении дерева. Привожу пример триггера, который при добавлении проставляет это поле. Если где ошибка поправьте.

create or replace trigger t_test_tree 
before insert on tree
for each row
begin
  select count(*)
  into :new.cycle_
  from tree
  where parent_=:new.child_ and rownum=1
  connect by prior parent_ = child_ and cycle_=0
  start with child_ = :new.parent_;
end;

Прироста в быстродействии это конечно не добавит, но и уменьшения заметно не будет:

select count(*)
from elsi_omptest.tree
connect by parent_ = prior child_ and cycle_=0
start with parent_=210758
19 янв 05, 09:27    [1255796]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
К разговору (12-13 страницы) по поводу дыр безопасности:

Oracle залатал несколько дыр в Database Server
Oracle выпустил обновление с «заплатами» для своей базы данных и веб-приложений, которые закроют несколько дыр, обнаруженных в них недавно. Critical Patch Update должен «залатать» 17 уязвимостей в различных версиях Oracle Database Server, три дыры – в Oracle Application Server и еще одну дыру - Oracle Collaboration Server. В компании не сообщили деталей об этих уязвимостях.


Некоторые из них были обнаружены компанией Next-Generation Security Software. Oracle следует графику выхода новых «заплаток». Следующие релизы будут выпущены в апреле, июле и октябре.


Так что не надо басен, что патчи у MS - потому-что у них руки кривые, и дыры только у них.... Не у одних их однако :)

-- Tygra's --
19 янв 05, 14:13    [1257283]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
Yo!
Guest
tygra
К разговору (12-13 страницы) по поводу дыр безопасности:

Oracle залатал несколько дыр в Database Server
Oracle выпустил обновление с «заплатами» для своей базы данных и веб-приложений, которые закроют несколько дыр, обнаруженных в них недавно. Critical Patch Update должен «залатать» 17 уязвимостей в различных версиях Oracle Database Server, три дыры – в Oracle Application Server и еще одну дыру - Oracle Collaboration Server. В компании не сообщили деталей об этих уязвимостях.


Некоторые из них были обнаружены компанией Next-Generation Security Software. Oracle следует графику выхода новых «заплаток». Следующие релизы будут выпущены в апреле, июле и октябре.


Так что не надо басен, что патчи у MS - потому-что у них руки кривые, и дыры только у них.... Не у одних их однако :)

-- Tygra's --


речь идет не о кол-ве дыр, а в последствиях, при меньшей доли рынка продукты МС (iis&mssql) распростроняют червей.

смотрим что там у оракла:
http://secunia.com/advisories/13862/
обыкновенный ежемесячный пач, закрыли потенциальный дыры которые заюзать может сисадмин или разроботчик, имея такие права можно просто удалить базу, а не DoS устраивать :)
19 янв 05, 14:50    [1257443]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
Блин...раза три уже писал как в МССКЛ удобно работать с деревьями.
Нужна только доп.таблица с 2-мя int полями, которая легко рулится триггерами.
И тогда запрос "Сумма по всем потомкам данного узла" делается элементарно и быстро...и не нужны никакие "древесные" операторы, циклы, рекурсии...
19 янв 05, 16:15    [1257913]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
AAron
Member

Откуда: Москва
Сообщений: 4324
неужто кроме так часто называемых здесь сиквенсов и рекурсивных запросов нет преимуществ? :))

Ораклоиды, что еще есть интересного в Oracle? Не может быть, что вся ваша работа построена вокруг сиквенсов и рекурсий.

Мне например, понравились вполне вменяемые обработчики исключений, записи (Record)
19 янв 05, 16:56    [1258126]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
Yo!
Guest
AAron
неужто кроме так часто называемых здесь сиквенсов и рекурсивных запросов нет преимуществ? :))

Ораклоиды, что еще есть интересного в Oracle? Не может быть, что вся ваша работа построена вокруг сиквенсов и рекурсий.

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


еще есть
кросс платформеность, packages, valid procedures, exception, collections, java, RAC, autonomous transactions, advanced quenes, Reverse & Bitmap indexes, Online space reorganization, Partitioning, Fine Granted Access Control, Streams, Flashback Query, Automatic Storage Management (ASM), Analytical Functions, Object Oriented Features ... ну еще пара десятков менее важных фишек, но мы еще с деревьями не доразобрались ;)

2andsm
там как с книжкой ?
19 янв 05, 20:53    [1258775]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andsm
Member

Откуда: Москва
Сообщений: 1320
Блог
Yo!
2andsm
там как с книжкой ?

Отправил.
20 янв 05, 01:22    [1258993]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
c127
Guest
2 andy st

>рекурсия - дело хорошее, но шибко ресурсоемкое (по сравнению с теми же циклами).
лет с 10-15 назад применение рекурсии было приемлемо только на этапе ее изучения (дабы позырить)
или когда глубина и обрабатываемые объемы не очень большие. в реальных случаях люди тратили время на избавление от нее, переводили все в циклы....
а сейчас.... бардак... рекурсия вдруг стала "эффективным" алгоритмом.


Это в Вас говорит юношеский максимализм. Шутка. Рекурсия всегда была эффективным алгоритмом. Язык лисп, например, появился вместе с фотраном в середине шестидесятых или еще раньше. В нем рекурсия - основное средство. Говорят работает очень быстро, я правда не проверял. Вообще рекурсия и цикл это одно и то же, хорошие компиляторы (того же лиспа например) переводят рекурсию в цикл без участия программиста.

2 LSV

>Блин...раза три уже писал как в МССКЛ удобно работать с деревьями.
Нужна только доп.таблица с 2-мя int полями, которая легко рулится триггерами.
И тогда запрос "Сумма по всем потомкам данного узла" делается элементарно и быстро...и не нужны никакие "древесные" операторы, циклы, рекурсии...


Вот блин, раза три уже объясняли, что эти "древесные" операторы и циклы в Вашем случае просто перемещаются на на этап заполнения/модификации таблицы. В те самые триггеры, которые легко рулят таблицей с двумя интами. Они никуда не пропадают. Это может сильно затормозить модификацию данных в основной таблице, кстати. Говорить заранее, не заня конкретных требований к системе, что этот подход лучше невозможно.
20 янв 05, 02:19    [1259016]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

Откуда:
Сообщений: 906
AAron
Мне например, понравились вполне вменяемые обработчики исключений

не далее, как пару дней назад разбираясь в коде какой-то программы встрелил следующий выдающийся кусок
try 
  result := x div y;
except 
 result := 0;
end
на всякий случай: div - целочисленное деление

имхо, исключения - механизм для тех, кто не хочет думать над тем, что пишет в коде. этот механизм сильно разбалтывает программистов, если вообще не отупляет.
20 янв 05, 06:05    [1259065]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
dwl
Member

Откуда:
Сообщений: 225
исключения нужны, а то что инстурмент используют неправильно или плохо - это еще не значит, что инструмент плохой или не нужный. Защититься от глупости разработчика ПОЛНОСТЬЮ невозможно.
20 янв 05, 08:54    [1259218]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
MGR
Member

Откуда:
Сообщений: 536
andy st
не далее, как пару дней назад разбираясь в коде какой-то программы встрелил следующий выдающийся кусок
try 
  result := x div y;
except 
 result := 0;
end
на всякий случай: div - целочисленное деление

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



А что не так? Давно я в паскале не писал, может что-то не помню, но объясни прикол.
Что будет, если y = 0?
20 янв 05, 10:10    [1259413]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
andy st
рекурсия - дело хорошее, но шибко ресурсоемкое (по сравнению с теми же циклами).

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

andy st
а сейчас.... бардак... рекурсия вдруг стала "эффективным" алгоритмом.

Бардак в первую очередь в изложенном Вами видении проблемы. Когда это SQL стал _алгоритмом_? Это декларативный язык, и задекларированная рекурсия в нем совершенно ничего не говорит об алгоритме выполнения. Собственно, все (изначальные) ограничения были связаны именно с тем, что алгоритм реализации не является рекурсивным.
20 янв 05, 11:30    [1259808]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 16 17 18 19 20 [21] 22 23 24 25 .. 31   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить