Комментарии 7
В Oracle повсеместно широко используют различные хранимые процедуры и триггеры. Как вы с ними вопрос решили?
Какие ещё варианты рассматривали кроме Pentaho? Почему не стали использовать ora2pg?
До Pentaho мы протестировали 5 вариантов: импорт/экспорт csv, dblink через гетерогенные сервисы оракла, dblink через oracle_fdw, ora2pg и SymmetricDS.
Ни один из них не давал нам возможности перелить полный объем в течение заявленного окна времени, а для итогового варианта с догрузкой дельт нам не хватало управляемости --- на тот момент ora2pg не умел забирать часть данных из таблицы, переливал её всегда целиком. Может сейчас научился?
С другой стороны сильно порадовал богатый DDL и DML синтаксис. У любого CREATE INDEX и ADD COLUMN есть опция IF NOT EXISTS. Это после Oracle, где для безопасного создания индекса, надо писать солидный блок кода
В Oracle DB 23c "IF NOT EXISTS" уже тоже имеется: https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/CREATE-TABLE.html#GUID-F9CE0CC3-13AE-4744-A43C-EAC7A71AAAB6
В более ранних версиях Oracle для удобства в PL/SQL пакете Один раз писались соответствующие процедуры и дальше пользовались всегда. Типа,
PROCEDURE CREATE_TABLE_IF_NOT_EXISTS (p_owner IN STRING, p_table_name IN STRING. p_table_definition IN STRING) ...
Oralce был и остается на данный момент лучшей реляционной базой данных в мире. Однако политика правительства США ведет нас к тому, что рано или поздно придется от него отказаться. Но лично я не особо вижу переходить с Oracle на что-то другое в авральном режиме, где на этой базе уже есть работающие продукты или решения. "Легитимные" для России версии Oracle 19C и даже 21С могут проработать еще лет 10 а то и больше, не особо устаревая. Главное, чтобы железо под них было подходящее. Как там, правило программистов "Не трогай работающую систему". Ну а все новые проекты, конечно же надо начинать на чем-то другом.
Ура, дозрели! Синтаксический сахар — это приятно.
Наше решение использовалось вместе с зоопарком от 9 до 21 версий Оракла, универсального подхода для всех сразу не получилось. Но да, в итоге все это сводится к хранимкам — у нас такие тоже были.
Аврального перехода и не происходит, но мотивация переходящих вполне понятна — патчи для возникающих ошибок теперь получить можно только с помощью сложных схем, да и в целом любое обращение в саппорт превращается в настоящий квест. Так что для промышленной эксплуатации приличных систем использовать Oracle уже не так приятно.
А вот с мыслью о том, что Oracle — лучшая реляционная БД, я соглашусь. Оптимизатор, диагностика, стабильность работы... Эх :)
Отличная статья, коррелирует с моим опытом миграции крупной БД Axapta 3.0 в "нереально сжатый срок простоя продуктива", но плюс пересчет RecId int32 (кто работал знает проблему с ограничением maxint на компанию).
Как мы продукт на PostgreSQL переводили