
- •Новосибирская государственная академия экономики и управления
- •«Базы данных»
- •Новосибирск 2000
- •1. Введение
- •2. Основные понятия
- •Принципы активных систем баз данных
- •Что может дать эта технология
- •Бизнес - правила
- •Разработка приложений
- •Производительность функционирования
- •3. Создание и использование хранимых процедур
- •Переменные конфигурирования системы
- •Создание и использование триггеров
2. Основные понятия
Традиционные базы данных являются пассивными. Объекты данных обычно помещаются в базу данных пользователем или приложением. Выборка объектов осуществляется опять-таки под воздействием внешних источников. Подобным же образом под влиянием какого-либо внешнего источника информация изменяет место своего хранения в базе данных (например, переносится из одной таблицы в другую).
Бизнес -правила, применяемые к содержимому базы данных (например, правила обновления конкретного элемента данных, последующие за этим действия над другими элементами как результат такого обновления), также управляются некоторым внешним -источником. Короче говоря, традиционные базы данных не являются активными "игроками" в информационных системах и вместо этого играют организационную роль, направленную на обеспечение хранения данных.
В последние годы эта роль изменяется, а важность концепции активных баз данных будет возрастать на протяжении оставшихся лет текущего десятилетия. Можно по существу, утверждать, что технология активных баз данных - это врата, открывающие путь к базам знании, исследуемым в области искусственного интеллекта (ИИ).
Обычно принято связывать зарождение идеи активных баз данных с появлением концепции триггера - механизма, впервые предложенного в исследовательском проекте System R компании IBM. Поддержка концепции триггера предусматривалась в языке этой системы SEQUEL (впоследствии названном SQL), спецификации которого были опубликованы первоначально в 1975 г. Однако ради исторической справедливости следует заметить, что идея триггеров была гораздо ранее воплощена в языке определения данных CODASYL (хотя термин "триггер" тогда еще и не употреблялся).
Начиная уже с версии этого языка, опубликованной в 1971 г. в нем предусматривалась поддержка концепции процедуры базы данных, которая может ассоциироваться с различными объектами базы данных в спецификациях схемы - с областями базы данных, с записями, элементами данных, наборами.
Позднее, в версии 1973 г. такие возможности были введены и для самой схемы базы данных. Процедура базы данных запускается в случае, если над объектом базы данных, с которым она ассоциирована, выполняется одна из заданных в спецификации операций. При этом выполнение процедуры может предшествовать выполнению указанной операции, следовать за ним или иметь место в случае возникновения ошибки.
Естественно, предполагается, что СУБД обладает механизмом, отслеживающих возникновение условий выполнения процедур базы данных. Программный код процедур базы данных интегрируется с базой данных, а не с логикой приложений. Таким образом, мы имеем здесь дело и с прообразом идеи «хранимых процедур», воплощенной впоследствии в реляционных системах и получившей статус расширения стандарта SQL-92.
Принципы активных систем баз данных
Как мы уже упоминали, системы баз данных традиционно были пассивными. В примере с магазином видеозаписей на рис. 1 приложения, пользователи, программное обеспечение операционной системы или некоторый другой внешний источник должны были уведомлять СУБД, каким образом хранить, осуществлять выборку или реорганизовывать информацию. Даже вне такой сферы, как операции случайного пользователя, у нас возникают задачи реализации логики обработки содержимого базы данных, обычно возлагаемые на прикладные программы.
Рис. 1. Пассивные системы баз данных
С другой стороны, активные системы баз данных предусматривают возможности, позволяющие:
содержать логику обработки (до некоторой степени) в самой базе данных так, чтобы она управлялась СУБД, а не прикладным программным обеспечением приложений;
обеспечивать некоторую форму мониторинга событий и условий, которые воздействуют на данные и могут инициировать обработку, управляемую базой данных;
включать в систему базы данных также некоторое средство, с помощью которого эти события и условия могли бы запускать логику внутри базы данных.
Как показано на рис. 2, все эти три возможности - логика, триггеры для этой логики и средства мониторинга для активизации триггеров - выносятся из программ приложений в саму базу данных, обеспечивая более тесную связь системных данных и операций над данными, чем это было принято в традиционных пассивных управляемых СУБД системах.
Рис.2. Активные системы баз данных
В создании активных сред помогает несколько основных конструкций базы данных: ограничения, утверждения, хранимые процедуры и триггеры.