30 июня 2023

Миграция баз данных: как за 4 месяца переехать с Oracle на PostgreSQL

Миграция с одного программного обеспечения на другое всегда вызывает множество вопросов. Подойдет ли оно по функциональности? Сколько времени займет переезд? Какие будут издержки?

В условиях санкций многие компании ищут альтернативы иностранному ПО, чьи вендоры ушли с российского рынка. К таким аналогам относится PostgreSQL. По данным аналитиков TAdviser, госкомпании стали закупать отечественные СУБД в три раза чаще: если в 2021 году на российские решения приходилось порядка 60 контрактов, в 2022 году их было уже больше 200.

Frame 12780.png

В этой статье мы рассмотрим пример миграции с СУБД Oracle на PostgreSQL на примере компании из государственного сектора. Расскажем, какие сложности возникли при подготовке переноса данных в новое ПО и как мы с ними справились, а также определим, подойдут ли решения на основе PostgreSQL для импортозамещения. Статья будет полезна владельцам бизнеса, техническим директорам и руководителям, которые отвечают за импортозамещение ПО, а также всем, кто находится в поиске альтернативы Oracle.

Ищем аналог Oracle

В SimbirSoft обратилась госкомпания, которая использовала Oracle. Но в марте 2022 года вендор покинул российский рынок, и с тех пор пользователи СУБД столкнулись с рядом рисков:

  • сохранения безопасности данных;
  • отсутствия обновлений и техподдержки от вендора.

Именно это подтолкнуло клиента искать аналог, который заменит продукт по функциональности.

Перед компанией встал вопрос переноса работы сервиса на новое ПО в короткие сроки. Сам переезд осуществляла команда клиента. Со стороны заказчика была подготовлена небольшая часть переноса бизнес-логики из Oracle в PostgreSQL. Наша задача — подготовка миграции большей части логики БД со всеми данными, адаптация кода приложения и реализация возможности тестировать результат переноса.

Мы также учитывали, что в базе данных заказчика, состоящей из нескольких сотен гигабайт, была небольшая доля логики бизнес-процессов, основанных на специфических возможностях Oracle. Это облегчило задачу и сократило сроки работы.

Почему PostgreSQL — оптимальная альтернатива

Проанализировав ситуацию, клиент решил использовать PostgreSQL в качестве альтернативной СУБД. У системы есть ряд неоспоримых преимуществ:

  • 1. Открытый исходный код. Большое комьюнити разработчиков выступает в качестве вендора и поддерживает ПО в актуальном состоянии. Это делает решения на его основе достойным вариантом для импортозамещения.
  • 2. Общие расходы, как правило, меньше, чем на Oracle (но зависят от кейса).
  • 3. Достаточная функциональность, гибкость, масштабируемость.

Именно эти плюсы привлекли внимание клиента к системе. Для заказчика PostgreSQL стала достойной заменой импортному ПО. Нельзя сказать, что процесс переноса оказался простым: мы столкнулись с разными сложностями при подготовке переноса и проверке целостности данных.

Особенности миграции

Мы разделили процесс на несколько этапов, а сама реализация заняла 4 месяца:

  • 1. Подготовили миграцию схемы БД.
  • 2. Реализовали скрипт переноса данных.
  • 3. Внесли правки в код приложения: адаптировали SQL-запросы, изменили настройки подключения к БД.
  • 4. Проверили, что новая БД соответствует старой (схема, данные, производительность).
  • 5. Запустили систему после небольшого запланированного простоя с новой БД.

Задача проекта — быстро и качественно осуществить перенос данных в новую систему. Огромным плюсом было то, что клиент мог периодически останавливать работу системы в продакшне для переезда БД. Это помогло сократить действия при подготовке и непосредственной миграции данных и тем самым уменьшить риск ошибок в процессе. Мы выполнили задачу значительно быстрее установленных сроков.

«Если переезд должен осуществиться без перерыва в работе системы, это необходимо предусмотреть заранее. Например, осуществлять миграцию с использованием промежуточного инстанса БД, при этом во время перехода отправлять обновления данных в обе БД: выполнить накопившиеся транзакции в PostgreSQL сразу после основного этапа миграции». 

Мария, PHP-разработчик SimbirSoft.

Упрощаем процесс

Однако на процесс подготовки также влияют и другие факторы. Например, различия типов данных и то, как с ними работают СУБД. Типы данных и поведение СУБД при работе с ними различаются. Это, в свою очередь, влияет на время подготовки миграции.

Обычно в таких случаях есть несколько вариантов действий:

  • 1. Написать скрипты по миграции самостоятельно, так как переносить большой объем таблиц и данных вручную — нерационально. Это подходит только для небольших частей.
  • 2. Использовать готовые инструменты: утилиты, программы.

Мы решили совместить оба варианта: использовали утилиту Ora2Pg, где это было возможно, а часть переноса автоматизировали с помощью самописных скриптов, так как функциональности утилиты не хватало.

Ora2Pg — это инструмент для миграции данных, который автоматизирует создание схемы БД, аналогичной имеющейся на Oracle, и переносит ее на PostgreSQL. Утилита автоматизирует рутинную работу, но не делает 100% необходимых задач по переезду. Однако нам удалось автоматизировать часть процесса, не покрытого функциональностью Ora2Pg, и существенно сэкономить время на проекте.

Сложности с кодом

