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