Графовые модели для анализа взаимодействий правил в активных базах данных

УДК 004.652

ГРАФОВЫЕ МОДЕЛИ ДЛЯ АНАЛИЗА ВЗАИМОДЕЙСТВИЙ ПРАВИЛ В АКТИВНЫХ БАЗАХ ДАННЫХ

С. В. Шибанов, А. Б. Зудов

GRAPH MODELS FOR ACTIVE DATA BASE RULES INTERACTION

S. V. Shibanov, A. B. Zudov

Аннотация. Актуальность и цели. Существующие модели для анализа взаимодействия активных правил в виде графа срабатывания и графа активации не позволяют точно определить наличие конфликтных ситуаций. Модификации указанных моделей являются частными случаями и связаны с наложением ограничений на структуру активных правил. Поэтому разработка моделей, лишенных недостатков и ограничений, характерных для графа срабатывания и графа активации, является актуальной задачей. Цель исследования - разработка моделей для анализа взаимодействующих активных правил, позволяющих точно выявлять конфликтные ситуации, определять свойства наборов правил, выявлять изменения в поведении правил. Материалы и методы. Реализация поставленных целей была достигнута за счет применения графовых моделей, в одной их которых переходы состояний базы данных описываются в виде экземпляров событий, а в другой определяются области значений параметров опосредованного инициирования правил, что позволяет выявлять изменения в поведении правил при многократном рекурсивном вызове. Результаты. Граф экземпляров событий позволяет выявлять зацикливание, состояние гонки и необязательные операции для взаимодействующих активных правил и определять параметры последовательности событий, которые привели к конфликтным ситуациям. Граф областей значений позволяет проверять набор активных правил на терминальность и конфлюентность, выявлять изменения в поведении правил при многократном рекурсивном вызове. Выводы. Разработанные модели обеспечивают вынесение статического анализа взаимодействующих правил в отдельный процесс и позволяют разделить исполнение правил на стадию динамического анализа и стадию записи изменений в базу данных при реализации системы управления активными базами данных.

Ключевые слова: активная база данных, активное правило, взаимодействие активных правил, граф экземпляров событий, граф областей значений.

Abstract. Background. Current active rules interaction analysis models such as trigger graphs or activation graphs don't allow to determine the conflict situation. These models' modifications are related to particular cases and imply some restrictions on active rules structure. That is why there is a need for the new models free of trigger or activation graph limitations to be developed. The research goal is to develop model for interacting active rules analysis. This model allows for conflict situations to be revealed, for rule sets' properties to be defined and rule behavior changes to be detected. Materials and methods. These goals were achieved using graph models. One of these models define database state changes as event instances and the other define mediated parameter initialization value ranges. The latter allows for the rule behavior changes to be detected in a multiple recursive rule call. Results. Event instance graph allows for rule cycles, race conditions and redundant operations to be detected for interacting active rules as well as conflict source event sequence parameters to be defined. Value range graph allows active rulesets to be checked for confluence and terminations as well as rule behavior changes in a multiple recursive calls to be

detected. Conclusions. Developed models allows for placing interacting rules strategic analysis in a separate process. These models also allows for splitting rules' executions into separate stages such as dynamic analysis stage and database update stage during the process of active database management system implementation.

Key words: active database, active rule, active rules interaction, event instance graph, value range graph.

Введение

Для надежной и стабильной работы система управления активной базой данных (СУАБД) должна обеспечивать контроль взаимодействия правил как при их проектировании, так и в процессе исполнения. Статический анализ активных правил в процессе их проектирования направлен на выявление возможных вариантов взаимодействия правил и выделение среди них потенциальных угроз с точки зрения стабильности работы системы. Динамический анализ активных правил обеспечивает контроль корректности исполнения и поиска наиболее эффективного варианта исполнения.

Главный недостаток подходов к статическому анализу правил, основанных на использовании графов срабатываний и активации, заключается в том, что наличие цикла означает лишь возможность опосредованного рекурсивного вызова, который не всегда является бесконечным.

Поэтому актуальной является задача разработки моделей, учитывающих оценку областей значений активного правила на различных итерациях опосредованного рекурсивного вызова.

1. Обзор моделей для анализа взаимодействий активных правил

Наиболее известный подход к описанию потенциальных взаимодействий правил предложен в работе [1]. Он основан на принципе инициируемо-сти вызова правил. Одним правилом потенциально инициируется вызов другого, если действие первого правила подразумевает генерацию события того же типа, к которому привязано второе правило.

Пусть t(ek) - тип события ek. Тогда инициируемость вызова правила г}-правилом ri означает выполнение условия

