С Oracle на Postgres Pro: как «Айбим» провела миграцию АИС «Московской государственной экспертизы»
Решение о переходе на Postgres Pro компания приняла еще в 2021 году — обусловлено оно было даже не вопросом импортозамещения, еще не так остро стоящим на тот момент, а несопоставимо высокой стоимостью владения системой на платформе Oracle по сравнению с реализацией на СУБД Postgres Pro.
Заказчик
«Московская государственная экспертиза» — государственное автономное учреждение города Москвы. Является организацией субъекта Российской Федерации — города федерального значения Москвы, подведомственной Комитету города Москвы по ценовой политике в строительстве и государственной экспертизе проектов. Компания уполномочена проводить госэкспертизу проектной документации и результатов инженерных изысканий.
Технологический партнер
За техническую реализацию проекта миграции отвечала компания «Айбим» — разработчик программного обеспечения и поставщик информационных технологий для автоматизации процессов строительства. Компания оказывает профильные консалтинговые услуги в сфере строительства, что позволяет развивать глубокую экспертизу в сфере разработки собственных ИТ-решений, ориентированных на рынок девелопмента.
Задачи заказчика и история проекта
Задача одной из информационных систем «Московской государственной экспертизы» города Москвы (АИС «Норматив») — обеспечение всего строительного комплекса Москвы актуальной информацией о составе и стоимости строительно-монтажных работ. Информационная система является критической для всего градостроительного комплекса мегаполиса, так как на основе ее данных производится оценка всех строительных объектов и работ, финансируемых из бюджетных средств. Кроме того, АИС «Норматив» — это единый источник данных для всего коммерческого программного обеспечения, которое применяется для составления строительных смет.
Особенность АИС в том, что решение выполняет одновременно и транзакционные, и аналитические функции. В системе хранится историческая информация о ценах на ресурсы и строительные работы за многие годы, при этом в системе также проводится мониторинг текущих цен, их анализ, агрегация и расчет. Вся бизнес-логика и алгоритмы расчетов реализованы на стороне базы данных.
Решение о переводе системы с СУБД Oracle на СУБД Postgres Pro Standard было принято еще в 2021 году. Изначально к такому решению руководство организации пришло по причине несопоставимо высокой стоимости владения и реализации отказоустойчивой архитектуры на платформе Oracle по сравнению с СУБД Postgres Pro (на стадии планирования проекта стоимость отличалась примерно в 3 раза).
Позднее, после того как в российском законодательстве произошли изменения, в связи с которыми на эксплуатацию ПО иностранных разработчиков в госкомпаниях был наложен запрет, миграция на отечественную СУБД попала в разряд приоритетных задач.
Главной целью проекта было сохранение достоверности информации, которая переносится из старой базы данных в Postgres Pro. Важно было сохранить целостность данных, не допустить потерь в процессе миграции, полностью перенести бизнес-логику системы в неизменном виде и избежать простоя.
Выбор решения
Выбор СУБД на основе PostgreSQL был практически безальтернативным, а использование именно отечественной системы управления базами данных Postgres Pro Standard от российского разработчика СУБД Postgres Professional было обусловлено следующими факторами:
- наличие аналогов системных пакетов Oracle в Postgres Pro;
- доступность пакетов установки;
- наличие качественной технической документации на русском языке;
- возможность получения профессиональной технической поддержки от вендора в режиме 24/7;
- присутствие СУБД Postgres Pro Standard и ее сертифицированной ФСТЭК версии в реестре российского ПО.
Процесс миграции
Объем данных для миграции был относительно небольшим и составлял порядка 100 ГБ, но использование партиционирования, наличие более чем 150 функций и процедур и использование агрегационных и аналитических функций языка PL/SQL для реализации бизнес-логики потребовали особо внимательного подхода к планированию миграции системы.
Помимо этого, переход на СУБД Postgres затрудняло наличие большого количества бизнес-критичных и одновременно сложных отчетов, реализованных на платформе Oracle XML Publisher, источником данных для которых была СУБД Oracle.
Проект миграции был реализован по следующему сценарию:
- Миграция метаданных (определений таблиц, индексов, ограничений и т.д.) с помощью утилиты Ora2Pg с последующей корректировкой полученных скриптов.
- Миграция бизнес-логики с Oracle PL/SQL на PL/pgSQL c помощью Ora2Pg и дальнейшая ручная проверка и адаптация исходного кода.
- Миграция данных с помощью Ora2Pg (выполнялась в нерабочее время, что позволило избежать простоя).
- Незначительная доработка сервера приложений, которая обеспечила работу информационной системы одновременно с двумя базами данных Oracle и Postgres Pro.
- Опытная эксплуатация, которая включала в себя параллельную работу в двух системах, на Oracle и Postgres Pro, с перекрестной сверкой данных. Это позволило выявить оставшиеся ошибки миграции и внести корректировки в код, а также проверить корректность формирования отчетности.
- В рамках отдельного этапа выполнялись работы по оптимизации производительности, в частности, связанные с различиями работы двух СУБД с партиционированными таблицами.
- Заключительный этап: повторная миграция, включающая только данные, с последующим запуском в промышленную эксплуатацию.
Сроки осуществления миграции
Процесс миграции: 6 месяцев.
Опытная эксплуатация с участием пользователей системы: 2 месяца.
В середине 2023 года были успешно завершены работы по переводу информационной системы АИС «Норматив» на СУБД Postgres Pro Standard 15.
Результаты и ключевые цифры проекта
На текущий момент автоматизированная информационная система «Норматив» введена в промышленную эксплуатацию и полностью функционирует на СУБД Postgres Pro Standard 15 с реализацией бизнес-логики на языке PL/pgSQL.
Во внутреннем контуре системы работает несколько сотен сотрудников. При этом заказчик отметил увеличение скорости работы некоторых функций, реализованных в Postgres Pro Standard, по сравнению со старой СУБД.
СУБД Postgres Pro является источником данных для системы формирования отчетности на платформе Oracle XML Publisher, для замены которой также уже найден отечественный аналог, и перспектива следующего проекта миграции — лишь вопрос времени.
Гибкая расширяемость СУБД Postgres Pro Standard, благодаря наличию различных пакетов, библиотек и инструментов разработки, позволила уменьшить количество переписанного кода на стороне бизнес-логики.
Всего в рамках проекта было перенесено около 100 ГБ данных.
Объем кода составил 11 пакетов, 152 функции и процедуры, около 100 таблиц, порядка 20 тысяч строк и 20 представлений.
■ erid:LjN8JxzDpРекламодатель: компания ООО «ППГ»ИНН/ОГРН: 7729445882/1157746074518Сайт: https://postgrespro.ru/