13
ПОРТИРОВАНИЕ ОБЛАЧНОГО РЕШЕНИЯ С ORACLE НА POSTGRESQL

Портирование МИС на PostgreSQL

Embed Size (px)

Citation preview

Page 1: Портирование МИС на PostgreSQL

ПОРТИРОВАНИЕ ОБЛАЧНОГО РЕШЕНИЯ С ORACLE НА POSTGRESQL

Page 2: Портирование МИС на PostgreSQL

СПРАВКА О КОМПАНИИ

СОТРУДНИКОВ1000

ПРОГРАММНЫХ ПРОДУКТОВ

80

КРУПНЕЙШИЕ ЗАКАЗЧИКИОФИСЫ «БАРС ГРУП»

Казань

Москва

Санкт-Петербург

Новосибирск

Набережные Челны

Ростов-на-Дону

Севастополь

Краснодар

БОЛЕЕ

БОЛЕЕ

Page 3: Портирование МИС на PostgreSQL

ИСПОЛЬЗУЕМЫЕ ТЕХНОЛОГИИ

БЭКЕНД-ТЕХНОЛОГИИ СУБД

PostgreSQL Оracle Fire bird Informix Прочее 0

1

2

3

4

5

6

7

8

php

.net

python

java

Page 4: Портирование МИС на PostgreSQL

ПОРТИРОВАНИЕ МИС. ПОСТАНОВКА ЗАДАЧИ.

МЕДИЦИНСКАЯ ИС«БАРС.Здравоохранение-МИС» - решение для автоматизации деятельности стационаров и поликлиник, включая обмен данными между ЛПУ и централизованный сбор показателей со всей сети медучреждений.

ЦЕЛИ ЭКСПЕРИМЕНТА

Унификация

Снижение стоимости внедрения и поддержки

Переход к свободному ПО

Трехзвенная архитектура; Тонкий веб-клиент; Тонкий веб-сервер; Толстый сервер БД;

ТЕХНОЛОГИЧЕСКИЕ ВВОДНЫЕ:

Page 5: Портирование МИС на PostgreSQL

ОЦЕНКА

Таблиц 1837Представлений 1809Триггеры 1254Пакетов 1231Функций 22Процедуры 193

3380 SQL запросов4750 PL/SQL неименованных

блоков

СТАТИСТИКА ПО ОБЪЕКТАМ: ВЕБ ИНТЕРФЕЙС:

Page 6: Портирование МИС на PostgreSQL

ЭКСПЕРИМЕНТ С ORA2PG

ПЕРЕНОС СТРУКТУРЫ БД И ДАННЫХ• прошел с минимальными проблемами

● Системные обьекты Oracle● Переменные пакетов

ПЕРЕНОС ПАКЕТОВ И ПРОЦЕДУР• Пакты разбиваются на схемы, что

нас не устраивает• Вызов функций без использования

результата не дополняется «perform»

• конструкция begin select into exception end не дополняется ключевым словом strict

ПРОЧИЕ ПРОБЛЕМЫ• Вложенные функции

Page 7: Портирование МИС на PostgreSQL

КОНВЕРТАЦИЯ ПАКЕТОВ И ПРОЦЕДУР

РАЗРАБОТКА СОБСТВЕННОГО КОНВЕРТЕРА:

Разбор исходного

кода ( ANTLR3 )

Преобразования Выдача результата

Page 8: Портирование МИС на PostgreSQL

ПРЕОБРАЗОВАНИЯ. ОСНОВНЫЕ МОМЕНТЫ.

В sql-запросах (+) заменяется на outer join

Сохранение комментариев

Вложенные функции и процедуры

Процедуры заменяются на функции с такой же сигнатурой

OUT-параметры. Преобразование передачи параметров по ссылке на возвращаемые композитные объекты с полями.Пакеты разбиваются на составляющие их процедуры и функции со сквозным именованием.

(но, возможно, с возвращаемыми значениями, если были OUT-параметры)

Page 9: Портирование МИС на PostgreSQL

ПРЕОБРАЗОВАНИЯ. ПРОЧИЕ МОМЕНТЫ.

Добавляется perform перед вызовом функциями, если не используется возвращаемое значение

Добавляется strict к returning into

Убирается from dual

Добавляются декларации для переменной цикла

У for reverse меняются местами индексы

Некоторые oracle-функции заменяются на их аналоги (nvl, sysdate, dbms_output, raise_application_error)

Заменяются типы данных

Page 10: Портирование МИС на PostgreSQL

НЕИМЕНОВАННЫЕ БЛОКИ

ПРОБЛЕМЫ:Невозможно передать параметры внутрь блока

Невозможно получить результат выполнения

4750 - PL/SQL неименованных блоков

РЕШЕНИЯ: Временные функции.

Переписать все блоки на постоянные функции.

Научиться передавать параметры и возвращать данные

Нами подготовлен концепт патча, который реализует искомую функциональность.

Page 11: Портирование МИС на PostgreSQL

РЕЗУЛЬТАТЫ ЭКСПЕРИМЕНТА

Мигрировали структуру БД, данные с использованием ora2pg

На базе Antlr3 + грамматики + преобразование смогли мигрировать более 90% кода

Оставшиеся 10% переносятся, адаптируются вручную, учитывая специфику СУБД

Page 12: Портирование МИС на PostgreSQL

ЧТО ДАЛЬШЕ?

Доработка конвертера

АДАПТАЦИЯ патча к PG в части неименованных блоков с параметрами

Доведение до Готовности к промышленной эксплуатации

РОСТ КОМПЕТЕНЦИИ в части больших высоконагруженных систем

Page 13: Портирование МИС на PostgreSQL

СПАСИБО ЗА ВНИМАНИЕ