t(eg\ eger/) = t(eh\3ar¡k).

В рамках данного подхода в качестве модели описания взаимодействия правил строится граф срабатываний Gtr (triggering graph), вершины которого соответствуют активным правилам {r1.rn}, а ориентированные ребра означают инициируемость вызова правил

Gtr = ({ri...Гп}, {ri, r]\t(ea\eaerie) = t(eb\3arie))}).

В качестве критерия терминальности правил используется ацикличность графа срабатываний. Критерием конфлюентности является отсутствие отменяющих друг друга действий для правил, соответствующих любой из вершин графа срабатываний.

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

Существует ряд исследований, направленных на усовершенствование данного подхода путем удаления дуг из графа срабатываний на основе вносимых пользователем дополнительных сведений о взаимодействии правил. В частных случаях используются различные вариации классического подхода -разделение событий на пользовательские и общие [2, 3], а также механизм приоритетов правил [4]. В качестве дополнения к графу срабатываний строится модель, имитирующая последовательное инициирование правил в упрощенном виде. В качестве такой модели либо используется конечный автомат для всего графа [5], либо вычисляется максимальное количество запусков правил каждого цикла в графе [6].

Указанные вариации описывают частные случаи решения задачи ини-циируемости запуска правил. Правило rg потенциально инициирует запуск другого правила rh, если оно способно генерировать экземпляр события с таким контекстом, при котором условие инициированного правила становится истинным:

3(efc eo): rh(ek\ekergk) Ф 0.

Областью значений cod(ri) активного правила называется множество всех экземпляров событий, которые правило способно генерировать, а областью определений dom(ri) - множество экземпляров событий, для которых условие правила истинно. Тогда для инициируемости запуска правил необходимо, чтобы область значений инициирующего правила пересекалась с множеством определений инициируемого, т.е. dom(r,)ncod(r/^0.

Существенным улучшением классического подхода является использование графа активации GAct (activation graph):

GAct = ({ri...r„}, [r„ r]\t(eg\dom(r])ncod(rl^0)}).

Как и в графе срабатываний, вершины графа активации соответствуют активным правилам {r1...rn}. Дуги графа означают инициируемость запуска правил. Критерии терминальности и конфлюентности в данном случае остаются теми же, что и при использовании графа срабатываний.

Использование графа активации позволяет повысить точность критерия терминальности, но наличие пути от одного правила к другому не гарантирует опосредованное инициирование. Кроме того, стоит отметить значительную сложность проверки инициируемости запуска правил, описанных на процедурных языках. Помимо этого существуют условия, при которых задача поиска точного критерия терминальности становится неразрешимой. Поэтому при построении графа активации для упрощения проверки вводятся ограничения на структуру активных правил.

2. Граф экземпляров событий для динамического анализа активных правил

Временные метки событий не играют роли в динамическом анализе, поэтому будем считать, что экземпляр события характеризуется парой объектов e = <t, P>, где t - тип события, P = {p} - значения параметров события, или контекст.

Определим функцию ю, которая для правила ri и экземпляра события ek возвращает набор выполняемых правилом операций - ю(гь ek) = D = {d}. Для набора операций D определим функцию \, возвращающую набор экземпля-

