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

Откуда:
Сообщений: 1090
Bogdanov Andrey
То, что вы пишете в этой теме - оффтопик.


Как раз я автору сэкономил кучу времени, потому как с вышеописанными граблями он столкнется чуть раньше, чем сразу...
3 апр 14, 18:02    [15828869]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11085
Nitro_Junkie
Вот что им мешает сделать нормальный UPDATE FROM...
Что такое "нормальный UPDATE FROM"?
У оракла есть MERGE INTO ... USING ... - чем плохо?

Nitro_Junkie
при выборе того как красиво реализовать ту или иную возможность архитекторы изначально выбирают более идиотское решение, чтобы увеличить порог вхождения.
Это вы о чем? Пока ничего из вами перечисленного в этом топике не увеличивает порог.
3 апр 14, 18:04    [15828879]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11085
Nitro_Junkie
Bogdanov Andrey
То, что вы пишете в этой теме - оффтопик.


Как раз я автору сэкономил кучу времени, потому как с вышеописанными граблями он столкнется чуть раньше, чем сразу...
Я пожалуй вас переплюну и дам совет, гораздо больше экономящий время, чем все другие советы: прочитать сначала документ под названием "Concepts", в котором начать с раздела, который в кратце описывает структуру и логику построения документации, потом, собственно, выборочно читать интересующие главы Concepts (отдельно обращать внимание на приведенные там рекомендации), потом - нужные главы остальных документов. Если уж и тут возникнут проблемы, то всегда можно вернуться обратно на M$SQL
3 апр 14, 18:11    [15828919]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
Dimitry Sibiryakov
Member

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

rockclimber
Я вот перешел на оракл с постгреса и вообще не вижу в этом проблемы

Потому что PG как и "большой брат" использует систему "один сервер - одна БД".

Posted via ActualForum NNTP Server 1.5

3 апр 14, 18:19    [15828976]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
Nitro_Junkie
Member

Откуда:
Сообщений: 1090
Dimitry Sibiryakov
rockclimber
Я вот перешел на оракл с постгреса и вообще не вижу в этом проблемы

Потому что PG как и "большой брат" использует систему "один сервер - одна БД".


Да ладно... У него MSSQL'ая схема, вы что-то путаете...
3 апр 14, 18:24    [15829015]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
Nitro_Junkie
Member

Откуда:
Сообщений: 1090
Nitro_Junkie
Dimitry Sibiryakov
пропущено...

Потому что PG как и "большой брат" использует систему "один сервер - одна БД".


Да ладно... У него MSSQL'ая схема, вы что-то путаете...


С логической, не физической (на которую наплевать по большому счету) точки зрения, ессно.
3 апр 14, 18:24    [15829022]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
Dimitry Sibiryakov
Member

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

Nitro_Junkie
Вот что им мешает сделать нормальный UPDATE FROM... Религия?

ДА, есть такая религия. "ANSI SQL standard" называется. В котором MERGE - есть, а UPDATE
FROM - нету.

Posted via ActualForum NNTP Server 1.5

3 апр 14, 18:31    [15829065]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
Nitro_Junkie
Member

Откуда:
Сообщений: 1090
rockclimber
Nitro_Junkie
Вот что им мешает сделать нормальный UPDATE FROM...
Что такое "нормальный UPDATE FROM"?
У оракла есть MERGE INTO ... USING ... - чем плохо?


Безотносительно самого оператора, вот зачем мне знать 2 оператора, почему нельзя как все нормальные СУБД сделать один и не издеваться над мозгом разработчика.


rockclimber
Nitro_Junkie
при выборе того как красиво реализовать ту или иную возможность архитекторы изначально выбирают более идиотское решение, чтобы увеличить порог вхождения.
Это вы о чем? Пока ничего из вами перечисленного в этом топике не увеличивает порог.


Это я про то что пересесть с PostgreSQL на MSSQL и наоборот куда проще, чем на оракл (хотя первый действительно делался как младший брат Oracle).

Кстати в копилку - top'ы, limit'ы делаются через rownum и доп. предикат. OK, пусть будет rownum, но в абсолютном большинстве случаем он используется как top и limit - можно было бы добавить такой явный синтаксис. Хотя конечно это не особая проблема, но просто подчеркивает что такое ощущение оракл специально делает не как остальные.
3 апр 14, 18:32    [15829071]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
Nitro_Junkie
Member

