Назад в раздел
IBM DB2 и объектно-ориентированные информационные системы
IBM DB2 и объектно-ориентированные
информационные системы
К.Лисовский, IBM
Введение
BM Database 2 представляет собой реляционную систему управления базами данных. Она
позволяет пользователям работать с реляционными данными, используя язык структурных
запросов SQL. Первая реализация этой СУБД появилась в 1983 году для операционной системы
MVS [1], и впоследствии была перенесена на многие другие платформы. Еще
более широкую популярность приобрел введенный в DB2 язык SQL, являющийся в настоящий
момент общепринятым для работы с реляционными базами данных в архитектуре
клиент/сервер.
Изначально разработанная для работы с коммерческими данными, DB2 завоевала сильные
позиции на рынке реляционных СУБД как весьма стабильная система, пригодная для
автоматизации организаций любого масштаба.
Стремительный прогресс информационных технологий оказывает весьма существенное влияние на
решаемые СУБД задачи, и DB2 существенно изменилась за время своего существования.
Современные приложения и их требования к СУБД
Если десять-пятнадцать лет назад наиболее важными приложениями СУБД были экономические и
административные базы данных, которые характеризовались достаточно простой моделью
данных, то сегодня ситуация изменилась.
В последнее время в связи с быстрым развитием аппаратного обеспечения все большее значение
приобретают приложения, работающие с большими объемами данных сложной структуры.
Примерами таких приложений являются САПР, CASE, системы мультимедиа, экспертные системы
и т.д. Для них требуется модель данных, которая в наиболее естественной форме выражает как
структуру отдельных объектов, так и отношения между ними. При этом модель данных должна
отражать не только статические отношения между объектами, но и их поведение и ограничения,
которые на них накладываются. Кроме того, модель данных должна быть расширяемой, то есть
приложение должно иметь возможность определять свои собственные типы данных вместе с
соответствующими операциями, и иметь возможность использовать их для определения новых
типов данных, также как и типы данных, предоставляемые системой. Расширяемость является
чрезвычайно важной, так как различные приложения часто требуют различных типов
данных.
Разумеется, значительная часть таких приложений относится к достаточно специальным областям,
и для их реализации используются не базы данных общего применения, а более
специализированные средства. Однако новые технологии все более активно внедряются и в
традиционных для реляционных СУБД областях. Например, все более очевидна становится
тенденция интеграции коммерческих приложений со средствами мультимедиа.
Достоинства реляционного и объектного подхода к построению
информационных систем
При разработке базы данных объекты предметной области должны быть описаны в терминах
предоставляемой СУБД модели данных. Чем лучше природа данных соответствует
предоставляемой модели, тем проще и эффективнее будет схема данных. В случае же
несоответствия схема не будет отражать семантики предметной области, что делает ее сложной и
неэффективной.
Классическая реляционная модель данных идеально подходила для создания баз данных
сравнительно простой структуры и содержащих данные простых типов. Схема типичной
экономической или административной базы данных времен разработки DB2 удобно описывается
при помощи реляционной модели, так как необходимые данные естественно представляются в виде
отношений. При возрастании возможностей аппаратуры реляционные СУБД позволяют увеличить
объем хранимых данных и скорость их обработки, но мало применимы для работы с данными
новых типов и сложной структуры, так как такие данные сложно моделировать при помощи
имеющихся в реляционной модели абстракций.
Для решения таких задач эффективны объектно-ориентированные информационные системы
(ООИС), в которых сущности реального мира представляются как объекты данных [2]. Состояние объектов описывается как значения их атрибутов, а их поведение
(применимые к ним операции) определяется реализацией их методов. Это позволяет представлять
объекты предметной области в естественном для них и семантически значимом виде, что
существенно упрощает разработку и модификацию схемы данных. Реляционная модель данных
может рассматриваться как подмножество объектно-ориентированной, что накладывает серьезные
ограничения на использование реляционных СУБД при построении ООИС. Однако это именно то
подмножество, которое на протяжении последних лет используется в большинстве работающих
реляционных систем, что привело к детальной разработке этой модели. В результате современные
РСУБД отличает совершенство реализаций, обеспечивающее высокую надежность и
производительность, в отличие от объектно-ориентированных баз данных, находящихся сегодня
на ранней стадии своего развития. Более того, существуют задачи [3], для
которых объектный подход не дает преимуществ.
Стратегия IBM
В такой ситуации подход IBM к созданию ООИС заключается в применении технологий, в
наибольшей степени соответствующих специфике решаемой задачи. Так, в системе организации
коллективной разработки программного обеспечения Team Connection используется объектно-
ориентированная СУБД Object Store, специально лицензированная у компании Object Design.
Выбор объектно-ориентированной СУБД определяется при этом необходимостью управлять
сравнительно небольшим объемом данных при их сложной структуре и разнообразии методов
обработки. Иной подход предлагается IBM для построения корпоративных информационных
систем, где приоритетными являются соображения надежности и производительности, а также
совместимости с прежними версиями и промышленными стандартами. Полагая, что при
современном уровне развития информационных технологий такие характеристики может
обеспечить только реляционная СУБД, IBM предлагает для таких систем новую версию DB2,
которая сохраняет всю функциональность реляционной СУБД, но расширяет ее новыми
средствами, выходящими за рамки реляционной алгебры и призванными снять некоторые
ограничения реляционной модели [4,5]. В значительной мере на такой подход
влияет и необходимость защиты инвестиций, сделанных пользователями в реляционные
технологии, и в известной степени он является компромиссным, однако позволяет снять многие
острые проблемы, стоящие перед современными СУБД.
Преодоление ограничений реляционного подхода
Среди наиболее существенных ограничений реляционного подхода можно отметить:
невозможность использования одинакового объектно-ориентированного
подхода при разработке баз данных и приложений, их использующих;
невозможность определения новых типов данных с использованием
предоставляемых системой или ранее определенных типов;
отсутствие механизмов наследования и инкапсуляции;
невозможность связывать с данными операции их обработки.
Первое из перечисленных выше ограничений является препятствием для использования объектного
подхода к разработке приложений РСУБД.
Представление данных в виде объектов, аналогичных реальным объектам предметной области,
при построении ООИС с использованием реляционной СУБД приводит к тому, что возникает
несоответствие модели данных приложения и СУБД. Преобразование объектов в кортежи
связанных таблиц и наоборот может потребовать от разработчика таких усилий, которые сведут
на нет преимущества использования объектной декомпозиции.
Для решения этой проблемы IBM предлагает специальные библиотеки классов для доступа к DB2 с
использованием средств разработки приложений семейства VisualAge. Эта библиотека позволяет
использовать для работы с отношениями DB2 объекты специальных классов С++ или
Smalltalk.
Таким образом упрощается работа с реляционной СУБД с использованием объектно-
ориентированного языка программирования, однако данные в базе данных по-прежнему хранятся
в виде кортежей, что вызывает серьезные накладные расходы на выполнение операций соединения
при сложной структуре объектов [6].
В настоящий момент IBM предлагает средства, частично снимающие и остальные ограничения [7], большинство из которых впервые реализованы в вышедшем в 1995 году
продукте DB2 Common Server.
Типы данных, определяемые пользователем
Эта версия DB2 дает пользователю возможность определять новые типы данных. Новый тип
данных должен соответствовать одному из базовых типов, предоставляемых системой, но для них
может быть определена своя семантика. При этом DB2 способна манипулировать такими данными
в соответствии с определенной для них логикой. Можно задать набор операций, допустимых для
некоторого типа данных, изменив его по сравнению с относящимся к базовому типу.
В DB2 реализован механизм строгой типизации. К данным новоопределенного типа применимы
при этом только те операции, которые определены для него самого, а не для базового класса. Для
СУБД такой подход предоставляет мощный механизм контроля целостности данных.
Так, можно определить тип "почтовый индекс" как производный от целого, но при этом запретить
операции умножения и деления для данных этого типа, как не имеющие смысла, в то время как для
базового класса эти операции справедливы.
Два пользовательских типа данных, производные от одного и того же базового, различаются
системой, что можно использовать для предотвращения некорректных операций с разнородными
данными. Например, определим наряду с упомянутым выше типом "почтовый индекс" другой
производный от целого тип "номер телефона". Попытка сравнить "номер телефона" и "почтовый
индекс" будет восприниматься системой как ошибка, даже если для каждого из этих типов
операция сравнения определена.
Большие объекты
DB2/2 и DB2/6000 предоставляют пользователю такие новые типы данных, как большие бинарные
объекты (BLOBS) и большие текстовые объекты (CLOBS). BLOBS позволяют хранить данные
любого вида размером до двух гигабайт. CLOBS имеют такие же ограничения на размер, но
предназначены для хранения текста в виде последовательности однобайтных или двухбайтных
символов и могут быть связаны с определенной кодовой страницей.
Наличие таких типов данных позволяет встраивать в реляционные таблицы данные
нетрадиционных типов, в первую очередь мультимедиа. Эта возможность приобретает все большее
значение для современных приложений, позволяя хранить, например, фотографии сотрудников в
базе данных отдела кадров, графические изображения, звук, видео, большие тексты. Основное
внимание при этом уделено достижению высокой производительности и надежности, а также
снятию ограничений на использование больших объектов. Так, можно создать таблицу,
включающую свыше десяти полей, содержащих двухгигабайтные объекты.
Существенным достоинством реализации больших объектов в DB2 является применимость к ним
некоторых возможностей SQL. Так, к большим объектам применимы функции для работы со
строками, они могут использоваться с оператором конкатенации и с предикатом LIKE. Эти
средства можно использовать не только для работы с текстовыми объектами, но и с двоичными.
Например функция поиска подстроки может быть полезна как для нахождения заданной фразы в
тексте, так и для поиска фильма, содержащего нужный кадр.
Большие возможности при работе с большими объектами предоставляет определение новых типов
данных и функций. Это делает возможным задать возможность поиска картины по ее элементу,
или операцию сравнения текстов и т.д. Эти преимущества в полной мере используют реляционные
расширители DB2, описанные ниже.
Функции, определяемые пользователем
Функции, определяемые пользователем, позволяют скрывать внутреннее представление данных от
приложения, обеспечивая некоторую инкапсуляцию данных. Они также позволяют определять
новые операции как для базовых типов данных, так и для типов, определяемых пользователем.
Функции, определяемые пользователем, позволяют достичь многократного использования кода за
счет того, что операции, общие для различных приложений, хранятся на сервере, а не включаются
в каждое отдельное приложение.
Для реализации этих функций используются языки программирования, а для их регистрации в
СУБД - введенный в язык определения данных оператор CREATE FUNCTION. Фактически этот
оператор связывает пользовательскую функцию с конкретной программой, выполняемой при
вызове этой функции. Использование пользовательских функций вместо непосредственного
доступа к данным может обеспечить некоторую инкапсуляцию данных, что можно использовать
для того, чтобы скрыть от пользователя их внутреннюю структуру.
Кроме того, DB2 поддерживает механизм перегрузки имен пользовательских функций,
аналогичный применяемому в ООБД, однако не позволяет связывать функции с конкретными
элементами данных, как связаны методы и объекты при объектном подходе.
Дополнительную гибкость функциям, определяемым пользователем, придает способность
одновременно работать как с данными DB2, так и другими данными, как, например, файлами,
электронной почтой и др.
Возможны два варианта взаимодействия функций, определяемых пользователем, с сервером DB2.
Первый заключается в том, что функция имеет прямой доступ к БД, что позволяет достичь
максимальной производительности, но представляет собой потенциальную угрозу
работоспособности сервера и целостности данных.
Во втором варианте функция выполняется как отдельный от сервера БД процесс, что обеспечивает
защиту данных и СУБД, но снижает производительность.
Пользователь может выбирать оптимальный для своей задачи подход в зависимости от ее
специфики.
Триггеры
Триггеры определяют набор операций, которые выполняются при возникновении определенных
событий в базе данных, например при обновлении таблицы.
Триггеры могут использоваться для выполнения функций, которые при объектно-
ориентированном подходе выполняются методами (например, проверка корректности вводимых
значений), или конструктором (присвоение значений при создании новой записи).
Использование триггеров позволяет сделать данные "активными", моделировать не только
структуру и свойства, но и поведение хранимых в БД объектов данных.
Реляционные расширители
Хорошим примером применения перечисленных новых возможностей являются реляционные
расширители DB2 (DB2 Relational Extenders). Они предоставляют широкие возможности для
работы с нетрадиционными данными, используя возможность определения пользовательских
типов данных и функций. Для хранения мультимедиа данных расширители используют
поддерживаемые DB2 большие объекты, а для поддержания целостности по ссылкам -
триггеры.
В настоящее время существует пять реляционных расширителей, позволяющих работать с
изображениями, сложными текстовыми документами, видео, аудио, и даже с отпечатками
пальцев.
Заключение
Круг задач, которые можно решать, используя объектные расширения DB2, существенно увеличен
по сравнению с классическим реляционным подходом. Заимствовав из объектно-ориентированной
модели наиболее необходимые для современных приложений элементы, DB2 сохранила все
достоинства реляционной СУБД. Это позволяет использовать при построении корпоративных
информационных систем на ее основе как реляционный, так и объектно-ориентированный
подход.
Литература
К.Дэйт. Руководство по реляционной СУБД DB2., М.: Финансы и статистика, 1988.
Г.Буч. Объектно-ориентированное проектирование с примерами применения.
М.: Конкорд, 1992.
T.Moynihan. Objects Versus Functions in User-Validation of Requirements: Which Paradigm Works
Best? Proceedings of the International Conference on Object Oriented Information Systems, 1994.
Object Oriented Applications Using Relational Databases/ IBM International Technical Support
Centers, 1994.
IBM White Pare. Object Support and the DB2 Family. Data Management Solutions, 1994/
К.Вон. Технология объектно-ориентированных баз данных. Открытые системы, осень 1994.
Sean Brady. DB2 V2 Technical Overview/ Proceedings of the IDUG 4th Annual Conference, 1995,
V.1, p.145.
|