powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем MS SQL Server хуже Oracle Database?
25 сообщений из 271, страница 6 из 11
Чем MS SQL Server хуже Oracle Database?
    #37716678
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerНу, кривой и противоречащий стандарту unique constraint - это тоже документированное поведение.


Код: sql
1.
2.
3.
4.
5.
CREATE TABLE T1(col1 char(1) NULL)
GO

CREATE UNIQUE INDEX IX_T1_col1 ON T1(col1) WHERE col1 IS NOT NULL
GO



softwarerБага не перестаёт быть багой от того, что её записали в документацию.

Не буду, пожалуй, опускаться вновь до перечисления противоречящих стандарту и документированных баг, которые можно найти в любой СУБД.
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716696
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pt12ptЧто здесь проктологического?
Много всего:

Наличие у хранимых процедур необъявленных входных и выходных параметров

Наличие у хранимых процедур плохо контролируемых побочных эффектов

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

Всё это приводит к тому, что мелкое безобидное изменение программного кода способно разрушить бизнес-логику "совсем в другом месте". О понятиях "модульность" и "инкапсуляция" можно забыть.

pt12ptВ Оракле же мало того, что используется специальный язык,


pt12ptну бог с ним вам необходимо объявить курсорную переменную, заполнить ее данными и вернуть
В любом нормальном языке программирования процедура, желающая вернуть пользователю данные, должна иметь выходной параметр и должна вычислить его значение. Например, в Java, если Вы ходите посчитать количество элементов в списке, Вы пишете:

Код: java
1.
2.
3.
static public int getListCount(List list) {
  return list == null ? 0 : list.size();
}



по аналогии, когда Вы в PL/SQL хотите посчитать количество строк в таблице, Вы пишете

Код: plsql
1.
2.
3.
4.
5.
6.
function tableCount return integer is
  cnt integer;
begin
  select count(*) into cnt from table;
  return cnt;
end;



Конечно, можно пытаться назвать это проктологией, но тогда придётся чохом занести в это понятие практически все языки программирования, разработанные начиная с 60-х годов. По мне всё же "извращенцев" стоит искать среди желающих возвращать результаты работы каким-то другим способом.
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716702
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyа насчет "противоречащий стандарту" - главное чтобы не противоречило здравому смыслу и потребностям, остальное - от лукавого.
Согласен. Собственно моё большое удивление по поводу unique в mssql вызвано именно его категорическим противоречием здравому смыслу. Стандарт же я здесь упомянул только для подчёркивания противопоставления "документированному поведению". Там, где стандарт противоречит здравому смыслу (например, в требовании различать null и пустую строку) я сам с большим удовольствием поддерживаю забивание на стандарт.
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716703
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerКонечно, можно пытаться назвать это проктологией, но тогда придётся чохом занести в это понятие практически все языки программирования, разработанные начиная с 60-х годов. По мне всё же "извращенцев" стоит искать среди желающих возвращать результаты работы каким-то другим способом.
нуну :)
Ну не нравится вам возвращать рекордсеты - используйте OUT параметры, кто ж вам мешает то?
как по мне, так лучше иметь 2 (или более) способа выполнить некую задачу, нежели с пеной у рта доказывать всем и каждому "есть только один исконно правильный способ, нужно использовать его! Ведь по другому то и не сделаешь!"
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716706
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerНаличие у хранимых процедур необъявленных ... выходных параметров

Вот здесь можно прочитать о новой опции EXECUTE - WITH <result_sets_definition>. Приведу только пример:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
USE AdventureWorks2012;
GO

--Create the procedure
CREATE PROC Production.ProductList @ProdName nvarchar(50)
AS
-- First result set
SELECT ProductID, Name, ListPrice
    FROM Production.Product
    WHERE Name LIKE @ProdName;
