Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000259.doc
Скачиваний:
27
Добавлен:
30.04.2022
Размер:
1.27 Mб
Скачать

2.6. Объектно-ориентированная модель

В сфере моделирования данных наиболее активно развиваются объектно-ориентированные базы данных. Предметная область моделируется как множество классов взаимодействующих объектов. Каждый объект характеризуется набором свойств, которые являются его характеристиками, и набором методов работы с этим объектом. Работать с объектом можно только с использованием его методов. Атрибуты объекта могут принимать определенное множество допустимых значений, набор конкретных значений атрибутов объекта определяет его состояние. Используя методы работы с объектом, можно изменять значение его атрибутов и тем самым изменять состояние самого объекта. Множество объектов с одним и тем же набором атрибутов и методов образует класс объектов. Объект должен принадлежать только одному классу (если не учитывать возможности наследования). Допускается наличие примитивных предопределенных классов, объекты-экземпляры которых не имеют атрибутов: целые, строки и т.д. Класс, объекты которого могут служить значениями атрибута объектов другого класса, называется доменом этого атрибута.

Одной из перспективных черт объектно-ориентированных моделей данных является принцип наследования. Допускается порождение нового класса на основе уже существующего класса, и этот процесс называется наследованием. В этом случае новый класс, называемый подклассом существующего класса (суперкласса), наследует все атрибуты и методы суперкласса. В подклассе, кроме того, могут быть определены дополнительные атрибуты и методы. Различаются случаи простого и множественного наследования. В первом случае подкласс может определяться только на основе одного суперкласса, во втором случае суперклассов может быть несколько. Если в языке или системе поддерживается единичное наследование классов, то набор классов образует древовидную иерархию. При поддержании множественного наследования классы связаны в ориентированный граф с корнем, называемый решеткой классов. Объект подкласса считается принадлежащим любому суперклассу этого класса.

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

Возникло направление, которое предполагает возможность хранения объектов внутри реляционной БД. Необходимость работы с объектами потребовала расширения стандарта языка SQL. Частично это уже сделано в новом стандарте SQL3.

Многие фирмы–разработчики коммерческих СУБД обратились к объектным технологиям и доработали свои СУБД. Например, фирмы IBM и Oracle добавили объектную надстройку над реляционным ядром системы (продукты DB2 и ORACLE). Фирма Informix приобрела объектно-ориентированную СУБД Illustra и встроила ее в свою СУБД.

Стандартизованная объектно-ориентированная модель описана в рекомендациях стандарта ODMG-3 (Object Database Management Group – группа управления объектно-ориентированными базами данных).

В 1991 году была сформирована группа Object Database Management Group (ODMG), перед которой была поставлена цель построить стандарты для объектно-ориентированных баз данных (ООБД). В 1993 году эта группа предложила стандарт для ООБД, названный ODMG-3, который включал:

- объектную модель Object Data Model (ODM);

- язык определения объектов Object Definition Language (ODL);

- объектный язык запросов Object Query Language (OQL);

- интерфейсы языков программирования (С++ и других).

Реализовать в полном объеме рекомендации ODMG-3 пока не удается. В настоящее время насчитывается свыше 300 объектно-ориентированных СУБД (ООСУБД). Сведения о некоторых из них приведены в табл. 2.1.

Таблица 2.1

Характеристики некоторых ООСУБД

Фирма –

производитель

Название ООСУБД

Средства

разработки

Подход

к разработке

Objectivity

Objectivity/DB

C, C++, SQL, Java

Расширение объектно-ориентированных библиотек классов

Poet Software

Poet

C, C++, ODBC, Java

Object Design

Object Store

C, C++, Java

Ontos Inc.

C++, Java

Versant Object Technology

Ontos DB, Versant

C++, Java

Computer Associate

Jasmine

C++, Java

НПЦ «Интеллект Плюс»

ODB-Jupiter

C++

O2 Technology

O2

C++, Java

Вставка объектно-ориентиро-ванного языка БД в обычный базовый язык

GemStone Inc.

GemStone

C++, Java

Расширение языка (С++) возможностями работы с БД

Продолжение табл. 2.1

InterSystems

Cache

Semantic Information Manager, Cache ObjectScript

Новый язык базы данных или модели данных

Для иллюстрации ключевых идей рассмотрим несколько упрощенную модель объектно-ориентированной БД.

Структура объектно-ориентированной БД графически представима в виде дерева, узлами которого являются объекты. Свойства объектов описываются некоторым стандартным типом (например, строковым – string) или типом, конструируемым пользователем (определяется как class).

Значением свойства типа string является строка символов. Значение свойства типа class есть объект, являющийся экземпляром соответствующего класса. Каждый объект-экземпляр класса считается потомком объекта, в котором он определен как свойство. Объект-экземпляр класса принадлежит своему классу и имеет одного родителя. Родовые отношения в БД образуют иерархию объектов.

Пример логической структуры объектно-ориентированной БД для библиотеки приведен на рис. 2.9.

Здесь объект типа БИБЛИОТЕКА является родительским для объектов-экземпляров классов АБОНЕНТ, КАТАЛОГ и ВЫДАЧА. Различные объекты типа КНИГА могут иметь одного или разных родителей. Объекты типа КНИГА, имеющие одного и того же родителя, должны различаться по крайней мере инвентарным номером (уникален для каждого экземпляра книги), но имеют одинаковые значения свойств: шифр книги, УДК, название и автор.