Откуда:
Сообщений: 1090
Dimitry Sibiryakov
Nitro_Junkie
Вот что им мешает сделать нормальный UPDATE FROM... Религия?

ДА, есть такая религия. "ANSI SQL standard" называется. В котором MERGE - есть, а UPDATE
FROM - нету.


Какого года стандарт? 92? Хотя конечно если это и в современной версии стандарта так (то есть его похоже оракл и поддерживает), тогда я понимаю почему реального стандарта де-факто сейчас нету.
3 апр 14, 18:35    [15829091]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
Dimitry Sibiryakov
Member

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

Nitro_Junkie
Какого года стандарт? 92?

Да ни в какого года стандарте UPDATE FROM нету.

Posted via ActualForum NNTP Server 1.5

3 апр 14, 18:58    [15829254]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11455
Nitro_Junkie
В чем минус если не секрет?
Если любой пользователь, имеющий право на подключение может создать и произвольное число баз - это дыр(к)а. Вроде, должно быть очевидно.
3 апр 14, 19:31    [15829425]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11085
Nitro_Junkie
rockclimber
пропущено...
Что такое "нормальный UPDATE FROM"?
У оракла есть MERGE INTO ... USING ... - чем плохо?


Безотносительно самого оператора, вот зачем мне знать 2 оператора, почему нельзя как все нормальные СУБД сделать один и не издеваться над мозгом разработчика.
Я по-прежнему не понимаю, в чем проблема. Какова принципиальная разница между этими командами, кроме того, что в одной СУБД надо писать UPDATE FROM, а в другой - MERGE ... USING?

P. S. Кстати, когда я переползал с постгреса, меня больше всего ввела в недоумение в оракле тождественность понятий "схема" и "пользователь". "Мы говорим схема - подразумеваем юзера, мы говорим юзер - подразумеваем схему"
Ажно целую неделю привыкал. Других "потрясений" не было.
3 апр 14, 20:52    [15829698]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
Basil A. Sidorov
Nitro_Junkie
В чем минус если не секрет?
Если любой пользователь, имеющий право на подключение может создать и произвольное число баз - это дыр(к)а. Вроде, должно быть очевидно.
К вопросу об "очевидности"...
С каких пор (и в какой СУБД) права на подключение к базе данных эквивалентно праву на создание БД?
3 апр 14, 21:03    [15829723]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
Bogdanov Andrey
Member

Откуда: Да уже и сам не знаю...
Сообщений: 2203
Nitro_Junkie
Вот что им мешает сделать нормальный UPDATE FROM... Религия? Причем чем дальше, тем больше возникает ощущение, что именно она.
Что такое "нормальный UPDATE FROM"? Это тот самый, результат которого недетерминирован?

http://msdn.microsoft.com/ru-ru/library/ms177523(SQL.90).aspx
Результаты инструкции UPDATE не определены, если инструкция включает предложение FROM, в котором для каждого вхождения обновляемого столбца не задано единственное значение, то есть если инструкция UPDATE не является детерминированной.
3 апр 14, 22:22    [15830024]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
Bogdanov Andrey
Member

Откуда: Да уже и сам не знаю...
Сообщений: 2203
rockclimber
Какова принципиальная разница между этими командами, кроме того, что в одной СУБД надо писать UPDATE FROM, а в другой - MERGE ... USING?
Принципиальная разница как раз в том, что для UPDATE FROM не придумали детерминированной реализации, поэтому в стандарте ее и нет. А вот для MERGE проблем не возникает.
3 апр 14, 22:27    [15830040]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
Nitro_Junkie
Member

Откуда:
Сообщений: 1090
Bogdanov Andrey
rockclimber
Какова принципиальная разница между этими командами, кроме того, что в одной СУБД надо писать UPDATE FROM, а в другой - MERGE ... USING?
Принципиальная разница как раз в том, что для UPDATE FROM не придумали детерминированной реализации, поэтому в стандарте ее и нет. А вот для MERGE проблем не возникает.


