Использование Edition Based Redefinition для обновления...

27
Использование Edition Based Redefinition для обновления приложений, доступных 24/7 Петр Марголис Архитектор Oracle Database Forum, Москва 19 февраля 2014

description

Выступление Петра Марголиса, нашего архитектора, на Oracle Database Forum (19 февраля 2014, Москва).

Transcript of Использование Edition Based Redefinition для обновления...

Page 1: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Использование

Edition Based Redefinition

для обновления приложений,

доступных 24/7

Петр Марголис

Архитектор

Oracle Database Forum, Москва

19 февраля 2014

Page 2: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

План

О компании CUSTIS

Приложение

Цели и требования

Варианты архитектуры решения

Основные принципы Oracle EBR

Перевод приложения на EBR

Результат

2/27

Page 3: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

О компании CUSTIS

Специализация – заказная разработка,

бережное внедрение и сопровождение

на полном жизненном цикле масштабных

учетно-аналитических систем

Год основания – 1996

Количество сотрудников > 200

Ключевые клиенты: Банк России,

Газпромбанк, ГК «Спортмастер»,

ЕИРКЦ г. Астрахани, ЕРКЦ г. Саратова

3/27

Page 4: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Приложение

Банковская учетная система

Двухзвенная архитектура

Сервер – Oracle DB 11gR2, бизнес-логика на PL/SQL

«Тонкий клиент» – отображение и ввод данных

Интеграция с другими системами

4/27

Page 5: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Цели и задачи

Централизация учета в многофилиальном

банке

Филиалы располагаются в различных часовых

поясах, поэтому приложение используется

в режиме 24/7

Снижение операционных рисков

при обновлении системы во время

эксплуатации

Поэтапное внедрение изменений в различных

филиалах с возможностью их отмены

5/27

Page 6: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Технические требования

Возможность установки обновлений ПО

без остановки работы системы

Параллельная эксплуатация нескольких

версий ПО, работающих с одними данными

Возможность перевода пользователей

на новую версию ПО или «отката»

к предыдущей версии

6/27

Page 7: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Варианты архитектуры решения

Распределенная

Централизованная

7/27

Page 8: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Распределенная архитектура

Повышение надежности: отказ

одного узла не приводит

к остановке системы

В каждой временной зоне есть

возможность выделить

технологическое окно

для установки обновлений

Необходимость

администрировать множество

экземпляров ПО

Необходимость синхронизации

изменений и разрешения

конфликтов

Нет механизма «отката»

обновлений

8/27

Page 9: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Централизованная архитектура

Уменьшение количества

экземпляров системы,

которые необходимо

администрировать

Гарантированная

согласованность данных

Отсутствие технологических

окон для установки

обновлений

Нет механизма поэтапного

обновления ПО и «отката»

обновлений

9/27

Page 10: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Edition-based redefinition (EBR)

Входит в Enterprise Edition, начиная с 11gR2

Позволяет выполнять изменения

(redefinition) объектов, не затрагивая

существующие версии (editions) объектов

Позволяет управляемо переключать

пользователей на различные версии ПО

10/27

Page 11: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Версионируемость объектов

Версионируемые

Function

Procedure

Package

(спецификация и тело)

Type (спецификация

и тело)

Trigger

Non-public synonym

View

Editioning Views

Cross-edition triggers

Неверсионируемые

Tables

Constraints

Indexes

Database links

Materialized views

Sequences

Public synonyms

(версионируемые в 12с)

….

11/27

Page 12: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Перевод приложения на EBR

Подготовительные шаги

Инструментарий администратора

Доработка приложения

Обновление неверсионных объектов

Обеспечение совместимости версий

Изменения в модели безопасности

Влияние на разработку и эксплуатацию

12/27

Page 13: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Подготовительные шаги

1. Включение версионирования

для набора схем

13/27

Page 14: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Подготовительные шаги

1. Включение версионирования

для набора схем

2. Создание версионирующих

представлений для всех таблиц

14/27

Page 15: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Подготовительные шаги

1. Включение версионирования

для набора схем

2. Создание версионирующих

представлений для всех таблиц

3. Перевод кода PL/SQL

и клиентских приложений

на использование

версионирующих представлений

15/27

Page 16: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Подготовительные шаги

1. Включение версионирования

