лого postgrespro лого postgrespro

Облегченная миграция с Oracle: как перейти на новую СУБД быстрее и проще

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

Выбор СУБД для миграции: почему Postgres Pro Enterprise, а не PostgreSQL?

Postgres Pro — российская СУБД, разработанная компанией Postgres Professional на основе открытой PostgreSQL. Она выпускается в редакциях Standard и Enterprise, а также сертифицированных ФСТЭК версиях. Флагманская версия системы, Postgres Pro Enterprise, включает больше 100 функциональных доработок, которые позволяют использовать ее в высоконагруженных системах для решения самых сложных промышленных задач. Система рассчитана на инсталляции до 150 ТБ и выше с одновременным подключением до 10 000+ пользователей. В отдельных тестах ее производительность кратно превышает показатели Open Source СУБД PostgreSQL. Благодаря таким характеристикам среди заказчиков Postgres Pro — РЖД, «Росатом», «Газпромнефть», Федеральная налоговая служба, Федеральное казначейство, МИД, Гознак, Росфинмониторинг, а также крупнейшие частные компании России из списка «РБК 500».

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

В чем сложность миграции с Oracle

Изменение кода приложений — самый сложный и трудоемкий этап в проектах по миграции с Oracle на Postgres Pro, особенно если бизнес-логика реализована на стороне баз данных в виде пакетов хранимых процедур на языке Oracle PL/SQL.

В первую очередь при переходе важно определить, какие возможности хранения и обработки данных, специфичные для Oracle, использует заказчик. Функциональность большинства из них, наверняка, можно будет воспроизвести за счет богатой экосистемы расширений Postgres Pro. В качестве примеров таких расширений можно привести PostGIS для работы с геоданными и orafce для работы с «оракловыми» типами данных. Стоит отметить, что расширение orafce реализует функциональность некоторых системных пакетов Oracle, что еще больше упрощает миграцию.

Но, к сожалению, расширения не решают всех проблем. Например, открытым остается вопрос, что делать с пакетами PL/SQL, функциональные аналоги которых отсутствуют в ванильной версии PostgreSQL. Непонятно также, как мигрировать код, использующий встроенные системные пакеты Oracle, которых нет в расширении orafce, и что делать c коллекциями PL/SQL и пр.

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

Функциональный аналог пакетов Oracle кардинальное упрощение миграции

В код Postgres Pro Enterprise постоянно вносятся изменения, чтобы упростить и ускорить миграцию на нее пользователей Oracle. Так, в Postgres Pro Enterprise версии 15 был впервые представлен функциональный аналог пакетов в стиле Oracle. Поддержка функциональности пакетов в PL/pgSQL включает в себя следующие возможности:

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

Технически поддержка пакетов со стороны Postgres Pro Enterprise представляет собой расширение синтаксиса языка PL/pgSQL (с небольшими дополнениями в ядре СУБД), благодаря которому реализуется функциональный аналог пакетов Oracle и вводится ряд дополнительных команд для работы с ними. Эта разработка Postgres Professional позволяет в несколько раз сократить затраты на переписывание кода приложений, максимально сохраняя имеющуюся бизнес-логику на уровне базы данных. Изменения на уровне приложения все равно потребуются, но дальнейшие улучшения функционального аналога пакетов сведут эти усилия к минимуму.

Поддержка встроенных системных пакетов Oracle: обеспечение работоспособности приложения после миграции

Использование в коде приложения системных PL/SQL-пакетов Oracle (например: UTL_SMTP, UTL_MAIL, DBMS_APPLICATION_INFO и т.д.), отсутствующих в PostgreSQL, приводит к гарантированной неработоспособности приложения после миграции. Популярное Open Source расширение orafce, используемое в сборках большинства российских вендоров, реализует только 7 пакетов Oracle. Всего же пакетов более 200. При этом не менее 20 из них использует практически каждый заказчик.

Команда Postgres Professional регулярно добавляет в Postgres Pro Enterprise компоненты, воспроизводящие поведение наиболее часто используемых встроенных системных пакетов Oracle, но которых нет в общедоступном расширении orafce. Например, в Postgres Pro Enterprise 15 был реализован пакет DBMS_APPLICATION_INFO. Также были добавлены системные представления V$SESSION и V$SESSION_LONGOPS, привычные для пользователей Oracle. А новую мажорную версию Postgres Pro Enterprise 16 пополнили пакеты UTL_SMTP, UTL_MAIL, UTL_HTTP и DBMS_LOB.