Несоответствие поведения типов данных — не единственная проблема, с которой мы столкнулись на проекте. Были сложности с качеством изначального кода — пришлось много править и адаптировать под PostgreSQL. Здесь важен опыт разработчиков на проекте: специалисты должны глубоко разбираться в обеих системах и подбирать подход с необходимыми инструментами для успешной миграции СУБД.

«Важная составляющая перехода с одной СУБД на другую — правка всех SQL-запросов в коде приложения. Тут все зависит от качества кода проекта. В нашем случае было довольно много мест, где в коде могли формироваться SQL-запросы, поэтому пришлось вносить много мелких правок».

Мария, PHP-разработчик SimbirSoft.

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

Проверяем систему и целостность данных

Завершающий этап — финальное тестирование результата переноса в новую СУБД. Утилиты, которую мы использовали для подготовки типов данных, не хватило для полной автоматизации процесса. Поэтому нам пришлось написать свою проверку корректности миграции БД. Она помогла сравнить схему и данные в базах: соответствие типов полей и количество записей в таблицах, индексы, сиквенсы и другое. К скрипту проверки предъявлялись следующие требования:

  • скорость;
  • достоверность;
  • гибкость настройки.

Так как база имела большой объем данных и их полная проверка могла бы занять значительное время, то проверять в продакшене решили только некоторый процент каждой таблицы. Данные в таблицах преобразовывались в более короткие значения (хешировались) и сравнивались между собой.

«При реализации проверки нам также пришлось учитывать различия типов данных и сортировки. Например, тип GUID в Oracle сортируется как строка, а аналогичный в PostgreSQL uuid — как шестнадцатеричное число». 

Мария, PHP-разработчик SimbirSoft.

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

Поведем итог: заменит ли PostgreSQL Oracle?

Кейс показал, что во многих случаях PostgreSQL — подходящая альтернатива Oracle. У системы есть как свои особенности, так и важные преимущества — большое комьюнити разработчиков, надежность и уверенность в поддержке ПО — как раз то, из-за чего наш заказчик решил переехать с Oracle. Продукты на основе PostgreSQL (Postgres Pro, Tantor) используют в том числе для импортозамещения в госсекторе в качестве отечественного ПО. Схема и подходы аналогичны тому, что описано в кейсе.

Однако важно помнить, что на процесс миграции влияет сложность БД и степень использования специфических возможностей Oracle. Объем потраченных на переезд ресурсов зависит от многих факторов: объема и качества кода проекта, размера БД, необходимости оптимизации и других моментов. Опытный подрядчик поможет оценить все условия и подобрать подходящие инструменты и верный подход для уменьшения трудностей при переезде.

Все материалы о нашей практике разработки — здесь. Больше кейсов импортозамещения ПО — в нашем портфолио.


Понравилась статья?
Подпишитесь на рассылку SimbirSoft! Пришлём письма о лайфхаках в разработке, поделимся опытом управления командами и компанией, а также расскажем о новых ивентах SimbirSoft.

Другие статьи

SimbirSoft — участник рейтинга «Лидеры информационных технологий для промышленности — 2024»
02 мая 2024
Вебинар “Анализировать нельзя разрабатывать. Лекарство от хаоса в разработке”
05 апреля 2024
SimbirSoft и Синара Лаб – партнеры по внедрению коробочного решения «Цифровой рубль»
04 апреля 2024
Написать нам
Оставьте контакты, чтобы обсудить проект и условия
сотрудничества, или позвоните: 8 800 200-99-24
Прикрепить файл до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Оставьте свои контакты
SimbirSoft регулярно расширяет штат сотрудников.
Отправьте контакты, чтобы обсудить условия сотрудничества.
Прикрепить резюме, до 10 Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Написать нам
Расскажите, какие задачи сейчас на вашем проекте.
Проконсультируем и предложим подходящих специалистов, а также сориентируем по ставкам на аутстаф.
Направление
Количество специалистов
Middle
TeamLead
Senior
TechLead
Прикрепить файл до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Экспресс-консультация
Заполните все поля формы.
Эксперт свяжется с вами в течение рабочего дня.
Тематика
Прикрепить файл до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Порекомендуйте друга — получите вознаграждение!
  • Middle Fullstack QA Engineer (Mobile)
  • Python-paзработчик
  • Java-разработчик
  • Angular-разработчик
  • PHP-разработчик
  • Системный аналитик
  • C#-разработчик
  • Android-разработчик
  • Инженер по нагрузочному тестированию
  • Golang-разработчик
  • DevOps-инженер
  • 1С-аналитик
  • 1C QA Engineer
  • Юрист
  • Разработчик на C++
  • 1С-разработчик
  • DWH-разработчик
  • Data Scientist
  • SDET (Python)
  • Архитектор C#
  • Менеджер по продажам IT SaaS
  • QA Engineer Fullstack (Java/Kotlin)
  • IT-рекрутер
  • SMM-менеджер
  • Бизнес-аналитик
  • Аналитик DWH
  • Team Lead Java
  • Менеджер проектов 1С
  • Руководитель отдела Backend
  • Руководитель отдела Frontend
  • SDET (Java)
  • Менеджер по продажам IT продуктов
  • SAP-аналитик
  • SDET (JavaScript)
  • SDET Python (мобильные приложения)
  • Руководитель отдела Frontend
Прикрепить резюме, до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.