задана как функция, которая должна
Если HIRE(EMPLOYEE) задана как функция, которая должна быть выполнена менеджером данных внутренним образом, между приложением и СУБД состоится только один цикл обмена сообщениями. С другой стороны, если функция запускается из программы пользователя, один цикл обмена сообщениями потребуется для каждого доступа. Повышение производительности благодаря переносу функций внутрь СУБД было также продемонстрировано популярным тестовым набором Debit-Credit [ANON85].
Наконец, такие функции могут быть унаследованы и, возможно, переопределены в иерархии наследования. Следовательно, функция HIRE(EMPLOYEE) может быть автоматически применена к коллекции STUDENT EMPLOYEE. Если воспользоваться переопределением, функцию HIRE для коллекции STUDENT EMPLOYEE можно переписать. Словом, использование инкапсулированных функций ведет к повышению производительности и структурным выгодам и потому крайне желательно. Однако сделаем три замечания.
Во-первых, нам кажется, что пользователям следует писать функции на языке высокого уровня (ЯВУ) и получать доступ к базам данных при помощи непроцедурного языка доступа высокого уровня. Язык доступа может быть встроен в ЯВУ средствами препроцессора или реализован как прямое расширение ЯВУ. Другими словами, функции должны выполнять запросы, а не осуществлять навигацию путем использования вызовов интерфейсов СУБД низкого уровня. В предложении 2.1 будет обсуждаться нежелательность использования интерфейсов низкого уровня доступа к данным в программах пользователей; приведенные там соображения также применимы к конструированию функций.
Время от времени появляется необходимость в функциях, которым требуется непосредственный доступ к внутренним интерфейсам СУБД. Реализация таких функций станет нарушением сформулированной выше заповеди, гласящей, что получать доступ к базе данных следует исключительно при помощи языка запросов. Пример такой функции приведен в [STON90]. Следовательно, прямой доступ к внутренностям системы должен стать допустимым, но крайне нежелательным способом написания функций.
Содержание Назад Вперед