ров событий E', генерируемых в случае выполнения данного набора операций D) = E' = {e'}. Операция d приводит к генерации нового экземпляра события в том случае, если в результате ее выполнения некоторым образом вызывается процедура генерации экземпляра событий.

Исходное событие считается входным, а порожденные события - выходными параметрами активного правила. Экспериментом с активным правилом относительно некоторого экземпляра события называется процедура получения сведений о действиях с БД, которые выполняются правилом при обработке экземпляра события. Эксперимент с правилом заключается в вычислении выходных параметров.

Пример 1. Пусть производится проверка экземпляра события e0 = <t0, P0>, сгенерированного триггером при обработке запроса на вставку:

INSERTINTOTablel VALUES (1, "2").

Типом события t0 в данном случае является вставка в таблицу Table 1, а значения параметров P0 = {p01, p02} равны, соответственно, 1 и "2". Пусть с типом события t0 сопоставлено активное правило R1:

CREATERULE^l

ON INSERT INTO Tablel

WHEN true

DO INSERT INTO Table2 VALUES (pari + 1);

generate_event(event_typei, {par2}).

Правило R1 при обработке экземпляра события e0 выполняет две операции ffl(ri, e0) = Di = {di1, di2}, где

d11 - INSERT INTO Table2 VALUES (2);

d12 - generate_event(event_typei, {"2"}).

Одна из операций, выполняемых правилом R1, является вызовом процедуры генерации экземпляра события generate_event, в которую передан тип события event_type1 и набор значений параметров, состоящий из единственного значения par2. Если для вставки в таблицу Table2 предусмотрено активное правило, то набору операций D1 соответствует следующий набор экземпляров событий: ^(D1) =E' = {e1, e2} = {<insertintoTable2, {2}>, <event_type1,{"2"}>}.

Для выявления зацикливания и состояния гонки в рамках динамического анализа предложена модель взаимодействий правил в виде графа экземпляров событий Ge, в котором указаны связи экземпляров событий друг с другом, возникающие при работе активных правил GE = ({e1...em},{(ei,eJ)\ 3r: ejE are> }), где m - число экземпляров событий, et - инициирующий экземпляр события, eJ - промежуточный экземпляр события, rei - активное правило r, обрабатывающее экземпляр события ei.

Если при обработке одного экземпляра события ei некоторым правилом генерируется другой экземпляр события ej, то в графе присутствует соответствующая дуга (ei; ej) между вершинами, обозначающими экземпляры событий. Граф экземпляров событий GE является ориентированным графом, в котором имеется, как минимум, одна вершина, соответствующая исходному экземпляру события.

С точки зрения динамического анализа экземпляры событий, различающиеся только временными метками, являются эквивалентными, поэтому число вершин в графе и число фактически генерируемых экземпляров собы-

тий во время работы правил способно различаться. В случае терминальности правил число генераций эквивалентных событий определяется как число дуг, входящих в соответствующую экземпляру события вершину. Число вызовов того или иного правила определяется как число событий, из вершин которых выходят дуги, помеченные данным правилом.

Построение графа экземпляров событий начинается с определения всех правил, связанных с типом исходного события. Для каждого такого правила определяется набор операций, а по нему - набор порожденных событий. Для каждого порожденного события проверяется наличие эквивалентного экземпляра среди присутствующих в графе вершин. Если такая вершина есть, в нее проводится дуга из исходной вершины. Если такой вершины нет, то порожденный экземпляр события добавляется в качестве новой вершины, в которую также проводится дуга, а затем рекурсивно строится подграф, принимая порожденную вершину за исходную.

Ситуации зацикливания правил соответствует граф, имеющий циклы. Наличие цикла означает, что обработка некоторого экземпляра события приводит к генерации эквивалентного события, т.е. обладающего тем же контекстом. Так как новый экземпляр события обрабатывается в точности так же, как и предыдущий, это приведет к зацикливанию. Похожий принцип выявления зацикливания применятся в [7], где зацикливание выявлялось с помощью сравнения генерируемых событий. Однако применение графа экземпляров событий не требует фактической генерации событий и изменения состояния БД.

Анализ графа экземпляров событий позволяет получить подробные сведения о причинах зацикливания. Проверка на наличие циклов осуществляется при каждом добавлении новой дуги либо один раз после окончания построения графа в зависимости от задач обработки выявляемых циклов. Если построение графа экземпляров событий останавливается сразу после появления хотя бы одного цикла, чтобы снизить продолжительность динамической проверки, то поиск циклов целесообразно проводить при добавлении дуг. Основной операцией является сравнение нового экземпляра событий с

Й п2

имеющимися экземплярами. Количество сравнений при этом равно ^ ^ ~—,

1=0 2

где п - число вершин в графе. Алгоритм выявления зацикливания, выполняющийся одновременно с построением графа, имеет сложность О(п2).

В тех случаях, когда в графе возможно наличие нескольких циклов, прекращение построения графа после обнаружения только первого цикла приводит к необходимости многократного изменения репозитория правил. С учетом того, что в графе экземпляров событий количество дуг равно п-1 в случае отсутствия зацикливания и п-2 при наличии цикла, фактическая сложность алгоритмов анализа соответствует О(п).

Пример 2. Предположим, в ходе проверки был построен граф, представленный на рис. 1,а.

Входящие в цикл дуги соответствуют правилам, участвующим в бесконечной рекурсии, а вершины - входным параметрам. В приведенном примере это правила г1, г2 и г3, обрабатывающие, соответственно, экземпляры событий е1, е2 и е3. Кратчайший путь от начальной вершины графа до вершины, принадлежащей циклу, соответствует последовательности генерации экземпляров событий и вызовов правил, которые приводят к зацикливанию, но сами в зацикливании не участвуют. В примере это событие е0 и правило г0.

а)

Рис. 1. Графы экземпляров событий с зацикливанием: а - граф с одиночным циклом; б - граф с двумя циклами

Принадлежащая циклу вершина, в которую существует путь из начальной вершины графа, соответствует экземпляру события, появление которого непосредственно инициирует зацикливание (экземпляр события е1).

