Миграция с Oracle на PostgreSQL

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

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

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

В случае же, если Вы пользуетесь домашней разработкой, потребуется первичное мнение главы отдела разработки о возможности миграции на другую БД. Большинство современных приложений используют общепринятые интерфейсные драйверы для подключения к БД, такие как ODBC, JDBC, и т.д., что не вызывает значительных трудностей перехода приложения с одной БД на другую. Основным вопросом, на который Вам придется ответить при планировании миграции — это насколько значительная часть задач обработки бизнес логики возложена на базу данных, а не собственно на приложение? В случае, если БД используется преимущественно как хранилище данных с незначительной частью проверок и обработки поступающей информации осуществляемой на уровне БД, Вы можете рассчитывать на относительно простую и быструю миграцию без значительных правок в коде прикладной части. Если же большая часть бизнес логики возлагалось на уровень БД, то придется провести тщательный анализ существующих функций и оценить возможность переноса текущей логики на новую БД или же выноса ее на уровень приложения. В частности, речь идет о триггерах, процедурах и функциях, используемых в БД Oracle. Их код подлежит анализу и конвертации из языка PL/SQL в PL/pgSQL. Отдельного внимания потребуют также нестандартные пользовательские типы данных, и, особенно, географические типы данных. Если Вы применяли стандартные функции Oracle в коде своего приложения, в частности, если использовался функционал Oracle XML DB, то потребуется проанализировать возможности перехода на использование встроенных типов данных и функций для работы с XML в PostgreSQL.

Дальнейшим этапом после анализа и инвентаризации объектов в текущей базе данных является собственно миграция. Для автоматизации данного процесса существует целый набор как коммерческих, так и решений с открытым исходным кодом. В данной статье мы остановимся на свободно распространяемой утилите Ora2Pg (http://ora2pg.darold.net/), как полноценном решении, готовом к коммерческому использованию и хорошо себя зарекомендовавшему за последние годы. Данная утилита обладает широким спектром возможностей и позволяет сделать выгрузку объектов и данных из БД Oracle в дамп файл, готовый к импортированию в PostgreSQL. Утилита написана на языке Perl и имеет обширный функционал для полной или частичной миграции данных из БД Oracle с большим набором гибких настроек. Особенно стоит отметить возможность создания отдельного проекта для каждой отдельной миграции с выгрузкой данных пообъектно в индивидуальные файлы, что значительно упрощает и организует работу на первых этапах обкатки плана действий по миграции.

Собственно выгрузка данных из БД Oracle в дамп файл для импорта в PostgreSQL, а также импорт полученного файла в БД PostgreSQL — это довольно продолжительный процесс, но и здесь можно значительно сократить время простоя, если, например воспользоваться выгрузкой SQL кода для импорта данных не в стандартном виде INSERT последовательностей, а используя поддерживаемую PostgreSQL команду COPY, которая работает в разы быстрее. Утилита Ora2pg полностью поддерживает выгрузку дампа с использованием COPY команд — это задается одним значением в конфигурационном файле утилиты.

Подводя итоги ко всему вышесказанному, хотелось бы заметить, что в современных условиях IT руководителю приходится сталкиваться с большим количеством вызовов и ограничений на пути к поддержанию критически важной бизнес инфраструктуры на пике производительности и надежности и миграция на СУБД PostgreSQL — это один из путей достижения высоких результатов. Разумеется, такие трудозатратные и ответственные проекты по миграции стоит доверять лишь профессионалам в данной области, уже зарекомендовавшим себя на рынке IT услуг и компания DBI(www.dbi.ru) со всей возможной ответственностью и тщательностью поможет Вам с этим процессом!

А. Гадзиев

Руководитель отдела Oracle Fusion MiddleWare, DBI

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*