Поддержка триггеров в системах XML-баз данных

Содержание

Слайд 2

План доклада

Применения триггеров
Общий вид триггеров
Основные принципы реализации активных правил в РСУБД POSTGRES
Триггеры

План доклада Применения триггеров Общий вид триггеров Основные принципы реализации активных правил
в XML-базах данных
Проблемы реализации триггеров в системах XML-баз данных:
Методы выявления активируемых триггеров
Отслеживание корректности вложенных update-операций

Слайд 3

Системы, построенные на использовании триггеров

Экспертные системы, обрабатывающие большие объемы данных (data-intensive expert

Системы, построенные на использовании триггеров Экспертные системы, обрабатывающие большие объемы данных (data-intensive
systems)
Системы управления технологическим потоком (workflow management systems)

Слайд 4

Задачи, решаемые при помощи триггеров

Поддержка ограничений целостности
Авторизация
Сбор статистики
Поддержка представлений

Задачи, решаемые при помощи триггеров Поддержка ограничений целостности Авторизация Сбор статистики Поддержка представлений

Слайд 5

Общая форма триггеров

Определяются пользователями, приложениями, администраторами базы данных
Общая форма состоит из трех

Общая форма триггеров Определяются пользователями, приложениями, администраторами базы данных Общая форма состоит
частей:
Событие: вызывающее срабатывание триггера
Условие: проверяется при срабатывание триггера
Действие: выполняется при запуске триггера, если выполнено его условие

Слайд 6

Принципы реализации активных правил в РСУБД POSTGRES

Поддержка активных правил на уровне кортежей

Принципы реализации активных правил в РСУБД POSTGRES Поддержка активных правил на уровне
(Tuple Level System)
Поддержка посредством переписывания запросов (Query Rewrite System)

Слайд 7

Общая архитектура системы

Общая архитектура системы

Слайд 8

Поддержка на уровне кортежей (Tuple Level System)

Кортежи помечаются специальными блокировками правил (rule

Поддержка на уровне кортежей (Tuple Level System) Кортежи помечаются специальными блокировками правил
lock):
Имя правила
Тип блокировки (кортежа или всего отношения)
Идентификатор плана правила
Правильность блокировок правил при дальнейших модификациях данных поддерживается при помощи rule stubs

Слайд 9

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

Правило:
define rule r1 is
on retrieve to EMP.salary
where CURRENT.name

Поддержка правил посредством переписывания запросов Правило: define rule r1 is on retrieve
= ‘Sam’
do instead retrieve(salary=3*EMP.salary)
where EMP.name=‘Bill’

Запрос:
retrieve (EMP.salary)
where EMP.age > 30

Результат переписывания:
retrieve (EMP.salary)
where EMP.age > 30 and
not(EMP.name = ‘Sam’)

retrieve (salary = 3*E.salary)
from E in EP
where EMP.age > 30
and EMP.name=‘Sam’ and E.name=‘Bill’

M. Stonebraker
“On rules, procedures, caching and views in data base systems”

Слайд 10

Выбор оптимальной подсистемы в POSTGRES

Правило покрывает небольшое кол-во кортежей => TLS эффективней
Если

Выбор оптимальной подсистемы в POSTGRES Правило покрывает небольшое кол-во кортежей => TLS
правило – определение view над существующим отношением => QLS эффективней

Слайд 12

Синтаксис и семантика XML-триггеров

CREATE TRIGGER trigger-name
(BEFORE|AFTER)
(INSERT|DELETE|REPLACE|UPDATE-CONTENT)+
OF XPathExpression (,XPathExpression)*
[FOR EACH (NODE|STATEMENT)]
[WHEN

Синтаксис и семантика XML-триггеров CREATE TRIGGER trigger-name (BEFORE|AFTER) (INSERT|DELETE|REPLACE|UPDATE-CONTENT)+ OF XPathExpression (,XPathExpression)*
XQuery-Clause]
DO [INSTEAD] XQuery-UpdateOp

Слайд 13

Проблемы реализации триггеров в системах XML-баз данных

Выявление триггеров, активируемых данной update-операцией
Отслеживание корректности

Проблемы реализации триггеров в системах XML-баз данных Выявление триггеров, активируемых данной update-операцией
update-операций, вызываемых в качестве действия триггера (проблема вложенных update-операций)
Каскадный запуск триггеров
Оптимизация вычисления условий триггеров

Слайд 14

Методы выявления триггеров, активируемых данной update-операцией: Требования к системе

Поддержка XQuery и update-языка, основанного

Методы выявления триггеров, активируемых данной update-операцией: Требования к системе Поддержка XQuery и
на модели данных XQuery
Поддержка операций сравнения узлов в отношении предок-потомок
Поддержка описывающей схемы (Data Guide)

Слайд 15

Методы выявления триггеров, активируемых данной update-операцией: Универсальный метод

Вычисление update-пути и триггер-путей
Сравнение полученных последовательностей

Методы выявления триггеров, активируемых данной update-операцией: Универсальный метод Вычисление update-пути и триггер-путей
узлов посредством операций отношения предок-потомок
Выбор активируемых триггеров по таблице (на следующем слайде)

Слайд 16

Методы выявления триггеров, активируемых данной update-операцией: Универсальный метод

Методы выявления триггеров, активируемых данной update-операцией: Универсальный метод

Слайд 17

Методы выявления триггеров, активируемых данной update-операцией: Оптимизированный Метод

1-ый этап на стадии компиляции update-операции:

Методы выявления триггеров, активируемых данной update-операцией: Оптимизированный Метод 1-ый этап на стадии
сужение набора триггеров, возможно активируемых данной операцией модификации при помощи описывающей схемы
2-ой этап на стадии выполнения update-операции: обработка триггеров встраивается в план выполнения update-операции

Слайд 18

Оптимизированный метод: 1-ый этап – выбор возможных триггеров на стадии компиляции

example:
UPDATE replace

Оптимизированный метод: 1-ый этап – выбор возможных триггеров на стадии компиляции example:
doc(“lib.xml”)/library/shelf[@nr=45]/book[@id=“A097”]
as $b with
T1: [ON Replace]; doc(“lib.xml”)//book[year<1980]
------------------------------------------------------------------
update-path=doc(“lib.xml”)/library/shelf[@nr=45]/book[@id=“A097”]
T1-path=doc(“lib.xml”)/library/shelf/book[year<1980]


Перепишем update-путь и триггер-пути в абсолютные пути: то есть исключим неопределенности ‘//’,’*’, ‘..’
Выберем возможные триггеры: сравним имена элементов на соответствующих шагах триггер-пути и update-пути
Выбор возможных триггеров по таблице

Слайд 19

Оптимизированный метод: выбор возможных триггеров по таблице

Оптимизированный метод: выбор возможных триггеров по таблице

Слайд 20

Оптимизированный метод: 2-ый этап – выстраивание обработки триггеров в план выполнения update-операции

«Объединенный

Оптимизированный метод: 2-ый этап – выстраивание обработки триггеров в план выполнения update-операции
план выполнения» строится таким образом, что предикаты из триггер-путей встраиваются в план вычисления update-пути посредством mark-операций
mark1(unmarked_seq, predicate, trigger_name)
mark2(marked_seq, predicate, trigger_name)

example:
(select (mark1(child(select(child (child (doc(“lib.xml”),elem(library)), elem(shelf)), f(s|attr(s,nr)=45)), elem(book)), f(a|child(a,year)<1980),“T1”), f(b|attr(b,id))=“A097”))

Слайд 21

Оптимизированный метод: результат

В результате выполнения «объединенного плана»
Определены триггеры, активируемые данной update-операцией
Определен набор

Оптимизированный метод: результат В результате выполнения «объединенного плана» Определены триггеры, активируемые данной
узлов, на которых выявленные триггеры должны сработать

Слайд 22

Отслеживание корректности update-операций, вызываемых в действии триггеров

Действие триггера – update-операция => может

Отслеживание корректности update-операций, вызываемых в действии триггеров Действие триггера – update-операция =>
затрагивать узлы, модифицируемые внешней update-операцией (вызвавшей триггер)
Решение – использование транзакционных блокировок

Слайд 23

Заключение

Предложенные методы разработаны в рамках проекта по реализации
XML-СУБД SEDNA
http://www.modis.ispras.ru/Development/sedna.htm

Заключение Предложенные методы разработаны в рамках проекта по реализации XML-СУБД SEDNA http://www.modis.ispras.ru/Development/sedna.htm
Имя файла: Поддержка-триггеров-в-системах-XML-баз-данных.pptx
Количество просмотров: 110
Количество скачиваний: 0