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

       

это позволяет нам группировать правила


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

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

Механизм классов правил поддерживает для правил некоторую необязательную структуру, обеспечивающую нам средство управления без потребности обращения к полностью процедурной системе. Рис. 2 показывает, что при наших взаимодействиях правил очень трудно явно представить порядок применения правил. Понятие продукционных правил избавляет нас от этого бремени. Однако, на самом деле, мы желаем применять некоторое управление порядком возбуждения правил. Например, мы хотим применять INT2EXIST до SELMERGE, чтобы гарантировать, что блок INTERSECT над блоком SELECT будет преобразован и слит в один блок SELECT. Мы обеспечиваем это упорядочивание путем тщательной организации своих классов правил.

Заметим, что в нашем процессоре поддерживается полный спектр возможностей управления – от управления, диктуемого данными, до полностью процедурного управления. Схема управления, полностью диктуемого данными, может моделироваться путем использования единственного класса правил, в котором схема управления рандомизирована, а полностью процедурная схема могла бы представлять собой набор правил из одного правила, которое один раз инициируется и выполняет произвольную процедуру или программу. В Query Rewrite мы используем процессор правил для нахождения баланса между этими крайностями – у нас имеется несколько классов правил, для некоторых из которых мы используем последовательную схему управления, а для других – приоритетную.

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