Все это позволяет при миграции не тратить время и ресурсы на создание необходимого функционала «с нуля», а воспользоваться готовыми системными пакетами из СУБД Postgres Pro, что здорово ускоряет проект. Это — уникальная возможность для российского рынка.

Утилита автоматической конвертации кода ora2pgpro

Но, конечно же, в мире Open Source есть готовые решения для миграции с Oracle. Например — ora2pg. Команда Postgres Professional стремится развивать их до полноценных программных решений. Поэтому на основе ora2pg была разработана собственная утилита ora2pqpro.

Ее используют для миграции исходного кода пакетов и автономных транзакций Oracle в пакеты и автономные транзакции Postgres Pro при переносе базы данных из Oracle в схему, совместимую с Postgres Pro. Утилита ora2pgpro извлекает объявления типов и переменных из тела пакета и спецификации, включая секцию инициализации. Кроме того, ora2pgpro экспортирует автономные транзакции напрямую, в отличие от приложения ora2pg, которое преобразовывает автономные транзакции в функции-обертки, используя расширения dblink или pg_background. Стоит отметить, что автономные транзакции в Oracle и Postgres Pro синтаксически сильно различаются, поэтому очень важно отслеживать корректность не только конвертации, но и извлекаемых данных.

В новой версии утилиты ora2pgpro 2.0 добавлен функционал автоматической конвертации PL/SQL-кода для работы с коллекциями в эквивалентный код для СУБД Postgres Pro. Это позволяет еще больше сократить объем работ по миграции кода из СУБД Oracle в Postgres Pro, поскольку ранее коллекции не поддерживались в PostgreSQL, что приводило к необходимости полностью переписывать соответствующую часть кода приложения.

Ко всему прочему, ora2pgpro гораздо лучше справляется с конвертацией в автоматическом режиме, чем Open Source утилита ora2pg. По расчетам Postgres Professional, ora2pgpro поможет заказчикам сэкономить до 50% времени и снизить затраты на миграцию с Oracle.

Передача параметров в скрипт в psql: привычные методы работы для DBA

Также для упрощения миграции была реализована передача позиционных и именованных параметров в скрипт в psql. Благодаря этому новшеству в Postgres Pro Enterprise можно создавать более гибкие и универсальные SQL-скрипты для работы с СУБД. Помимо явных преимуществ при проектировании новых решений, это упрощает адаптацию SQL-скриптов при миграции с Oracle, где подобная функциональность привычна пользователю.

Кроме передачи позиционных параметров в скрипт, также были поддержаны именованные параметры. Этой функциональности нет в утилите Oracle SQL*Plus, поэтому можно утверждать, что Postgres Pro предоставляет более развитые возможности разработки SQL-скриптов по сравнению с Oracle.

Ассоциативные массивы и хэш-коллекции (аналог таблиц PL/SQL в Oracle)

Кроме того, в последнем мажорном релизе Postgres Pro Enterprise 16 были поддержаны коллекции, а расширение pg_variables модифицировано для работы с глобальными переменными, имеющими тип коллекции. Помимо целочисленных коллекций, в которых индексом является целое число, также реализованы ассоциативные массивы (коллекции с текстовым ключом). В хранимых процедурах и функциях Postgres Pro, начиная с 15 версии, можно использовать такие же коллекции, как в Oracle. Так как изначально в языке программирования PL/pgSQL коллекции вообще не поддерживались, это создавало проблемы при миграции и функциональность приходилось реализовывать вручную.

Упрощение работы с большими объектами баз данных: технологии BFile и Superfile для хранения больших объектов

В Postgres Pro разработаны две технологии для работы с большими объектами (LOB).

Для нужд заказчиков в Postgres Pro Enterprise 16 были сняты ограничения на работу с большими объектами (Large Objects — LOB). Postgres Pro Superfile — это оптимизированная технология для хранения и обработки двоичных данных в СУБД Postgres Pro.

Postgres Pro Superfile позволяет масштабировать нагрузку при обработке большого объема данных в формате LOB, обеспечивая дополнительную гибкость в настройках, например, возможность хранить LOB-данные в отдельном табличном пространстве. Также поддерживаются временные большие объекты (Temporary LOB). Для доступа к большим объектам в Postgres Pro используется системный пакет DBMS_LOB. Состав функций и процедур пакета DBMS_LOB соответствует аналогичному пакету в СУБД Oracle, также упрощая процедуру миграции.

