Рассмотрим типичную ситуацию: компания использует 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. Решение позволяет избежать длительных простоев, минимизировать риски потери или повреждения данных и обеспечить плавный переход на новую платформу.

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

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


  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 возникают следующие

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