-- Second result set 
SELECT Name, COUNT(S.ProductID) AS NumberOfOrders
    FROM Production.Product AS P
    JOIN Sales.SalesOrderDetail AS S
        ON P.ProductID  = S.ProductID 
    WHERE Name LIKE @ProdName
    GROUP BY Name;
GO

-- Execute the procedure 
EXEC Production.ProductList '%tire%'
WITH RESULT SETS 
(
    (ProductID int,   -- first result set definition starts here
    Name Name,
    ListPrice money)
    ,                 -- comma separates result set definitions
    (Name Name,       -- second result set definition starts here
    NumberOfOrders int)
);
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716709
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716713
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerlockyа насчет "противоречащий стандарту" - главное чтобы не противоречило здравому смыслу и потребностям, остальное - от лукавого.
Согласен. Собственно моё большое удивление по поводу unique в mssql вызвано именно его категорическим противоречием здравому смыслу. Стандарт же я здесь упомянул только для подчёркивания противопоставления "документированному поведению". Там, где стандарт противоречит здравому смыслу (например, в требовании различать null и пустую строку) я сам с большим удовольствием поддерживаю забивание на стандарт.
А я вот вижу различие между NULL и пустой строкой, и поведение оракуля, который с какого-то бодуна их не различает - кажется мне весьма сомнительным. Как оракул еще NULL с нулём не путает - удивительно просто.....

Но, тем не менее, UQ с множественными NULL значениями - в скуле таки есть, реализуемы.
И, видимо, в оракуле аналогичным образом реализуемы UQ с единственным NULL значением.
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716716
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что интересно, ораклоиды крайне редко приводят в качестве примеров того, что у них есть хорошего - действительно интересные и хорошие вещи
До сих пор удивляюсь - почему так происходит.
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716732
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я могу в Oracle написать такую функцию (утрировано):

Код: plsql
1.
2.
3.
4.
5.
6.
function tableCount return integer is
  cnt integer;
begin
  DELETE * into cnt from table;
  return cnt;
end;
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716734
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716736
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinЯ могу в Oracle написать такую функцию (утрировано):

Код: plsql
1.
2.
3.
4.
5.
6.
function tableCount return integer is
  cnt integer;
begin
  DELETE * into cnt from table;
  return cnt;
end;


Да, но в DML вызывать нельзя, только procedure-like
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716746
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyЧто интересно, ораклоиды крайне редко приводят в качестве примеров того, что у них есть хорошего - действительно интересные и хорошие вещи
До сих пор удивляюсь - почему так происходит.Просто обычно специалист хорошо знает одну систему и не мыслит, что какая-то очевидная для него вещь отсутствует в другой базе данных.

Ну, например, возьмите систему встроенных пакетов Oracle . Можно открывать по очереди и узнавать, и узнавать новое. И этого обычно нет в MSSQL. Но даже если не сравнивать набор этих возможностей, а просто глянуть на то, что у MSSQL имена хранимых процедур находятся в одном измерении, то можно привести в ужас бывалого разработчика pl/sql.
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716748
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyДа, но в DML вызывать нельзя, только procedure-like

Т.е., грубо, в коде вызвать можно:

Код: plsql
1.
а =  tableCount 



Тогда здесь тот же самый side effect.
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716752
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander RyndinlockyЧто интересно, ораклоиды крайне редко приводят в качестве примеров того, что у них есть хорошего - действительно интересные и хорошие вещи
До сих пор удивляюсь - почему так происходит.Просто обычно специалист хорошо знает одну систему и не мыслит, что какая-то очевидная для него вещь отсутствует в другой базе данных.

Ну, например, возьмите систему встроенных пакетов Oracle . Можно открывать по очереди и узнавать, и узнавать новое. И этого обычно нет в MSSQL. Но даже если не сравнивать набор этих возможностей, а просто глянуть на то, что у MSSQL имена хранимых процедур находятся в одном измерении, то можно привести в ужас бывалого разработчика pl/sql.
Вай ме, вай дод.... Системные процедуры находятся в одной системной схеме... Да, это может вскипятить мозг
Другое дело, если системные процедуры раскиданы по сотням системных пакетов - это да, удобно. Всегда приятно угадывать - где что лежит.
Это лирика.

