powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Переход с Oracle на Postgress
25 сообщений из 65, страница 2 из 3
Переход с Oracle на Postgress
    #40120540
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов

PostgreSQL изнутри, Рогов Е. (будет доступна где-то в течение месяца здесь )

Будет ли в бумаге?
Как бы подписаться, чтоб не пропустить?
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40120546
most23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Курю родные мануалы.
копаю тему про создание функций, возвращающих refcursor.
полнейшая неразбериха, нигде внятно не объясняются все варианты.
Обнаружил что в нашем приложении вообще используется вариант, который нигде не описан, но он работает.
Это п-ц, товарищи!
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40120729
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guzya
Павел Лузанов

PostgreSQL изнутри, Рогов Е. (будет доступна где-то в течение месяца здесь )

Будет ли в бумаге?
Как бы подписаться, чтоб не пропустить?

В бумаге будет. За деньги. На сайте pdf - бесплатно.
Как подписаться не знаю. Но январь, максимум февраль. Так что ждать недолго.
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40120864
Фотография Makar4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
most23,

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

Дата + 1 (Numeric) - посгря позволяет как С++ перегружать операторы.
основной синтаксис тот же.
Пэкэджи можно в схемы оформить, можно нет.
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40120865
Фотография Makar4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...Вот посгря при этом не компилируемая, как оракл.
И позднее связывание, как в M$$QL
Так что ошибку мы выловим на этапе исполнения.
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40120880
most23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мой первый ассайнмент на новой работе:
сравнить время выполнения хранимых процедур Oracle и PG.
Для большей точности одна и та же процедура вызывается по циклу 1000 раз.
Ну чо, сравним. Только собираюсь заменить запросы с параметрами у рефкурсорных функций на NDS.
чтобы, значить, заставить их репарсить при вызове по циклу.
Народ местный удивился - "а что, так можно было?"
Я также слегка обалдел удивился обнаружив в частной беседе что цель менеджера проекта (и моего начальника) отбиться от PG потому что он должен быть будет медленный.
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40120882
most23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
most23
мой первый ассайнмент на новой работе:
сравнить время выполнения хранимых процедур Oracle и PG.
Для большей точности одна и та же процедура вызывается по циклу 1000 раз.
Ну чо, сравним. Только собираюсь заменить запросы с параметрами у рефкурсорных функций на NDS.
чтобы, значить, заставить их репарсить при вызове по циклу.
Народ местный удивился - "а что, так можно было?"
Я также слегка обалдел удивился обнаружив в частной беседе что цель менеджера проекта (и моего начальника) отбиться от PG потому что он должен быть будет медленный.

Фирма солидная, международная, большая, как раз на днях её съела купила еще более большая фирма из GB
Новые хозяева уже добавили всем 10 персональных больничных дней в год, но запретили ранее действующее разрешение переносить неиспользованый отпуск на 3 месяца в следующий год. У кучи народа расчитывающих на это отпуска погорели.
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40123703
muller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphinotes, Вы пишите:

> Ошибки (ну например банальная опечатка в коде) будут при исполнении,
> причём только если исполнение дошло до этой строки (ну if-then-else блоки).

То есть что, все хранимые нужно тестировать со всеми вариантами входных параметров, чтобы пробежалось по всем кусочкам кода?
Заглянуть в каждый иф, в каждый кейс...

Как Вы это делаете?
Это же всё страшно ненадежно!

Может быть есть методика, кроме "не нравится - не программируй"?
Я не ёрничаю. Я реально в ужасе от таких перспектив.
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40123723
most23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
muller,

Элементарно, Ватсон, деплоишь в продакшен и ждешь жалоб от юзеров.
Патанатом лучший диагност! Юзер лучший тестировщик!
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40123728
delphinotes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
muller,

Да, простой тест:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
create or replace function test.f1() returns boolean language plpgsql as $$
begin
  raise notice 'f1';
  return true;
end
$$;

create or replace function test.main(a_condition boolean) returns boolean language plpgsql as $$
begin
  if a_condition then
    return test.f1();
  else
    return test.f2();
  end if;
end
$$

select test.main(true);
select test.main(false);



функция test.f1() существует, поэтому вызов select test.main(true) отработает, второй функции нет - вызов select test.main(false) завершится ошибкой:
Код: sql
1.
SQL Error [42883]: ERROR: function test.f2() does not exist



С другой стороны, я вижу в этом возможность обхода отсутствия условной компиляции. В Oracle оно есть:
Код: sql
1.
$if _const_ $then f1; $else f2; $end


Используем для реализации, так сказать, client specific логики.

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

Насчёт тестирования - использую такой подход, при котором не создаётся больших (по кол-ву кода) процедур. Если процедура делает много чего, то каждый кусочек выделяется в отдельную процедуру, которая и тестируется. При написании кода с нуля, тут ничего такого нет, только рутина.
Ежели брать Oracle легаси (у нас до дури plsql-кода с использованием сомнительных практик)... я даже не знаю, отказался я от этой идеи.
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40123729
delphinotes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати недавно наткнулся на такое (при работе со структурными типами). Вот так писать нельзя (PG 12):
Код: sql
1.
 l_record is not null


вместо этого надо:
Код: sql
1.
not l_record is null


Это работает как plpgsql, так и в sql.
см. здесь
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40123732
delphinotes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, и ещё одна особенность: null в уникальном индексе не работает. Т.е. если хоть одно из полей составного индекса из null, то уникальность не работает.
Варианты обхода:
а) использовать where
б) приводить к not null с помощью coalesce

Эта проблема уже несколько раз на этом форме поднималась, например вот:
Как создать уникальный составной индекс, который может содержать null значение
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40123804
Надфиль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
muller
delphinotes, Вы пишите:

> Ошибки (ну например банальная опечатка в коде) будут при исполнении,
> причём только если исполнение дошло до этой строки (ну if-then-else блоки).

То есть что, все хранимые нужно тестировать со всеми вариантами входных параметров, чтобы пробежалось по всем кусочкам кода?
Заглянуть в каждый иф, в каждый кейс...


https://github.com/okbob/plpgsql_check
вот эта штука сильно помогает найти грубые ошибки и опечатки, которые только в рантайм вылезут.
не логические, конечно, но, тем не менее,мне сильно помогло.
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40123824
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphinotes
Да, и ещё одна особенность: null в уникальном индексе не работает. Т.е. если хоть одно из полей составного индекса из null, то уникальность не работает.

По ясному требованию стандарта null не равен null, поэтому совершенно логично уникальный индекс следует этому правилу. А оракл пользуется другой альтернативной логикой. При том, напрямую не противоречащей sql spec.
Передаём привет sql spec, недостаточно явно описывающему многие нюансы.

delphinotes
Вот так писать нельзя (PG 12):

можно. Но документацию читать надо. Там описано, как считается is null над композитами.

По рантайм ошибкам - плюсую plpgsql_check. Весьма хороший штук.

muller
Может быть есть методика, кроме "не нравится - не программируй"?
Я не ёрничаю. Я реально в ужасе от таких перспектив.

Ну самые обычные впечатления, когда переходишь с компилируемого языка на интерпретируемый. С go на python, например, или подобное.
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40123844
muller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphinotes,
Душевно признателен за подробный ответ!

И вот у меня система на Оракле. Двухзвенка. Бизнес логика на сервере. То есть огромное количество хранимых в пакетах с процедурами, подпроцедурами, с бешенным количеством параметров, и эти параметры зачастую %rowtype а то и коллекции %rowtype.

Допустим, я получаю распоряжение:
Отказаться от Оракла. Переехать на Постгресс.
И, судя по Вашему ответу, хренушки у меня получиться эффективно сохранить архитектуру.
Проще фигню какую-то намутить, используя Постгресс только как хранилище.

Ну что ... новые вызовы.
Ещё раз спасибо!
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40123879
Надфиль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
muller

И вот у меня система на Оракле. Двухзвенка. Бизнес логика на сервере. То есть огромное количество хранимых в пакетах с процедурами, подпроцедурами, с бешенным количеством параметров, и эти параметры зачастую %rowtype а то и коллекции %rowtype.

