Поддержка триггеров в системах XML-баз данных Мария Гринева rekouts@ispras.ru Институт Системного Программирования РАН.

Презентация:



Advertisements
Похожие презентации
PL/SQL Триггеры (INSERT, UPDATE, DELETE). Определение Три́ггер базы данных (англ. trigger) это хранимая процедура особого типа, которую пользователь не.
Advertisements

1 Система хранения XML СУБД Sedna Андрей Фомичев Институт Системного Программирования РАН 5 апреля 2005.
Обеспечение целостности данных Процедурное. Хранимые процедуры Хранимые процедуры пишутся на специальном встроенном языке программирования, они могут.
PL/SQL Триггер блок PL/SQL, выполняемый неявно каждый раз, когда происходит конкретное событие.
Введение в SQL (НЕ select) Затрагиваемые темы Роль языка SQL. Части SQL Роль языка SQL. Части SQL Администрирование БД: привилегии (DCL) Администрирование.
Последовательности Триггеры Представления. Последовательности Последовательность - это ряд чисел, в котором каждое последующие число больше предыдущего.
Разграничение доступа в ORACLE 10 Дмитрий Петренко.
PL/SQL Курсоры. Курсор – специальный элемент, связанный с SQL-оператором SELECT. Объявление курсора происходит в секции объявления базового блока. Работа.
Базы данных Проектирование базы данных Выполнил: Волкова Н.М. гр. С-55 Руководитель: Шурупов Д.В.
Тема 2. Концептуальное проектирование. Лекция 1. Уровни моделей и этапы проектирования.
Язык SQL Последовательности Представления Индексы.
Лекция 15 Лекция 15 Управление реляционными базами данных. Языки определения данных и языки манипулирования данными. Способы выражения запросов: процедурный.
Система контроля прав доступа При помощи процедур и триггеров в MySQL.
50/codd.pdf 50/codd.pdf
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 7.
Triggers для mysql. Что есть триггер? Триггер - это хранимая процедура особого типа, исполнение которой обусловлено наступлением определенного события.
Триггеры (в соответствии со стандартом SQL-1999, с особенностями синтаксиса Oracle)
Тема 2. Основы теории баз данных Лекция 3. Архитектура системы баз данных Базы данных.
Разработка телекоммуникационной и информационной системы для прогнозирования аварий и катастроф на НПЗ.
Лекция 3 Домены Ограничения на значения столбцов Создание, изменение и удаление таблиц Ключи и ссылочная целостность Защита таблиц.
Транксрипт:

Поддержка триггеров в системах XML-баз данных Мария Гринева Институт Системного Программирования РАН

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

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

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

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

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

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

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

Поддержка правил посредством переписывания запросов Правило: define rule r1 is on retrieve to EMP.salary where CURRENT.name = 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

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

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

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

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

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

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

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

Оптимизированный метод: 1-ый этап – выбор возможных триггеров на стадии компиляции example: UPDATE replace as $b with T1: [ON Replace]; doc(lib.xml)//book[year

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

Оптимизированный метод: 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)

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

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

Заключение Предложенные методы разработаны в рамках проекта по реализации XML-СУБД SEDNA

Список статей The POSTGRES Rule System. M. Stonebraker, S. Potamianos Introducing Trigger Support for XML Database Systems, M. Rekouts, M. Grinev, in Proc of SYRCoDIS Incorporating Active Rules Processing into Update Execution in XML Database Systems, M. Rekouts, in Proc of DEXA Workshops