Корпоративные базы данных - статьи

       

Активные базы данных



По определению БД называется активной, если СУБД по отношению к ней выполняет не только те
действия, которые явно указывает пользователь, но и дополнительные действия в соответствии с
правилами, заложенными в саму БД.

Легко видеть, что основа этой идеи содержалась в языке SQL времени System R. На самом деле,
что есть определение триггера или условного воздействия как не введение в БД правила, в
соответствии с которым СУБД должна производить дополнительные действия? Плохо лишь то,
что на самом деле триггеры не были полностью реализованы ни в одной из известных систем, даже
и в System R. И это не случайно, потому что реализация такого аппарата в СУБД очень сложна,
накладна и не полностью понятна.

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

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

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

Содержание раздела