Общие понятия объектно-ориентированного подхода к разработке СУБД

Поддержка динамической информации и темпоральных запросов

Обычные реляционные БД хранят мгновенный снимок модели предметной области. Любое изменение в момент времени t некоторого объекта приводит к недоступности состояния этого объек­та в предыдущий момент времени. На самом деле в большинстве развитых СУБД предыдущее состояние объекта сохраняется в жур­нале изменений, но возможности доступа к нему со стороны пользователя нет.

Конечно, можно ввести в хранимые отношения временной ат­рибут и поддерживать его значения на уровне приложений. В боль­шинстве случаев так и поступают. Так, в стандарте SQL появились специальные типы данных: date и time. Но в таком подходе имеют­ся недостатки: СУБД не знает семантики временного поля отно­шения и не может контролировать корректность его значений. В связи с этим появляется дополнительная избыточность хране­ния (предыдущее состояние объекта хранится и в основной БД, и в журнале изменений).

Существует отдельное направление исследований и разрабо­ток в области так называемых темпоральных БД, где исследуются вопросы моделирования данных, языки запросов, организация данных во внешней памяти и т.д. Основные темпоральные систе­мы на том принципе, что для любого объекта данных, созданного в момент времени t1 и уничтоженного в момент времени t2, в БД сохраняются (и доступны пользователям) все его состояния во временном интервале [t1,t2].

Создание прототипов темпоральных СУБД обычно выполня­ется на основе некоторой реляционной СУБД в виде надстройки над реляционной системой.

ГЛАВА 15. ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ СУБД

Создание объектно-ориентированных баз данных началось в се­редине 1980-х гг. Наиболее активно ООБД развиваются в после­дние годы.

Развитие ООБД определяется, прежде всего, потребностями практики — необходимостью разработки сложных информацион­ных прикладных систем.

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

Что касается связи с предыдущими работами в области БД, то, на наш взгляд, наиболее сильное влияние на развитие ООБД оказывают проработки реляционных СУБД и создаваемое на их основе семейство БД, поддерживающих управление сложными объектами. Кроме того, исключительное влияние на идеи и кон­цепции создания ООБД оказало семантическое моделирование данных. Свое влияние оказывает также развитие параллельно с ООБД дедуктивных и активных БД.

В наиболее общей постановке объектно-ориентированный под­ход базируется на следующих концепциях:

• объект и идентификатор объекта;

• атрибут и метод;

• класс;

• иерархия и наследование классов.

Любая сущность реального мира в объектно-ориентированных языках и системах моделируется в виде объекта. Любой объект при своем создании получает генерируемый системой уникальный идентификатор, который связан с объектом все время его суще­ствования и не меняется при изменении состояния этого объекта.

Каждый объект характеризуют состояние и поведение. Состоя­ние объекта — набор значений его атрибутов. Поведение объекта — набор методов (программный код), оперирующих его состоянием. Значение атрибута объекта — это тоже некоторый объект или мно­жество объектов. Состояние и поведение инкапсулированы в объек­те. Взаимодействуют объекты на основе передачи сообщений и выполнения соответствующих методов.

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

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

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

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

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

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

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

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

Второй аспект — потребность в механизме определения разно­го рода семантических связей между объектами разных классов. Фактически это означает требование полного распространения на ООБД средств семантического моделирования данных. Потребность в использовании абстракции ассоциирования отмечается и в свя­зи с использованием ООБД в сфере автоматизированного проек­тирования.

Третий аспект связан с пересмотром понятия класса. В контек­сте ООБД оказывается более удобным рассматривать класс как множество объектов данного типа, т.е. одновременно поддержи­вать понятия и типа, и класса объектов.