Ну порядок записей в SELECT'е тоже недетерменирован, хотя конечно это не прямая аналогия. В любом случае вас же никто не заставляет писать недетерминированные UPDATE FROM'ы... Кроме того например в 99,9% случаев JOIN идет по равенству 2-х выражений, где одно из них ключевое поле в таблице \ подзапросе, но поддерживается общий случай и это никого не смущает.
3 апр 14, 22:56    [15830142]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11085
Bogdanov Andrey
rockclimber
Какова принципиальная разница между этими командами, кроме того, что в одной СУБД надо писать UPDATE FROM, а в другой - MERGE ... USING?
Принципиальная разница как раз в том, что для UPDATE FROM не придумали детерминированной реализации, поэтому в стандарте ее и нет. А вот для MERGE проблем не возникает.
По-хорошему, ее и в оракле не придумали. Просто когда оракл натыкается не недерминированность, он честно об этом предупреждает и валится с эксепшеном.

Nitro_Junkie
Ну порядок записей в SELECT'е тоже недетерменирован
Иногда лучше жевать...
select *
from mytable
order by some_column
3 апр 14, 23:05    [15830180]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
Bogdanov Andrey
Nitro_Junkie
Вот что им мешает сделать нормальный UPDATE FROM... Религия? Причем чем дальше, тем больше возникает ощущение, что именно она.
Что такое "нормальный UPDATE FROM"? Это тот самый, результат которого недетерминирован?

http://msdn.microsoft.com/ru-ru/library/ms177523(SQL.90).aspx
Результаты инструкции UPDATE не определены, если инструкция включает предложение FROM, в котором для каждого вхождения обновляемого столбца не задано единственное значение, то есть если инструкция UPDATE не является детерминированной.
Как быстро и как далеко Вас пошлет сервер, выполняя MERGE, в USING которого попал "недетерминированный набор" (ключ связи неуникальный)?
Bogdanov Andrey
rockclimber
Какова принципиальная разница между этими командами, кроме того, что в одной СУБД надо писать UPDATE FROM, а в другой - MERGE ... USING?
Принципиальная разница как раз в том, что для UPDATE FROM не придумали детерминированной реализации, поэтому в стандарте ее и нет. А вот для MERGE проблем не возникает.
Во как оно поворачивается... Проблемы нет, но ошибку при этом (почему-то и зачем-то) выбрасываем...

По факту: "отсутствующее в стандарте" UPDATE FROM поддерживается больше, чем 1 вендором СУБД.
Что самое "ужасное" - такая конструкция поддерживается даже в продуктах, производимых ORACLE...
3 апр 14, 23:07    [15830190]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
Nitro_Junkie
Member

Откуда:
Сообщений: 1090
rockclimber
select *
from mytable
order by some_column


UPDATE t SET x=v.f FROM v WHERE v.key = t.key; - где key и там и там - тоже детерменирован, и что?
3 апр 14, 23:10    [15830205]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
Nitro_Junkie
Member

Откуда:
Сообщений: 1090
Nitro_Junkie
rockclimber
select *
from mytable
order by some_column


UPDATE t SET x=v.f FROM v WHERE v.key = t.key; - где key и там и там - тоже детерменирован, и что?


и там и там - первичный ключ в смысле.
3 апр 14, 23:11    [15830214]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
Bogdanov Andrey
Member

Откуда: Да уже и сам не знаю...
Сообщений: 2203
Nitro_Junkie
В любом случае вас же никто не заставляет писать недетерминированные UPDATE FROM'ы... Кроме того например в 99,9% случаев JOIN идет по равенству 2-х выражений, где одно из них ключевое поле в таблице \ подзапросе, но поддерживается общий случай и это никого не смущает.
Вы спрашивали "какая религия мешает" - я и ответил, что мешает нелюбовь к кривым вещам, обеспечить корректную работу которых не представляется возможным. Я согласен с тем, что update from очень удобная конструкция и в подавляющем большинстве случаев использования работает корректно. Но некто, отвечающий за идеологию в oracle решил, что вместо нее стоит сделать православно одобренный merge.
Но вообще это различие между oracle и mssql, на мой взгляд, идет на концептуальном уровне. mssql пытается обеспечить максимальную простоту и скорость вхождения игнорируя некоторые нестыковки. oracle пытается обеспечить строгость утяжеляя синтаксис и усложняя использование. Оба подхода имеют право на существованию. Каждый выбирает себе более удобный. Правда в последнее время грани все более стираются - вендоры активно перетягивают друг у друга фичи, да идеологическая чистота со временем оказалась размыта.
3 апр 14, 23:19    [15830243]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11455
sphinx_mv
С каких пор (и в какой СУБД) права на подключение к базе данных эквивалентно праву на создание БД?
Не надо путать право на подключение к серверу и право на подключение к базе.
4 апр 14, 19:30    [15834940]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
Basil A. Sidorov
sphinx_mv
С каких пор (и в какой СУБД) права на подключение к базе данных эквивалентно праву на создание БД?
Не надо путать право на подключение к серверу и право на подключение к базе.
Как будто от этого принципиально что-то меняется... Тем более, что (сюрприз!) очень не все сервера баз данных предполагают разделение подключения к серверу баз данных и подключение к базе данных (как минимум, одной из них) на этом сервере... Не говоря уже о тех серверах, где на одном инстансе сервера может существовать только одна физическая база...

