Функции, определяемые пользователем
Функции, определяемые пользователем, позволяют скрывать внутреннее представление данных от
приложения, обеспечивая некоторую инкапсуляцию данных. Они также позволяют определять
новые операции как для базовых типов данных, так и для типов, определяемых пользователем.
Функции, определяемые пользователем, позволяют достичь многократного использования кода за
счет того, что операции, общие для различных приложений, хранятся на сервере, а не включаются
в каждое отдельное приложение.
Для реализации этих функций используются языки программирования, а для их регистрации в
СУБД - введенный в язык определения данных оператор CREATE FUNCTION. Фактически этот
оператор связывает пользовательскую функцию с конкретной программой, выполняемой при
вызове этой функции. Использование пользовательских функций вместо непосредственного
доступа к данным может обеспечить некоторую инкапсуляцию данных, что можно использовать
для того, чтобы скрыть от пользователя их внутреннюю структуру.
Кроме того, DB2 поддерживает механизм перегрузки имен пользовательских функций,
аналогичный применяемому в ООБД, однако не позволяет связывать функции с конкретными
элементами данных, как связаны методы и объекты при объектном подходе.
Дополнительную гибкость функциям, определяемым пользователем, придает способность
одновременно работать как с данными DB2, так и другими данными, как, например, файлами,
электронной почтой и др.
Возможны два варианта взаимодействия функций, определяемых пользователем, с сервером DB2.
Первый заключается в том, что функция имеет прямой доступ к БД, что позволяет достичь
максимальной производительности, но представляет собой потенциальную угрозу
работоспособности сервера и целостности данных.
Во втором варианте функция выполняется как отдельный от сервера БД процесс, что обеспечивает
защиту данных и СУБД, но снижает производительность.
Пользователь может выбирать оптимальный для своей задачи подход в зависимости от ее
специфики.