Рассмотрим типичную ситуацию: компания использует Oracle Database, в которой накоплены десятки терабайт данных. При попытке миграции на Postgres Pro возникают следующие проблемы:

  • длительное время переноса из-за большого объема данных;

  • высокая нагрузка на исходную систему и необходимость её непрерывной работы, несмотря на постоянные изменения в данных;

  • риск потери или повреждения данных: ошибки передачи, несоответствие типов данных и другие технические проблемы.

Для решения этих задач мы разработали ProGate, который должен существенно облегчить жизнь администраторам баз данных и ускорить переезд на Postgres Pro.

Что такое ProGate?

ProGate — это комплексное решение для миграции данных в Postgres Pro. Он состоит из нескольких специализированных утилит, которые покрывают все этапы миграции:

  • ProCopy — быстрая первоначальная загрузка данных;

  • ProSync — непрерывная синхронизация изменений (Change Data Capture — CDC);

  • ProCheck — контроль качества и целостности данных после миграции.

Давайте подробнее рассмотрим каждую из этих утилит.

Этап 1. Первоначальная загрузка данных с помощью ProCopy

ProCopy — это консольная утилита для быстрой первоначальной загрузки данных в Postgres Pro. Её задача — максимально быстро перенести большие объемы данных, в том числе не выключая систему-источник, чтобы минимизировать время простоя или задержку в работе приложений. В последних синтетических тестах нам удалось достигнуть производительности в 200–500 МБ/секунду, или до 41 ТБ/сутки по маршруту Oracle Database → Postgres Pro. А для маршрута PostgreSQL → Postgres Pro примерно 1 ГБ/сек. 

Как это работает?

ProCopy написан на языке Go, что позволяет максимально эффективно использовать ресурсы сервера, работать параллельно и переносить базы данных любого размера.

Архитектурно ProCopy использует:

  • пул параллельных процессов чтения и записи;

  • встроенную шину данных для эффективного обмена информацией между процессами;

  • механизм обработки ошибок с возможностью повторной загрузки проблемных записей.

Пример использования ProCopy

Представим, что у вас есть таблица CUSTOMERS в Oracle Database, которая содержит миллиарды записей. С помощью ProCopy вы можете настроить параллельный перенос данных, указав количество процессов чтения/записи и размер батчей. Более того, вы можете исключить ненужные столбцы, изменить их названия или типы данных, и даже преобразовать NULL-значения прямо в процессе миграции.

Преимущества

  • Высокая скорость передачи данных.

  • Гибкость конфигурации (YAML/JSON).

  • Возможность возобновления работы с места остановки.

  • Поддержка сложных типов данных (LOB, XML, JSON и другие).

Этап 2. Синхронизация изменений с помощью ProSync (CDC)

ProSync — инструмент для непрерывного захвата изменений (CDC) из Oracle Database и их применения в Postgres Pro. Это позволяет обеспечить короткий downtime при миграции.

Как это работает?

Когда в базе данных Oracle происходят любые изменения, например добавление новой записи, изменение существующей или удаление данных, эти действия записываются в специальные журналы изменений (redo-логи) Oracle Database. ProSync постоянно следит за этими журналами и сразу же «видит» каждое изменение. Затем он берёт эти изменения и повторяет их в базе данных Postgres Pro.

Таким образом, данные в Postgres Pro всегда остаются актуальными и полностью совпадают с теми, что есть в Oracle Database. Это позволяет выполнять миграцию с минимальным техническим окном и без потери данных.

Реальный пример

Представьте банк, который не может позволить себе остановить систему даже на час. С помощью ProSync банк может постепенно переносить данные и приложения с Oracle Database на Postgres Pro, не останавливая работу исходной системы. Пользователи продолжат работать в Oracle Database, а все изменения в реальном времени будут синхронизироваться с новой базой данных на Postgres Pro. После полной синхронизации можно переключить приложения на новую систему с минимальным временем простоя.

Преимущества

  • Минимальная нагрузка на исходную СУБД.

  • Надежная обработка ошибок и мониторинг состояния репликации.

Этап 3. Проверка качества данных с помощью ProCheck

ProCheck — инструмент, который позволяет убедиться, что миграция прошла успешно, и данные в Postgres Pro полностью соответствуют данным в Oracle Database.

Как это работает?

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

Пример использования