Но, раз Вам захотелось уточнения, то уточняю: с каких пор (и в какой СУБД) право на подключение к серверу БД стало эквивалентным праву на создание базы данных на этом сервере?
4 апр 14, 23:36    [15835775]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709
Nitro_Junkie,

Ну в Postgresql, MSSQL и остальных. Для instance'а есть понятие база, то есть можно подключиться к instance'у и сделать скажем CREATE DATABASE X; CREATE DATABASE Y; потом USE X; и работать с базой X (не видя Y). А потом можно сделать DROP DATABASE X; и опять CREATE DATABASE X; И так сколько угодно раз.

То есть обычная схема работы любого пр


Мужик, если ты не понимаешь, что нормальное приложение на любой СУБД делает такое ТОЛЬКО ОДИН РАЗ В ЖИЗНИ, на новом сервере (точнее это делает dba, а не приложение), то ты что-то очень важное в своей жизни пропустил в смысле образования.
6 апр 14, 09:42    [15838807]     Ответить | Цитировать Сообщить модератору
 Re: Путь в Oracle для MS SQL Developer  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67377
Блог
Nitro_Junkie
Логика instance'а и одной единственной базы в нем ни разу не логична

Согласен. Смешение в одном искусственном понятии "база данных" двух разных понятий - tablespace и schema - безусловно, гораздо логичнее, если смотреть со стороны dBase и подобных настольных СУБД.

Nitro_Junkie
то есть можно подключиться к instance'у и сделать скажем CREATE DATABASE X; CREATE DATABASE Y; потом USE X; и работать с базой X (не видя Y).

Осталось понять, зачем. Сходу вижу две версии: во-первых, чтобы делать двумя командами (USE/SELECT) то, что удобно делать одним SELECT, во-вторых, чтобы дополнительно геморроиться с тривиальной задачей "а теперь выведи мне те и другие данные вместе".

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

conn sys
create user u1
create table u1.table1(id1 integer);
create user u2
create table u2.table1(id2 integer);
alter session set current_schema=u1;
select * from table1;
alter session set current_schema=u2;
select * from table1;


и получить желаемое (а потом - эпических люлей от первого вменяемого архитектора, который им попадётся).

Nitro_Junkie
А потом можно сделать DROP DATABASE X; и опять CREATE DATABASE X; И так сколько угодно раз.
То есть обычная схема работы любого приложения.

Обычная схема работы наколеночной поделки типа студенческого курсача, Вы хотели сказать. Я вот прямо представил, как с утра десять тысяч пользователей включили компьютеры, вошли в систему - и каждый пошёл делать DROP/CREATE DATABASE...

rockclimber
P. S. Кстати, когда я переползал с постгреса, меня больше всего ввела в недоумение в оракле тождественность понятий "схема" и "пользователь"

Да, это тяжкое наследие семидесятых. На самом деле ещё и понятие "роль" им почти тождественно, но это уже снаружи не видно (и я почти вижу, как радовался тот проектировщик, который сэкономил на этом байты). В десятке оракл двинулся вроде бы в правильную сторону (create schema), но, судя по всему, пока что не очень представляет себе, как идти дальше.

топикстартеру

Вот, кстати, Вы получили наглядный пример астроений, с которыми в переход лучше не соваться, всем будет спокойнее.
6 апр 14, 10:40    [15838879]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5 6 7   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить