Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Переход с Oracle на Postgress  [new]
most23
Member

Откуда: Чикаго
Сообщений: 38
Долго занимался только Oracle - бэкенд, формсы, репорты.
Вот сейчас возникает возможность перейти на проект, который мигрирует существующее приложение на Oracle в Postgres. Работа предполагается только с серверной частью, фронтендом заниматься не придется. Обязанности DBA тоже выполнять не требуется.
C оракловскими делами, SQL/PLSQL у меня никаких сложностей нету, знаю довольно хорошо.
Новую датабазу готов учить, ничего плохого про Postgres я не слышал.
Кто проходил через подобный процесс, что скажете, каким опытом поделитесь, на что обратить внимание, какие ожидать сложности?

Сообщение было отредактировано: 16 ноя 21, 01:06
16 ноя 21, 01:06    [22396429]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
Misha111
Member

Откуда:
Сообщений: 75
most23,

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

если проект использует оракл чисто как таблицехранилище, то проблем практически не будет.
16 ноя 21, 08:39    [22396446]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
Надфиль
Member

Откуда:
Сообщений: 283
Еще есть интересные "мелочи"
1. NULL и '' в ПГ не одно и тоже.
2. Очень надоедает необходимость четко указывать тип (и следить при сравнениях, да и просто при джойнах). само оно и пытаться не будет приравнять 1 к '1', например. в лучшем случае оно скажет об ошибке приведения, в худшем не будет, например, использовать индекс, там, где у ораклиста и вопросов не возникнет)

и таких мелочей там не мало.
16 ноя 21, 10:06    [22396473]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
artel.dev
Member

Откуда:
Сообщений: 90
Немного офтоп, переписывал ETL с R-project на PL/SQL.

Долго исправлял код, где используется тип Timestamp with time zone.

Оказалось, что если тестовый сервер в РФ, а прод в США - результаты сильно разные.

При сортировке значение NULL сортируется не так как в R-project: у кого-то оказывается в начале, а у кого-то в конце списка.

Пришлось принудительно проставлять NULLS FIRST или NULLS LAST.
16 ноя 21, 12:32    [22396548]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
delphinotes
Member

Откуда: Санкт-Петербург
Сообщений: 432
У нас в проекте _слишком_ много pl/sql-кода (легаси почти с 2000 года).
Начитавшись о всяких подводных камнях решили не "переводить", а "выстроить" новый проект, и попутно избавиться от костылей и всякого.

По оракловым фичам:
- от автономных транзакций удалось отказаться без потерь (внушив себе, что автономки сами по себе - костыль.. хотя, конечно, с ними удобнее)
- временные таблицы в PG - их лучше не использовать, лучше создавать unlogged таблицы и эмулировать доступность данных в них по аналогии с временными в оракле
- вместо пакетов использовать схемы
- вместо глобальных переменных - таблицы и контекстные переменные
- джобы заменяются pgagent'ом
- utl_xx, dbms_xx - внешними сервисами
16 ноя 21, 13:38    [22396576]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
most23
Member

Откуда: Чикаго
Сообщений: 38
я с ораклом привык к Toad, уютно как в лаптях. А какой тул используется в Postgres для работы?
16 ноя 21, 23:08    [22396732]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
Maxim Boguk
Member

Откуда: По разному.
Сообщений: 5022
most23
я с ораклом привык к Toad, уютно как в лаптях. А какой тул используется в Postgres для работы?


А что такое работа? Если DBA - то только psql command line
если разработка то там много всего понаделали... одно кривее другого.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
16 ноя 21, 23:30    [22396737]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
most23
Member

Откуда: Чикаго
Сообщений: 38
Maxim Boguk,
выше по контексту вы могли бы понять, что речь идет о работе девелопера.
Вы, видимо, сами не девелопер и не в базах данных. Я полагал, что любой ораклист знает что такое Toad и как он незаменим в ежедневной рутине. Запросы, написание pl/sql кода, анализ схем, вообще все что пожет понадобиться разработчику, в одном пакете, удобно, быстро и надёжно. Хотя и дорого, у Toad цена лицензии существенная. Но я всегда считал если фирма не может обеспечить разработчикам каждому по копии Toad, то и нечего иметь дело с нищебродами.
Я совершенно уверен что существует "куча всего кривого", спасибо, капитан, поэтому я и задал простой (для тех кто в теме) вопрос - в postgres существует аналог Toad? Универсальный, общепринятый, мощный и удобный?
16 ноя 21, 23:36    [22396739]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
delphinotes
Member

Откуда: Санкт-Петербург
Сообщений: 432
most23,

похоже что нет. Я долго искал, много чего перепробовал, всё оно к разработке подходит с какого-то другого боку.

Тем не менее, я остановился на двух утилитах.
1. Это dbeaver, у него есть бесплатная редакция. Такой, вполне себе простенький тул, чем-то мне напомнил SQLTools для ораклы.