А вот что касается "специалист знает одну систему" - ну дак может оные "специалисты" просто.... ээээ... слегка "зашорены"? Ну или просто не умеют пользоваться другими системами, откуда и возникает это вот "а у вас всё не по людски!А вот у нас...."

зы обычно "узнают новое" из документации, а не копаясь в "системных пакетах". но это тоже - лирика.
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716756
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinlockyДа, но в DML вызывать нельзя, только procedure-like

Т.е., грубо, в коде вызвать можно:

Код: plsql
1.
а =  tableCount 



Тогда здесь тот же самый side effect.
Ну, тут сайд-эффекта то нету
ты фактически вызвал процедуру, которую смеха ради оформил функцией.
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716757
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerПередача важнейшей информации через неструктурированную глобальную переменную, аналог фортрановских "общих областей" (это такое достижение технологии 1957-го года, убрано из языка как устаревшее и неадекватное кажется в 1977-м)

Для многих разработчиков, использующих не Oracle, выглядит странным, что запрос (и это может быть не только SELECT), возвращающий резалтсет клиенту, может быть отправлен, напрямую с клиента, но точно такой же запрос нельзя обернуть в "модуль" и получить результат "тем же образом".

Так можно договорится до того, что в Pascal надо было не допускать использования writeln в процедурах и функциях, ибо непонятно, куда же информация передается из процедуры.
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716762
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyНу, тут сайд-эффекта то нету
ты фактически вызвал процедуру, которую смеха ради оформил функцией.

Т.е. сайд эффект, таки, не зависит от того, что написано внутри, а от "способа" вызова...

ЗЫ. Слава Богу, что в MS SQL хп нельзя использовать в SELECTах, а в функциях CUD не к локальным табличным переменным. :)
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716765
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinlockyНу, тут сайд-эффекта то нету
ты фактически вызвал процедуру, которую смеха ради оформил функцией.

Т.е. сайд эффект, таки, не зависит от того, что написано внутри, а от "способа" вызова...

ЗЫ. Слава Богу, что в MS SQL хп нельзя использовать в SELECTах, а в функциях CUD не к локальным табличным переменным. :)
А может и не слава богу....
Мы то выкручивались, но сколько это крови требовало :)
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716768
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyкак по мне, так лучше иметь 2 (или более) способа выполнить некую задачу,
Способы различаются удобством, опасностью, полезностью в некоторых специфических ситуациях. Я в целом "за" способы, которые хоть в каких-то реальных ситуациях заметно лучше других. Что же касается конкретно этого... на решающую суперфичу он, деликатно говоря, ну никак не тянет.

lockyнежели с пеной у рта доказывать всем и каждому "есть только один исконно правильный способ, нужно использовать его! Ведь по другому то и не сделаешь!"
Тем не менее я рад, что многие выдающиеся учёные с пеной у рта доказали таки всем и каждому, что надо выкинуть из языков программирования такие способы выполнить задачу, как операторы ALTER PERFORM и ASSIGNABLE GOTO, альтернативные точки входа в функции, COMMON области, GOTO в тело другой подпрограммы и целый ряд прочих подобных фич.

pkarklinВот здесь можно прочитать о новой опции EXECUTE - WITH <result_sets_definition>. Приведу только пример:
Если я правильно понял, то это косметическое изменение, от которого я не ждал бы большого эффекта. В лучшем случае оно улучшит диагностику проблемных ситуаций "когда всё уже упало" - вместо невнятного падения ХП в случайном месте со случайной диагностикой будет падение с диагностикой "кривые входные резалтсеты". Но более важно то, что если ХП вызывается из двадцати мест, то это требует писать одно и то же в двадцати местах?