для набора схем

2. Создание версионирующих

представлений для всех таблиц

3. Перевод кода PL/SQL

и клиентских приложений

на использование

версионирующих представлений

4. «Перевешивание» триггеров

на версионирующие представления

5. Выдача прав другим схемам

на версионирующие представления

16/27

Page 17: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Инструментарий администратора

Доработка инструментария

установки обновлений

Создание нового edition перед

изменением объектов

17/27

Page 18: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Инструментарий администратора

Доработка инструментария

установки обновлений

Создание нового edition перед

изменением объектов

18/27

Page 19: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Инструментарий администратора

Доработка инструментария

установки обновлений

Создание нового edition перед

изменением объектов

19/27

Page 20: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Инструментарий администратора

Доработка инструментария

установки обновлений

Создание нового edition перед

изменением объектов

Разработка инструментария

управления версиями

Задание версии по умолчанию

ALTER DATABASE DEFAULT EDITION = edition_name;

Переключение пользователей между

версиями

CREATE OR REPLACE TRIGGER tr_set_edition

AFTER LOGON ON DATABASE

ALTER SESSION SET EDITION = edition_name;

20/27

Page 21: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Доработка приложения

Неверсионные объекты

не могут ссылаться

на версионные

Появляются новые типы

объектов

и изменяются структуры

Расширяется набор

атрибутов, задающих

уникальность объектов

(owner, object_name,

edition_name)

Отказ

от использования

публичных

синонимов

Изменение работы

со словарем данных

Oracle

21/27

Page 22: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Обновление неверсионируемых

объектов

Блокировка

неверсионируемых объектов

(таблиц, индексов)

при выполнении DDL операций

Использование EBR совместно

с Online Redefinition

(DBMS_REDEFINITION)

Изменение индексов

(создание, удаление)

затрагивает все editions

Workaround при помощи

invisible индексов

22/27

Page 23: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Обеспечение совместимости версий

Внесение изменений в структуру

или логику использования данных может

нарушить работу предыдущей версии

Дублирование данных и их синхронизация

при помощи кросс-версионных триггеров

(Cross-edition triggers)

Пример 1

Разделение одной таблицы на «мастер»

и «деталь» (связь один ко многим):

Существующие столбцы таблицы не удаляются

Когда «старая» версия изменяет данные

в основной таблице, то Forward-триггер

заполняет новую таблицу

Когда «новая» версия меняет данные

в подчиненной таблице, то Reverse-триггер

заполняет «старые» столбцы основной

таблицы

23/27

Page 24: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Обеспечение совместимости версий

Внесение изменений в структуру или

логику использования данных может

нарушить работу предыдущей версии

Дублирование данных и их синхронизация

при помощи кросс-версионных триггеров

(Cross-edition triggers)

Пример 2

Изменение набора значений атрибута,

с которым связана логика приложения:

Создается новый столбец, дублирующий

существующий

Каждая версия «видит» свой экземпляр

столбца

Логика преобразования значений атрибута

реализуется в кросс-версионных триггерах

24/27

Page 25: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Влияние на разработку и эксплуатацию

Необходимо обеспечивать совместимость нескольких

версий при разработке и тестировании

Если есть изменения в модели данных, несовместимые

с текущей версией

Если есть изменения в логике использования атрибутов

и структур данных

Наличие кросс-версионных триггеров может

замедлять операции изменения данных, в том числе

в уже эксплуатируемой версии

В примере 1 при разделении основной таблицы на две –

вставка в подчиненную таблицу замедляется в два раза

Одновременная эксплуатация нескольких версий

может усложнить процедуры разбора и разрешения

инцидентов25/27

Page 26: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Преимущества решения с EBR

Установка обновлений ПО без остановки

системы

за счет создания нового edition для обновления

Одновременная работа пользователей

с разными версиями ПО в рамках одного

экземпляра БД и с одним набором

данных

за счет использования разных editions

и cross-edition triggers

Контролируемое переключение

пользователей между версиями,

в том числе «откат» обновлений

за счет использования версии по умолчанию

и/или задания версии для отдельного

пользователя26/27

Page 27: Использование Edition Based Redefinition для обновления приложений, доступных 24/7

Спасибо за внимание!

Петр Марголис

[email protected]

+7 (495) 772-97-02

27/27