Рис. 2.9. Логическая структура БД библиотеки

Логическая структура объектно-ориентированной БД внешне похожа на структуру иерархической БД. Основное отличие между ними состоит в методах манипулирования данными.

Для выполнения действий над данными в рассматриваемой модели БД применяются логические операции, усиленные объектно-ориентированными механизмами инкапсуляции, наследования и полиморфизма. Ограниченно могут применяться операции, подобные командам SQL (например, для создания БД).

Создание и модификация базы данных сопровождается автоматическим формированием и последующей корректировкой индексов (индексных таблиц), содержащих информацию для быстрого поиска данных.

Рассмотрим кратко понятия инкапсуляции, наследования и полиморфизма применительно к объектно-ориентированной модели БД.

Инкапсуляция – выделение класса с доступом к нему через свойства и методы. Инкапсуляция ограничивает область видимости имени свойства пределами того объекта, в котором оно определено. Так, если в объект типа КАТАЛОГ добавить свойство, задающее телефон автора книги и имеющее название телефон, то мы получим одноименные свойства у объектов АБОНЕНТ и КАТАЛОГ. Смысл такого свойства будет определяться тем объектом, в котором оно инкапсулировано.

Наследование – трансформация класса путем изменения свойств и методов с помощью методов, называемых конструктором и деструктором. Все классы строятся по иерархическому принципу с происхождением от некоторого исходного класса.

Наследование распространяет область видимости свойства на всех потомков объекта. Так, всем объектам типа КНИГА, являющимся потомками объекта типа КАТАЛОГ, можно приписать свойства объекта-родителя: шифр книги, УДК, название, автор. Если необходимо расширить действие механизма наследования на объекты, не являющиеся непосредственно родственниками (например, между двумя потомками одного родителя), то в их общем предке определяется абстрактное свойство типа abs. Так, определение абстрактных свойств билет и номер в объекте БИБЛИОТЕКА приводит к наследованию этих свойств всеми дочерними объектами АБОНЕНТ, КНИГА и ВЫДАЧА. Не случайно поэтому значения свойства билет классов АБОНЕНТ и ВЫДАЧА, показанных на рисунке, будут одинаковыми – 00015.

Полиморфизм позволяет использовать метод с одним и тем же именем как в базовом, так и в производных классах. Полиморфизм в объектно-ориентированных языках программирования означает способность одного и того же программного кода работать с разнотипными данными. Другими словами, он означает допустимость в объектах разных типов иметь методы (процедуры или функции) с одинаковыми именами. Во время выполнения объектной программы одни и те же методы оперируют с разными объектами в зависимости от типа аргумента. Применительно к нашей объектно-ориентированной базе данных полиморфизм означает, что объекты класса КНИГА, имеющие разных родителей из класса КАТАЛОГ, могут иметь разный набор свойств. Следовательно, программы работы с объектами класса КНИГА могут содержать полиморфный код.

Поиск в объектно-ориентированной БД состоит в выяснении сходства между объектом, задаваемым пользователем, и объектами, хранящимися в БД. Определяемый пользователем объект, называемый объектом-целью (свойство объекта имеет тип goal), в общем случае может представлять собой подмножество всей хранимой в БД иерархии объектов. Объект-цель, а также результат выполнения запроса могут храниться в самой базе.

Приведем основные характеристики ООБД, базирующиеся на объектно-ориентированном подходе.

1. В качестве значения столбца может быть использован произвольный кортеж. Иными словами, столбец может быть другой таблицей. Таким образом, создается возможность реализации таблиц с нелинейной структурой.

2. Процедура манипуляции данными позволяет присоединять процедуры, определенные значениями столбцов.

3. Данные столбцов могут наследоваться.

4. Элементами отношений могут быть не только отдельные элементы, но и множества.

5. Формируются классы данных, которые организуют столбцы в иерархию.

Базовым языком ООБД чаще всего является С++. Для работы с ООБД разрабатывается новый вариант языка запросов SQL.

В технологии разработки ООБД конкурирует два направления:

- Distributed Object Linking and Embedding (OLE) фирмы Microsoft;

- Common Object Request Broker Architecture (CORBA) группы OBDMG, поддерживаемая фирмами IBM, Novell, DЕС.

Таким образом, чтобы воспользоваться объектно-ориентированным подходом в построении БД, необходимо:

- провести инкапсуляцию данных, т.е. выделить классы и объекты;

- определить возможные виды структуры реализуемых таблиц;

- создать наследование классов данных;

- обеспечить полиморфизм.

Основным достоинством объектно-ориентированной модели данных в сравнении с реляционной является возможность отображения информации о сложных взаимосвязях объектов. Объектно-ориентированная модель данных позволяет идентифицировать отдельную запись базы данных и определять функции их обработки.

Недостатками объектно-ориентированной модели являются высокая понятийная сложность, неудобство обработки данных и низкая скорость выполнения запросов.

В 90-е годы существовали экспериментальные прототипы объектно-ориентированных систем управления базами данных. В настоящее время такие системы получили широкое распространение, в частности, к ним относятся следующие СУБД: POET (POET Software), Jasmine (Computer Associates), Versant (Versant Technologies), Q2 (Ardent Software), ODB-Jupiter (научно-производственный центр “Интелтек Плюс”), а также Iris, Orion, Postgres.