После завершения миграции нужно проверить, совпадают ли финансовые балансы в Oracle Database и в новой системе на Postgres Pro. ProCheck автоматически проверит каждую запись и подтвердит, что все данные перенесены корректно.

Использование ProGate наиболее эффективно при:

  • миграции крупных баз данных (терабайты и выше);

  • необходимости минимального простоя (горячая миграция);

  • строгих требованиях к качеству и консистентности данных.

Возможные ограничения ProGate

Несмотря на все преимущества, важно помнить о возможных ограничениях:

  • Изменения схемы во время миграции, которые могут потребовать ручного вмешательства.

  • Пользовательские типы данных, требующие индивидуальной настройки или ручной обработки.

  • Таблицы без первичных ключей. Для ProSync желательно иметь уникальные ключи для корректной работы.

Публичный релиз ProGate запланирован на осень этого года. В ближайших планах:

  • графический интерфейс, backend и API;

  • добавление новых источников и таргетов (MS SQL Server, MySQL, Shardman).

В итоге ProGate решит одну из важнейших задач бизнеса — проведет безопасную и быструю миграцию данных из Oracle Database в Postgres Pro. Решение позволяет избежать длительных простоев, минимизировать риски потери или повреждения данных и обеспечить плавный переход на новую платформу.

Подробнее о технической стороне решения мы напишем после публичного релиза. 

Комментарии (12)


  1. rdo
    08.08.2025 14:06

    Использовали для аналогичных задач Pentaho, он давал порядка 100 МБ/сек, работая чисто через jdbc


    1. kentastik
      08.08.2025 14:06

      Зачем вам эти автомобили, я пешком отлично бегаю :) Шутки, сорри.


  1. adrozhzhov
    08.08.2025 14:06

    Глупый вопрос. Оно же на спарках с солярисом и поверах с аиксом, как на платформах, с которых хотят уехать без промежуточного x86 оракла с Golden Gate, работает же (какртинка с Падме)?

    Рассмотрим типичную ситуацию: компания использует Oracle Database, в которой накоплены десятки терабайт данных. При попытке миграции на Postgres Pro возникают следующие

    Это чтобы сделать ситуации ещё более типичной


  1. Chumikov
    08.08.2025 14:06

    А когда релиз то? Это платные утилиты?


  1. Ranger21
    08.08.2025 14:06

    В последних синтетических тестах нам удалось достигнуть производительности в 200–500 МБ/секунду, или до 41 ТБ/сутки по маршруту Oracle Database → Postgres Pro. А для маршрута PostgreSQL → Postgres Pro примерно 1 ГБ/сек.

    Для рекламной статьи и если хотите привлечь специалистов надо другим хвастаться

    Выжимает ли ваше решение максимум из каналов связи и дисков? Если под капотом схд с определенными хр-ками и каналы, то вы физику не обманите


  1. gazkom
    08.08.2025 14:06

    Если у вас есть таблица CUSTOMERS в Oracle Database, которая содержит миллиарды записей, и ваша компания называется не China Telecom, вам надо бросить заниматься разработкой БД и найти себе другое применение.


    1. ExternalWayfarer
      08.08.2025 14:06

      А что вы предлагаете? Миллиард клиентов в Экселе хранить?


      1. censor2005
        08.08.2025 14:06

        Автор наверное имел ввиду, что единицы компаний в мире имеют миллиард клиентов


  1. sistor
    08.08.2025 14:06

    Нетрудно свести лошадь к воде. А вот когда вы научите не плавать на спине ... (с)

    Когда со скоростью 41Тб вы научитесь действительно переносить базу с Oracle на Postgres со всеми пакетами, функциями и т.д. вот это и будет та лошадь, плавающая на спине!...


  1. vtolstov
    08.08.2025 14:06

    Избитый вопрос видимо - опенсурс будет или только за деньги ?


  1. akhegay1
    08.08.2025 14:06

    А как работает синхронизация? Насколько знаю формат реду логов это закрытый формат, в собственности Как prosync читает логи?


  1. gsl23
    08.08.2025 14:06

    Извините, но за такой уровень - минусанул - низкий технический уровень материала.
    Где данные о железе, где хотя бы стравнение на нем с ora2pg, другими CDC ? Или это и есть ora2pg с вэбмородой ? .. ну ок , красивое )