Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Сергей Климов ЗАО «Банковские информационные системы» («БИС») Разработка ABL приложений с использованием OpenEdge ORACLE DataServer
Программа Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Причины использования OpenEdge DataServer for ORACLE Обзор конфигураций OpenEdge DataServer for ORACLE Проблемы миграции и накладываемые ограничения Секреты и хитрости
Причины использования OpenEdge DataServer for ORACLE Разработка ABL приложений с использованием OpenEdge ORACLE DataServer ORACLE de facto стандарт промышленной СУБД ORACLE обладает большим потенциалом для масштабирования приложений: RAC, горизонтальное масштабирование и т.п.
Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Обзор конфигураций OpenEdge DataServer for ORACLE
PROGRESS Networking Разработка ABL приложений с использованием OpenEdge ORACLE DataServer PROGRESS Networking ORACLE DB OpenEdge DataServer Broker OpenEdge Client
Преимущества PROGRESS Networking Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Универсальность Простота настройки на некоторых платформах
ORACLE Networking Разработка ABL приложений с использованием OpenEdge ORACLE DataServer ORACLE DB PROGRESS Networking OpenEdge Client
Преимущества ORACLE Networking Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Производительность Проста администрирования
Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Проблемы миграции и накладываемые ограничения
Проблемы миграции. Данные Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Длина символьного поля в PROGRESS 32K в ORACLE 4K (varchar2) Потенциальный размер записи не может превышать 32К Отсутствие word-index Отсутствие массивов Имя поля в таблице ORACLE 30 байт, в PROGRESS 32 байта Начальные значения последовательностей положительные
Длина символьного поля в PROGRESS 32K в ORACLE 4K Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Заменять VARCHAR2 на LONG. Но может быть только один LONG в таблице! Миграция на CLOB Менять логику приложения, т.о. чтобы не создавать строки, превышающие 4K
Потенциальный размер записи не может превышать 32К Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Уменьшать SQL Width Замена varchar2 на LONG
Отсутствие word-index Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Замена CONTAINS на MATCHES. Падение производительности! Перенос поля с WI в отдельную OpenEdge таблицу Отказ от использования WI
Отсутствие массивов Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Может приводить к ограничению на размер записи или поля Может приводить к ограничению на имя поля в таблице ORACLE до 30 байт
Проблемы миграции. Данные Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Уменьшать наименования полей до 30 байт Сделать начальные значения последовательностей положительными
Проблемы миграции. Код Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Отсутствие SHARE-LOCK Видимость записи при CREATE Плавающий ROWID Работа с 2-мя БД: SETUSERID, USERID и т.п. Отсутствие оператора CURRENT-VALUE
Отсутствие SHARE-LOCK Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Переработать приложение без SHARE-LOCK Разработать механизм аналогичный SHARE-LOCK
Видимость записи при CREATE Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Добавление после CREATE – VALIDATE, RELEASE, ROWID или RECID DO TRANSACTION: CREATE Customer. Customer.Cust-id = FIND FIRST Customer WHERE Cust-Id = 10 NO-LOCK NO-ERROR. END. VALIDATE Customer.
Плавающий ROWID Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Перечитайте ROWID после изменения уникального ключа Перечитайте ROWID после отката удаления Замените ROWID на RECID
Проблемы миграции. Код Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Функции типа SETUSERID, USERID и CAN-DO должны всегда содержать ссылку на логическую БД Функция CURRENT-VALUE должна использоваться только после NEXT-VALUE Оператор CURRENT-VALUE не доступен Не доступны функции DBTASKID, COUNT-OF
Проблемы миграции. Производительность Разработка ABL приложений с использованием OpenEdge ORACLE DataServer
Проблемы миграции. Производительность Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Тюнинг клиентских параметров Тюнинг параметров запроса Использование «родного» SQL через SEND-SQL- STATEMENT Использование VIEW Использование хранимых процедур
Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Секреты и хитрости
Клиентские параметры Разработка ABL приложений с использованием OpenEdge ORACLE DataServer – Dsrv qt_cache_size Записей/ Сек
Параметры запроса Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Записей/ Сек
Использование возможностей ORACLE Разработка ABL приложений с использованием OpenEdge ORACLE DataServer FOR EACH acct WHERE acct.acct-cat = "b" AND CAN-DO("40*1", acct.acct) NO-LOCK, LAST acct-pos OF acct NO-LOCK
Использование возможностей ORACLE Разработка ABL приложений с использованием OpenEdge ORACLE DataServer
SEND-SQL-STATEMENT Разработка ABL приложений с использованием OpenEdge ORACLE DataServer RUN STORED-PROC send-sql-statement h1 = PROC-HANDLE NO-ERROR ("select... "). FOR EACH proc-text-buffer WHERE PROC-HANDLE = h1:... END. CLOSE STORED-PROC send-sql-statement WHERE PROC-HANDLE = h1. САМЫЙ БЫСТРЫЙ ВАРИАНТ
ORACLE VIEW Разработка ABL приложений с использованием OpenEdge ORACLE DataServer CREATE OR REPLACE VIEW last_acct_pos AS SELECT …. FOR EACH last_acct_pos: … END. Импорт VIEW в схема-холдер
Хранимые процедуры Разработка ABL приложений с использованием OpenEdge ORACLE DataServer RUN STORED-PROC newProcAcctPos LOAD-RESULT-INTO tt1 (INPUT "40", INPUT "1", OUTPUT ?). bh = tt1:DEFAULT-BUFFER-HANDLE. CREATE QUERY q. q:SET-BUFFERS (bh). q:QUERY-PREPARE("for each " + tt1:name). q:QUERY-OPEN.
СПАСИБО! МОСКОВСКИЙ ОФИС: +7 (495) СЕВЕРО-ЗАПАДНЫЙ ОФИС: +7 (812) ПЕНЗЕНСКИЙ ОФИС: +7 (841) Концепция построения ЦАБС QBIS ВОПРОСЫ?