lockyНо, тем не менее, UQ с множественными NULL значениями - в скуле таки есть, реализуемы.
Безусловно. Напоминаю Вам, что я здесь не нападаю на MSSQL, а всего лишь дезавуирую аргумент "документировано - значит правильно", выдвинутый Павлом. Мог бы, конечно, дезавуировать на примере документированных оракловых нуллов - но по мне это было бы демагогией.

pkarklinЯ могу в Oracle написать такую функцию (утрировано):

Код: plsql
1.
2.
3.
4.
5.
6.
function tableCount return integer is
  cnt integer;
begin
  DELETE * into cnt from table;
  return cnt;
end;


Если я правильно понял, что Вы хотите, то это пишется так:

Код: plsql
1.
2.
3.
4.
5.
function deleteTable return integer is
begin
  delete from table;
  return sql%rowcount;
end;



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

lockyЧто интересно, ораклоиды крайне редко приводят в качестве примеров того, что у них есть хорошего
В свете специфики типичного "сравнения" это неудивительно. Меня удивляет как раз то, что мссклщики козыряют фигнёй вместо тех немногих вещей, которые у них действительно лучше (ну дисклеймер - немногих, которые я знаю. может, многих хороших не знаю).
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716778
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinДля многих разработчиков, использующих не Oracle, выглядит странным, что запрос (и это может быть не только SELECT), возвращающий резалтсет клиенту, может быть отправлен, напрямую с клиента, но точно такой же запрос нельзя обернуть в "модуль" и получить результат "тем же образом".
Я не очень понимаю, зачем его во что-то оборачивать.

pkarklinТак можно договорится до того, что в Pascal надо было не допускать использования writeln в процедурах и функциях, ибо непонятно, куда же информация передается из процедуры.
Ну если человек перенаправит stdout и построит взаимодействие внутри приложения по принципу "одна процедура пишет writeln-ами, другая читал readln-ами", я пожалуй таки уверенно назову его нестандартно ориентированным. Что же до Pascal, то writeln из него надо было выкинуть ещё в середине девяностых, равно как и сейчас наблюдается ну просто волшебная корреляция между флагом "говнокод" и наличием в тексте всяких system.out.println.
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716781
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerВ свете специфики типичного "сравнения" это неудивительно. Меня удивляет как раз то, что мссклщики козыряют фигнёй вместо тех немногих вещей, которые у них действительно лучше (ну дисклеймер - немногих, которые я знаю. может, многих хороших не знаю).
Да нам это как-то и не надо, козырять то :)
Как правило, стандартных ответов всего два: "зато мы работаем под линуксом" и "этого у нас нет, потому что это нам не нужно (да и нету у нас этого)"


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

зы - я вот как раз из них :)
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716791
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyДа нам это как-то и не надо, козырять то :)
К сожалению, практика не подтверждает истинность Ваших слов. Если очень не лень, сделайте поиск по форуму - несколько лет назад я делал глобальную выборку "холиварных" топиков форума на предмет "кто их начал: ораклоид/мссклщик/неизвестно". В итоге примерно 100% топиков были начаты мссклщиком с общим девизом "почему все кричат про крутоту оракла, когда у нас не хуже".

lockyКак правило, стандартных ответов всего два:
Правильно. Обратите внимание: ответов. А ответов на что?
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716793
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerПравильно. Обратите внимание: ответов. А ответов на что?
На любой аргумент.
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716794
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и, разумеется, неповторимое "у нас это есть с 1993 года/с семёрки"
...
Рейтинг: 0 / 0
Чем MS SQL Server хуже Oracle Database?
    #37716799
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockysoftwarerПравильно. Обратите внимание: ответов. А ответов на что?
На любой аргумент.
Ну собственно про "кому надо козырять" вроде как уже очевидно.
...
Рейтинг: 0 / 0
25 сообщений из 271, страница 6 из 11
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем MS SQL Server хуже Oracle Database?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]