Допустим, правило г1 было признано ошибочным и изменено так, чтобы генерации события е2 не происходило. Это приведет к удалению первого цикла (еь е2, е3). Каждый последующий цикл выявляется только после того, как будет устранен предыдущий. Поэтому зацикливание способно появиться снова, так как остается еще один невыявленный цикл (е1, е4, е5, е3). Таким образом, если требуется получить сведения сразу обо всех циклах, выявление целесообразно проводить после того, как граф экземпляров событий построен полностью.

Состоянию гонки соответствует граф экземпляров событий, содержащий вершину, из которой исходят помеченные различными правилами дуги, являющиеся началом путей, один из которых содержит вызов правила с операцией, отменяющей операцию правила из другого пути. Введем функцию %(Бл, Бв), принимающую значение 1, если Бл содержит операцию, отменяющую результат некоторой операции из Бв, и значение 0 в обратном случае.

Пример 3. Пусть в ходе проверки был построен граф экземпляров событий, представленный на рис. 2.

а

Гп 14

0

Рис. 2. Граф экземпляров событий, соответствующий состоянию гонки

Пусть ю(г0, е0) = О0, ю(г1, е0) = Д, ю(г2, е1) = В2, и при сравнении набора В0 с наборами В1 и было выявлено, что такие операции содержатся в наборах В0 и Б2: %(О0, Д) = 0; %(О0, Д) = 1. В этом случае граф экземпляров событий соответствует состоянию гонки.

Анализируя граф, возможно выявить наборы операций, которые приводят к состоянию гонки (О0 и Д), выполняющие операции правила (г0 и г2), с какого события началось расхождение (экземпляр события е0) и какие последовательности вызовов правил привели к конфликтующим операциям -

аг0е° и от/0, ат2е1 .

Проверку на состояние гонки целесообразно проводить после проверки на отсутствие зацикливания, так как даже в случае выявления конфликтующих операций конечный результат работы правил сохраняется в БД. В худшем случае экземпляр событий представляет собой бинарное дерево, тогда каждый экземпляр событий необходимо сравнить со всеми вершинами, и алгоритм выявления состояния гонки имеет сложность O(n•log(n)).

Необязательные операции имеются в графе экземпляров событий, если в графе содержится путь, в который входят вызовы правил, содержащих отменяющие друг друга операции. Пусть в графе на рис. 2 путь от вершины е0 до вершины е3 содержит вызовы правил г и т2, чьи наборы операций содержат конфликтующие события: %(Д, Д) = 1. Это означает, что результат одной из операций набора А будет отменен операцией из набора Д, так как Д выполняется перед операциями В2.

Граф экземпляров событий содержит вершины только одного типа событий, поэтому анализ предложенного графа требует наименьшее количество вычислений, чем в случае аналогичных универсальных моделей.

3. Граф областей значений для статического анализа активных правил

Для проверки терминальности и конфлюентности набора правил в рамках статической проверки предложена модель описания потенциальных взаимодействий правил в виде графа областей значений Ок. Вершины графа соответствуют оценкам областей значений правил. Если область значений одного правила пересекается с областью определений другого, то между вершинами, сопоставленными с соответствующими оценками, в графе присутствует дуга (у,, у,):

Ок = ({У1, ..., Уп}, {у у)|у = §(гк\гкЕ^(уг), у,)}),

где у, - оценка области значений потенциально инициирующего правила; у, - оценка области значений потенциально инициируемого правила; гк,С) -область значений правила гк относительно области определения, входящей в С; ^(у) - множество правил, инициируемых событиями из множества у.

Множество областей значений правил неизвестно заранее, однако возможно определить порядок последовательного добавления в него новых элементов. Добавление вершин в граф областей значений осуществляется одновременно с добавлением входящих дуг. Для каждого правила определяется исходная область значений и добавляется соответствующая вершина. По этой области определяются инициируемые правила, и процесс повторяется для каждого правила с учетом ограничения области значений множеством.

По аналогии с графом экземпляров событий набор правил является терминальным в случае ацикличности графа областей значений. Терминаль-ность правил определяется путем проверки ацикличности графа областей значений. По нему предлагается определить, с какого правила начнется зацикливание, какие правила опосредованно будут участвовать в зацикливании, какие правила будут выполнены непосредственно перед зацикливанием, а также области значений параметров всех правил при этом. Наличие нескольких пересекающихся циклов означает, что правило способно опосредованно вызывать себя несколькими способами.