2. datagrip, там есть студенческие лицензии, либо для индивидуального девелопера не так уж и дорого, при этом у него куча настроек (вполне под себя можно настроить) и куча плюшек, типа прозрачной интеграции с GIT, интуитивное ведение проекта (когда проект - это каталог в файловой системе, и дальше все файлы и подкаталоги видны) и много всякого именно для разработки (закладки, избранное, TODO..).
В ПГ нет пакетов как в оракле, но можно функции объединять в схемы, и в этом случае все функции схемы я сохраняю в единый файл (а не каждую функцию в отдельный файл) - датагрип умеет в отдельной панели отображать структуру файла (с сортировкой по именам) для быстрой навигации.. вполне юзабельно.
Но надо быть готовым к тому, что придётся потратить время на настройку. По началу датагрип тормозной (постоянно парсит исходники, у него куча помощников надоедливых), он кэширует метаданные (что мешает при параллельной разработке и приходится этот кэш сбрасывать), автоматически сохраняет _все_ файлы не спрашивая...
17 ноя 21, 00:34    [22396766]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
delphinotes
Member

Откуда: Санкт-Петербург
Сообщений: 432
Да, ещё такие "беды" в ПГ есть (я относительно 12й версии ПГ пишу, с другими не работал).

1. ПГ не умеет строить зависимости по процедурам. Зависимости видны только по форейн-ключам таблиц, по вьюхам и триггерам.

2. Процедурный код при "компиляции" проверяется только на синтаксис. Т.е. оно даже не компилируется... хотя утверждать не буду, возможно какое-то дерево исполнения строится заранее (а может и на лету).
Ошибки (ну например банальная опечатка в коде) будут при исполнении, причём только если исполнение дошло до этой строки (ну if-then-else блоки).
Поэтому каждую функцию надо тестировать. Ну и датагрип тут помогает, он опечатки подсвечивает (да, рефакторинг в нём достаточно удобный).

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

Вообще следуют сразу строго настрого запретить разработчикам менять код непосредственно в БД, т.е. мы делаем так:
- сначала создаётся файл (со вьюхой, или группой вьюх, или процедурами)
- файл накатывается на БД для разработки (я забил на общую БД, развернул у себя на локальном компе, это тупо быстрее), тестируется и т.п.
- файл комитится в GIT
- из GIT'а (пока ещё не сделали, но будет, что-то типа git-flow или пайплайны) оно автоматически накатывается на отдельный инстанс и там тестируется
17 ноя 21, 00:54    [22396779]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
most23
Member

Откуда: Чикаго
Сообщений: 38
delphinotes,
спасибо за толковый и дружелюбный ответ.
17 ноя 21, 01:45    [22396788]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
Надфиль
Member

Откуда:
Сообщений: 283
most23
я с ораклом привык к Toad, уютно как в лаптях. А какой тул используется в Postgres для работы?

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

последнее время datagrip используем, после рассмотрения 10ка альтернатив, даже купили лицензии.он прожорлив но в принципе норм.
и в нем нет пока дебага для ПГ. с этим вообще беда в ПГ.
17 ноя 21, 09:16    [22396813]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5825
Надфиль

и в нем нет пока дебага для ПГ. с этим вообще беда в ПГ.


Ну дык правильно. PL/pgSQL это по факту "левая приблуда" для PostgreSQL, наравне с каким-нибудь PL/PHP.
Родные ХП для PG это просто SQL-запросы с параметрами.
17 ноя 21, 14:00    [22396982]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
most23
Member

Откуда: Чикаго
Сообщений: 38
ну что, подписал оффер.
Открыл Postgres Tutorial.
После четырёх месяцев еботни с дебильным Jdeveloper ADF, ощущение что пересел с кокпита Boing 777 на велосипед. Трёхколесный.
18 ноя 21, 02:22    [22397258]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2865
EMS Manager меня всем устраивает.
И параметры для запросов с историей
и дебаггер
импорт - экспорт почти из всего и во всё

Сообщение было отредактировано: 18 ноя 21, 18:50
18 ноя 21, 18:49    [22397672]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
olegeos
Member

Откуда:
Сообщений: 175
most23,
Слово не прозвучало про pgadmin, не тоад конечно Но что-то в нем делать можно. Постепенно его развивают.
23 ноя 21, 17:41    [22399827]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
alex722
Member

Откуда:
Сообщений: 130
most23,

Ты это, тему не забрасывай, изучай, спрашивай, доки, тулзы и тд
В следующем году тоже с оракла начнём съезжать на постгри просто ;)
28 ноя 21, 14:25    [22402144]     Ответить | Цитировать Сообщить модератору
 Re: Переход с Oracle на Postgress  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4449
_avz
EMS Manager меня всем устраивает.
И параметры для запросов с историей
и дебаггер
импорт - экспорт почти из всего и во всё


он не бесплатный
28 ноя 21, 16:04    [22402190]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить