Импортозамещение СУБД

Заказчик:
АО «Росагролизинг»
Руководитель проекта со стороны заказчика
Поставщик
ООО «Нетрика»
Год завершения проекта
2022
Сроки выполнения проекта
Август, 2022 - Декабрь, 2022
Масштаб проекта
3488 человеко-часов
Цели

С августа до конца 2022 года выполнить импортозамещение СУБД Microsoft SQL Server и Microsoft SSIS на российскую Postgres Pro и Apache Airflow для аналитической системы предприятия АО «Росагролизинг».

Результаты

В ходе выполнения работ команда специалистов компании «Нетрика» реализовала все этапы миграции:

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

Уникальность проекта

Система заказчика решает следующие бизнес-задачи:

1. Агрегация атомарных аналитических данных из других систем АО «Росагролизинг».
2. Проведение вычислений на агрегированных данных для подготовки чистых аналитических данных о результатах деятельности АО «Росагролизинг».
3. Передача чистых аналитических данных в BI систему.

Все эти задачи решаются в СУБД в 15 ETL пакетах, которые содержат 131 процедуру размером от 500 до 12 000 строк кода каждая. Было необходимо полностью сохранить функциональность СУБД без последствий для работы и процессов предприятия.

Хранилище в этой СУБД содержит более 6 Тб данных, сгруппированных в 341 таблице, в каждой от 20 до 450 колонок, от 20 тысяч до 4 миллиардов строк.

Параллельно с импортозамещением обнаруживались и решались проблемы в коде исходной СУБД. Например:

1. Изменения в работе исходного кода, связанные с легаси функционалом системы.
2. Отсутствие явного указания критерия сортировки при выборке из базы данных. Так как выборка по умолчанию по разному работает в MS SQL и PostgreSQL, приходилось для каждого запроса вносить уточнение.
3. PostgreSQL не поддерживает названия имен объектов СУБД на русском языке. А также максимальная допустимая длина названия объекта в PostgreSQL меньше, чем в MS SQL.

Основой решения проблем стало обсуждение с заказчиком каждого случая для подбора правильного решения с точки зрения бизнес-задач.

Проект решает задачи импортозамещения
Да
Использованное ПО

Не потребовалось.

Сложность реализации

В процессе выполнения работ фактически параллельно разрабатывалась новая версия системы на Postgres Pro и дорабатывалась старая версия на MS SQL Server. Происходило это из-за того, что в работе старой системы выявлялись особенности работы легаси функционала, и она использовалась как эталон для проверки правильности результатов, выдаваемых новой системой. Всё это ощутимо сказывалось на сроках, которые были фиксированные.

Поэтому значительная часть успеха проекта лежит в слаженной двусторонней работе специалистов исполнителя, которые разрабатывали Postgres версию, и заказчика, которые дорабатывали Microsoft версию.

Также благодаря разработке утилит для автоматизации миграции фактически весь код был переведен на Postgres за 2 месяца. Оставшиеся три месяца заняла отладка этого кода. Без автоматизации выполнить проект в такой срок было бы невозможно.

Описание проекта

АО «Росагролизинг» – государственная лизинговая компания, деятельность которой направлена на техническую и технологическую модернизацию отечественного АПК посредством передачи в лизинг средств производства организациям АПК страны. Для повышения устойчивости аналитической системы предприятия было принято решение о переносе СУБД в российскую Postgres Pro и импортозамещении службы интеграции MS SSIS.

Технологическим партнером проекта стала петербургская ИТ-компания «Нетрика».

Для выполнения работ в срок командой миграции были разработаны скрипты автоматизации всей рутинной работы:

1. Скрипт переписи SQL кода процедур и базы данных с сохранением исходного форматирования кода и комментариев в нем.
2. Скрипт переноса данных из одной СУБД в другую с такой же структурой.
3. Скрипт сверки 100% соответствия данных в старой и новой версиях БД, в том числе после выполнения процедур.
4. Скрипт пошагового воссоздания SSIS пакетов путем генерации DAG файла с тем же набором step’ов и task’ов.
5. Скрипт проверки правильной работы процедур путем сравнения результатов выполнения одинаковых запросов в старой и новой версиях СУБД.

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

1. Разная логика работы одинаковых функций в PostgreSQL и MS SQL. Например, функция приведения типов данных (float -> decimal) и в операции округления. Приходилось в PostgreSQL разрабатывать функции, которые работали аналогично таким же функциям в MS SQL, чтобы не трогать бизнес-логику кода в целом.
2. Выявлялись скрытые зависимости с вызовом процедур из внешних систем. Для их корректной работы приходилось либо менять взаимодействие с этими процедурами, либо также переводить эти процедуры на PostgreSQL.
3. Итерационное выявление мест в коде, которые приводили к неверным результатам работы процедуры в целом. Диагностика этих ошибок с последующим их исправлением.

Вычислительные мощности для Postgres версии СУБД были выделены аналогичные мощностям исходной версии. Скорость выполнения всех процедур после оптимизации уступала скорости в исходной СУБД на 20-30%. Но это были допустимые показатели, поэтому было решено остановить оптимизацию на них.

Отладка производительности в Postgres версии СУБД происходила следующими способами:

1. Изучение планов выполнения по шагам и выявление деградаций.
2. Замена непроизводительных запросов. Например, замена Outer apply на оконную функцию.
3. Удаление лишних индексов, добавление нужных.
4. Ввод дополнительной статистики для планировщика запросов.
5. Тюнинг серверов Linux и Postgres. Например, параметр read-ahead-kb значительно увеличивает производительность последовательного чтения.

С января по апрель 2023 года старая и новая версии СУБД находились в параллельной эксплуатации для контроля корректной работы и производительности в Postgres версии СУБД. В мае 2023 года версия на MS SQL Server была выведена из эксплуатации, и с тех пор данная система АО «Росагролизинг» работает на российских технологиях.

География проекта
АО «Росагролизинг» осуществляет деятельность на территории всей Российской Федерации.
Дополнительные презентации:
Нетрика - Миграция баз данных.pdf
Коментарии: 3

Комментировать могут только авторизованные пользователи.
Предлагаем Вам в систему или зарегистрироваться.

  • Вячеслав Чупраков
    Рейтинг: 1279
    Прагматика Эксперт
    Заместитель ИТ директора по инфраструктуре и сервисам
    05.01.2024 01:13

    Добрый день, повлиял ли перенос БД на отчетность в холдинге и работу BI системы?

  • Максим Часовиков
    Рейтинг: 4767
    РАНХиГС
    Директор Проектов проектного офиса ректора
    05.01.2024 11:23

    Добрый день, в рамках реализации этого проекта что было наиболее сложным и оценивалась ли удовлетворенность основных заинтересованных сторон после реализации проекта? На сколько она увеличилась, если такая оценка производилась?

  • Дмитрий Турчановский
    Рейтинг: 2577
    Зарубежнефть
    Заместитель начальника Управления информационных технологий
    08.01.2024 23:45

    Кроме затрат на проект и по описанию снижения показателей эффективности работы БД зафиксированы ли хоть какие-то эффекты от проекта? Какие изначально Кпэ проекта формулировались и были ли они достигнуты?

Год
Предметная область
Отрасль
Управление
Мы используем файлы cookie в аналитических целях и для того, чтобы обеспечить вам наилучшие впечатления от работы с нашим сайтом. Заходя на сайт, вы соглашаетесь с Политикой использования файлов cookie.