это, как показывает практика, так себе решение.
доходит иногда до смешного, поменял комментарий у поля и пару тысяч invalid объектов в базе. и тут начинается веселье)
правда в оракле есть шаред пул) по идее на ПГ должно быть все проще с изменениями в структуре таблиц)
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40124027
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
muller,

Тоже имеем подобную архитектуру. При переходе частично код менялся регулярками, создавались функции заглушки от которых потом уже избавлялись (самое распространенная это строковая_переменная is null заменялась регуляркой на isNull(строковая_переменная) ult где дополнительно проверялась на пустую строку для сохранения логики Oracle).

%rowtype просто удалялись, коллекции сложных типов пришлось заменить на массивы (с изменением кода, частично регулярками), более сложные случаи заменили на работу с JSONB.

Так что даже если безнеслогика заложена в БД, то вполне возможно перенести на ПГ. Ну и потом расширение plpgsql_check просто обязано быть.


У ИК есть конвертер, который отрабатывает львиную часть изменений, можете попробовать связаться с ними.
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40124249
muller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swa111,
Благодарю за советы, если прижмут к реке, то буду использовать.
Но чето оптимизма поубавилось... воистину знания умножают скорбь.
Ну ... авось вывернусь, не впервОй.

ЗЫ.
И да, лучше всё станет инвалидным из-за мелочи где-нибудь на тестовом контуре, чем (обычно под новый, особливо високосный год такое бывает) система вывалится с неопознанным эксепшеном на проде.

Никому такого в Новом году!
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40124254
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muller
Swa111,
Благодарю за советы, если прижмут к реке, то буду использовать.
Но чето оптимизма поубавилось... воистину знания умножают скорбь.
Ну ... авось вывернусь, не впервОй.

ЗЫ.
И да, лучше всё станет инвалидным из-за мелочи где-нибудь на тестовом контуре, чем (обычно под новый, особливо високосный год такое бывает ) система вывалится с неопознанным эксепшеном на проде.

Никому такого в Новом году!


а какой это у нас вдруг вискокосный год?
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40124287
muller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин, у нас 2024 ближайший вроде как, а у Вас?
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40124393
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muller
... если прижмут к реке, то буду использовать.
Но чето оптимизма поубавилось... ...


Какие ужасы вы пишите. Аж кровь стынет.
Вот эти те, которые заставляют вас лоб морщить над такими вопросами, что они вообще себе, и о себе тоже, думают?
Где, интересно, они насмотрелись работы с биржей на Postgress.
И даже, если на самом деле где-то насмотрелись, понимают ли, что платить за такой Postgress все равно придется вполне полновесно.

Поверить не могу, что о такой безнадеге вас заставляют думать существующие клиенты.
А про будущих хорошо знать вот что: статистически они не всегда отчетливо и детально понимают, чего точно хотят.
Слишком много глубоких мыслей в их хотелках намазано.
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40124640
muller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby, когда я был маленький, то огорчался, что придется менять инструментарий с борландовского на оракловый ... теперь вот так ... жизнь - боль.
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40124646
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,

freeware многие используют не потому что дешевле, а потому что появляется уверенность,
что заказанная разработка через 3 года не превратится в "тыкву"
из - за смены "Концепции" у продавца инструментария. Или из-за того что он банально разорится.

просто для сравнения какая может быть поддержка: поддержка PG
Чтобы получить такую у oracle нужно быть американской компанией из top10

Про политическую составляющую я даже не заикаюсь.
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40124709
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muller
... когда я был маленький, то огорчался...


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

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

Ладно, прошу прощения за реплику.
...
Рейтинг: 0 / 0
Переход с Oracle на Postgress
    #40124713
muller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Lejnin,
среди наших клиентов есть минимум один, который не может купить себе свежий оракл, и минимум один не может официально докупить себе виндус -лицензий для рабочих станций, потому что оба-два под санкциями с разными предлогами.
Приходится задумываться.
...
Рейтинг: 0 / 0
25 сообщений из 65, страница 2 из 3
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Переход с Oracle на Postgress
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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