Классика баз данных - статьи

       

Процессор правил


Для соответствия целям расширяемости проекта Sturburst было решено, что система правил является подходящей платформой, позволяющей легко добавлять к системе правила преобразований с последующим их переупорядочением и обновлением. Для наших целей не подходили существующие процессоры правил, и поэтому мы разработали собственную систему. Как будет ясно из дальнейшего обсуждения, нам требовались многочисленные возможности, недоступные в типичных системах правил (таких как OPS5 [BFKM85]). Процессор правил Query Rewrite проекта Sturburst обладает следующими особенностями:

  • Правила произвольной сложности: Правилами в нашем процессоре являются пары функций, написанных на процедурном языке Си. Функция проверки условия выполняет произвольную проверку и выставляет флаг TRUE или FALSE. Если функция проверки условия устанавливает флаг TRUE, то для выполнения произвольного действия вызывается функция действия. Тот факт, что наши правила представляют собой Си-функции, является существенным – мы требуем, чтобы наши правила могли манипулировать QGM, который в Starburst представляется как сеть Си-структур. Хотя правила пишутся на языке Си, для эффективного выполнения они компилируются в машинный язык.
  • Средство работы с контекстом: Структура данных, передаваемая каждому вызову системы правил, включает указатель на информацию пользователя, которая, в свою очередь, передается в сами функции правил, где ее можно читать и модифицировать. Для наших целей в Query Rewrite мы используем этот указатель для сохранения текущего «контекста» в QGM (блока, квантификатора или предиката), и наши правила перезаписи пишутся с использованием ссылки на этот контекст. Это позволяет обеспечивать обсуждавшуются ранее локальность правил. К набору правил добавляются специальные правила для «продвижения» контекста, когда мы исчерпываем возможности модификации текущего контекста. Так что эти правила «обходят» граф QGM.

    Классы правил и расширяемое разрешение конфликтов: Мы разделяем наш набор правил на классы, каждый из которых можно считать отдельным набором правил.

    Содержание  Назад  Вперед