Отдельное внимание в Postgres Pro Enterprise уделено хранению больших объектов (LOB). В новом релизе СУБД Postgres Pro Enterprise 16 мы представили технологию BFile.

«Тяжелые» файлы (например, мультимедиа) всегда было удобнее хранить на уровне файловой системы ОС, оставляя в СУБД ссылку на путь к нужному каталогу и файлу. В терминологии Oracle это называется BFile. Эта технология может быть особенно интересна заказчикам, хранящим большие объемы копий документов, PDF-файлы или видео. Работа с данными такого типа обеспечивается через универсальный интерфейс доступа в виде пакета DBMS_LOB.

Postgres Pro BFile дает возможность провести практически бесшовную миграцию для заказчиков, использующих Oracle BFile.

Все экземпляры БД в одном окне: Postgres Pro Enterprise Manager (PPEM)

Компания Postgres Professional разработала собственное средство управления и мониторинга — Postgres Pro Enterprise Manager (PPEM). Это решение позволяет работать со всеми базами данных в единой консоли. Postgres Pro Enterprise Manager призван удовлетворить потребности пользователей Oracle в удобном графическом веб-интерфейсе. С помощью PPEM администратор баз данных может смотреть статистику БД, запускать, останавливать и перезапускать экземпляры баз данных, настраивать резервное копирование и выполнять множество прочих привычных всем DBA действий, но из единой консоли.

Пакеты в стиле Oracle 2.0: чего ждать в будущих релизах

Развитие функциональности пакетов будет представлено в релизе packages 2.0, в котором элементы пакета получат поддержку приватности. Как ранее отмечалось, также будет реализована поддержка функциональности коллекций.

Опытные специалисты Postgres Pro готовы помочь при миграции

Проекты по миграции значительно отличаются от других ИТ-проектов, привычных сотрудникам заказчиков. Помимо высоких требований к технической компетенции возникают сложности с выбором технологий миграции и адаптации кода приложений. Компания Postgres Pro помогает заказчикам переходить на СУБД Postgres Pro.

Для клиентов разрабатываются специализированные решения по обеспечению отказо- и катастрофоустойчивости, резервному копированию и восстановлению. Специалисты помогают клиентам переносить данные из других СУБД. Разрабатываются решения по минимизации времени простоя при переносе данных, а также при накате прикладных и системных обновлений. Команда Postgres Pro принимает участие в нагрузочных тестированиях при подготовке перехода на СУБД на основе PostgreSQL. Проводит аудиты настроек СУБД и операционных систем для достижения лучшей производительности и надежности функционирования.

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

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

erid:LjN8JxzDpРекламодатель: компания ООО «ППГ»ИНН/ОГРН: 7729445882/1157746074518Сайт: https://postgrespro.ru/ ПОЛУЧИТЬ КОНСУЛЬТАЦИЮ
Получить консультацию по Postgres Pro

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

СУБД для высоких нагрузок: почему крупнейшие компании страны выбирают Postgres Pro Enterprise

Postgres Pro — российская СУБД для enterprise-задач. Среди заказчиков системы — РЖД, «Росатом», «Газпромнефть», Федеральная налоговая служба, Федеральное казначейство, МИД, Гознак, Росфинмониторинг, а также крупнейшие частные компании России из списка «РБК 500».

Читать полностью

Отказоустойчивый кластер Postgres Pro «из коробки»: как работает BiHA

Высокая отказоустойчивость — базовое требование к СУБД в business-critical системах. Однако в экосистеме открытой СУБД PostgreSQL не существует стандартного, единственного рекомендованного решения для обеспечения отказоустойчивости. В ответ на запросы заказчиков команда Postgres Professional разработала собственную систему управления отказоустойчивым кластером Postgres Pro.

Читать полностью

Росагролизинг: как специалисты «Нетрики» провели миграцию аналитической системы компании с MS SQL Server на Postgres Pro

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

Читать полностью
Реклама

erid: LjN8JxzDp
Рекламодатель: ООО «ППГ»
ИНН/ОГРН: 7729445882/1227700166320
Сайт: https://teamstorm.io/