Для проверки конфлюентности производится сравнение путей, имеющих общую начальную вершину. Состояние гонки возникает, когда с одним событием связаны две цепочки запусков правил, выполняющие противоречащие друг другу действия с одним и тем же объектом. Сложность алгоритмов проверки терминальности и конфлюентности совпадает со сложностью выявления зацикливания и состояния гонки на графе экземпляров событий и составляет 0(п2) и 0(п\о^(п)), соответственно.

Допустим, на графе присутствует вершина, из которой исходят два непересекающихся пути, которые соответствуют параллельным последовательностям возможных запусков правил. Для каждой последовательности возможно получить набор всех типов операций с объектами БД, которые производятся правилами при обработке события. Сравнивая наборы операций для разных цепочек, предлагается получить пары типов операций, которые способны отменять результаты друг друга. В случае обнаружения необязательных операций, если пересечение значений параметров не является пустым, соответствующие правила не являются конфлюентными.

Параллельные цепочки правил способны инициироваться не только другим правилом, но и событием, которое не является порожденным. Для таких событий нет соответствующих вершин на графе областей значений. Поэтому перед началом проверки конфлюентности данные вершины должны быть добавлены и соединены дугами с вершинами, соответствующими обрабатывающим событие неинициированным правилам (рис. 3). На рисунке вершины областей значений правил обозначены через г, а дополнительная вершина, соответствующая событию, - символом е. Для такого графа проверка на конфлюентность должна быть проведена два раза - для путей, начинающихся с г1 и г2, и для вершин г3 и г4.

Рис. 3. Граф областей значений для возможно неконфлюентных активных правил

Моделирование потенциальных взаимодействий правил состоит не только в построении графа областей значений и проверки корректности правил, но и в выявлении различных сценариев обработки событий. Сценарию на графе областей значений соответствует множество путей из общей вершины. Для того, чтобы определить, как поведут себя правила при обработке определенного экземпляра события, необходимо найти наименьшую область значений на графе, в которую входит экземпляр событий, и определить пути, начинающиеся из соответствующей вершины. Найденная вершина задает множество всех экземпляров событий, которые должны быть обработаны тем же образом. При этом терминальность проверяется сразу после построения графа, а проверка конфлюентности требует добавления вершин, соответствующих инициирующим событиям. Также граф областей значений применим и для исследования корректного поведения правил.

Заключение

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

Список литературы

1. Aiken, A. Static Analysis Techniques for Predicting the Behavior of Active Database Rules / A. Aiken, J. M. Hellerstein, J. Widom // ACM Transactions on Database Systems. - 1995. - № 20 - P. 3-41.

2. Couchot, A. Improving Termination Analysis of Active Rules with Priorities / A. Cou-chot // Proc. Int' l Conf. on Database and Expert Systems Applications, 2003. - P.1-16.

3. Couchot, A. Termination analysis of active rules modular sets / A. Couchot // Proceedings of the tenth international conference on Information and knowledge management. - New York, USA, 2001. - P. 326-333.

4. Couchot A. Termination Analysis of Active Rules with Priorities / A. Couchot // Database and Expert Systems Applications. Lecture Notes in Computer Science. - 2003. -№ 2736. - P. 846-855.

5. Picouet, P. Semantics and Expressiveness Issues in Active Databases / P. Picouet, V. Vianu // Journal of Computer and System Sciences. - 1998 - № 57.3. - P. 325-355.

6. Debray, S. K. Constraint-Based Validation Analysis for Cyclic Active Database Rules / S. K. Debray, T. J. Hickey //Proceedings of the First International Conference on Computational Logic. - London, UK, 2000. - P. 1121-1136.

7. Bonifati, A. Active rules for XML: A new paradigm for E-services / A. Bonifati, S. Ceri, S. Paraboschi // The VLDB Journal - The International Journal on Very Large Data Bases. - 2001. - № 10.1. - P. 39-47.

Шибанов Сергей Владимирович

кандидат технических наук, доцент, кафедра математического обеспечения и применения ЭВМ,

Пензенский государственный университет E-mail: serega@pnzgu.ru

Shibanov Sergey Vladimirovich candidate of technical sciences, associate professor, sub-department of mathematical provision and application of computers, Penza State University

Зудов Антон Борисович

соискатель,

кафедра математического обеспечения и применения ЭВМ,

Пензенский государственный университет E-mail: phoenix_13666@mail.ru

Zudov Anton Borisovich applicant,

sub-department of mathematical provision and application of computers, Penza State University

УДК 004.652 Шибанов, С. В.

Графовые модели для анализа взаимодействий правил в активных базах данных / С. В. Шибанов, А. Б. Зудов // Модели, системы, сети в экономике, технике, природе и обществе. - 2016. - № 1 (17). - С. 345-354.