Элементы объектно-ориентированной системы управления базами данных в надстройке над реляционной системой управления базой данных

объектно-ориентированные базы данныхРаскрываются основы технологии построения информационных систем с возможностью их простого модульного расширения без перекомпиляции исходного кода и элементами объектно-ориентированных систем управления базами данных. Технология построения основана на использовании реляционных СУБД.

А.А. Макунин

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

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

На наш взгляд, основополагающими принципа­ми построения ООСУБД в виде подобной надст­ройки могут являться:

  • открытая архитектура;
  • модульность;
  • библиотека базовых классов для разработки;
  • средства отправки и получения сообщений;
  • механизмы визуализации данных;
  • средства оптимизации доступа к объектам;
  • средства определения метаопераций.

 

Построение открытой архитектуры средствами объектно-ориентированной парадигмы

Одним из важных свойств современной инфор­мационной системы, обусловливающих ее приспо­собляемость к изменяющейся ситуации, является открытость архитектуры. Открытая архитектура по­зволяет без перекомпиляции исходного кода всей системы изменять и расширять функциональность программного комплекса в целом или его частей. Использование принципов открытой архитектуры приобретает еще большую актуальность при работе со сложными по структуре базами данных, особен­но на этапе разработки, опытной эксплуатации и дальнейшего развития, в ходе которых схема базы, а равно и компоненты системы, отвечающие за ото­бражение данных, претерпевают порой кардиналь­ные изменения.

В целом открытая архитектура всегда накладывает ограничения и требует наличия соглашений на со­ставляющие ее компоненты. Как средство задания таких ограничений весьма подходит иерархия клас­сов, на верхних уровнях абстракции которой удобно задавать общие свойства и методы работы с данными.

Общеизвестно, что жизненный цикл любой по­лезной и эффективной системы может состоять из череды этапов разработки и эксплуатации. Если при этом используются классические подходы, то подразумевается, что по окончании этапа разработ­ки пользователи получают новую версию системы в целом. Использование же открытой архитектуры и компонентного подхода позволяет легко добавлять новые компоненты и заменять старые на усовер­шенствованные и соответствующие новым, измени­вшимся требованиям к информационной системе.

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

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

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

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

Базовая библиотека ядра представляет собой на­бор модулей:

  • Eclasses, в котором содержатся описания и ре­ализации общих классов системы;
  • Env, реализующий аналог переменных окружения, общих для информационной системы в целом;
  • ObjectManager, обеспечивающий эффективное управление объектами;
  • ModuleManager, отвечающий за загрузку и вы­грузку из оперативной памяти пакетов (package) с компонентами;
  • NavigatorManager, содержащий механизмы уп­равления средством визуализации данных;
  • Nutilities, представляющий собой набор общих утилит;
  • MessageManager, обеспечивающий механизмы рассылки сообщений и подписки на их получение.

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

В системе реализованы парные функции регист­рации и удаления из системы класса, сервиса, навигатора, странички свойств:

  • function RegisterEntityClass;
  • function UnregisterEntityClass;
  • function RegisterEntityNavigator;
  • function UnregisterEntityNavigator;
  • function RegisterEntityService;
  • function UnregisterEntityService;
  • function RegisterPropertyPage;
  • function UnregiseterPropertyPage.

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

 

Компоненты для манипуляций с данными

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

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

Аналогичный вариант предложен автором в разра­ботанной технологии построения автоматизированных рабочих мест (АРМ) [1]. Поэтапно разработка приложений выглядит в виде последовательности операций:

  • выполнение проектных работ со схемой базы данных в реляционной СУБД;
  • проектирование классов, соответствующих объектам предметной области;
  • кодирование классов;
  • сборка модулей-компонентов.

В результате получается набор модулей, содержащих классы, обычно по паре на каждый вид объекта пред­метной области. Один отвечает за отображение множества объектов и операции над ним, а второй за визуали­зацию и операции над единичным экземпляром.

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

Пример: для информационной системы магази­на требуется отражение покупок, для чего создают­ся три класса: класс множества покупок; класс эк­земпляров покупок; класс множества товарных по­зиций покупок. Классы основаны на базовых из библиотеки технологического ядра и поэтому легко поддаются управлению через обобщенные и опи­санные в базовых классах интерфейсы.

 Иерархия классов

Рис. 1. Иерархия классов


Иерархия классов показана на рис.1. Базовые классы для объектов данных: 

  • TEntity - обеспечивает наиболее общие меха­низмы связи между непосредственно данными и формами их представления;
  • TEntityClass - реализует обобщенный интер­фейс операций для объектов, представляющих мно­жество сущностей реального мира;
  • TEntityInstance - содержит реализацию мето­дов для работы с отдельным экземпляром сущности реального мира;
  • TEntityContainer - обеспечивает средства для работы с объектами-контейнерами.

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

Как показала практика, помимо классов для рабо­ты с отдельными экземплярами или множествами эк­земпляров, требуются еще специфические объекты, проявляющие свойства и тех и других, т.е. множеств объектов, имеющих собственные атрибуты. Приме­рами таких объектов могут служить иерархические классификаторы. Принципы оптимизации работы с такими классификаторами отражены в [2].

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

Технологически компоненты манипуляции с объ­ектами выполнены в виде форм, которые встраива­ются в средство отображения.

 

Визуализация данных

В предлагаемой технологии построения информаци­онных систем используются два механизма отображения данных.

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

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

В настоящее время в технологии реализованы варианты связей, раскрывающих:

  • отношение классификации (есть некоторый);
  • отношение экземпляризации;
  • связь по внешнему ключу.

Визуализация при помощи второго механизма осуществляется специальным компонентом - нави­гатором (рис. 2), управляющими параметрами для которого являются: список классов, схема навига­ции, классы объектов, формы объектов.

Рис. 2. Внешний вид навигатора

Схема навигации задает конфигурацию автома­тизированного рабочего места и содержит в себе правила раскрытия ветвей дерева навигации в виде набора кортежей <КЛАСС ПРЕДОК, КЛАСС ПО­ТОМОК, ТИП СВЯЗИ, ПАРАМЕТРЫ>.

Навигатор реализует механизмы произвольного доступа с использованием механизмов оптимиза­ции работы с объектами.

 

Оптимизация доступа к объектам

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

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

Доступ к оптимизированным средствам поиска объектов возможен через переменную Objects клас­са TEObjects и ряд его методов, объявленных в мо­дуле ObjectManager:

  • procedure AddObjectReference;
  • function FindObjectReference;
  • procedure FindObjectReferences;
  • procedure ReleaseObjectReference;
  • procedure ReleaseListObjectsReference;
  • procedure AddClassObjectReference;
  • function FindClassObjectReference;
  • procedure FindClassObjectReferences;
  • procedure ReleaseClassObjectReference.

 

Метаоперации

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

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

 

Преимущества применения технологии

Предложенные принципы позволяют:

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

Описанная выше технология используется в на­стоящее время при разработке информационной системы «Реестр муниципальных контрактов» для администрации г. Томска.

 

ЛИТЕРАТУРА

  1. Макунин А.А., Шилов В.В. Применение модульной технологии разработки автоматизированных рабочих мест в ГИС-приложениях // Геоинформатика-2000: Труды Международной научно-практической конференции. Томск: Изд-во Том. ун-та, 2000. С. 84-87.
  2. Макунин А.А. Особенности использования иерархических классификаторов в реляционных СУБД // Новые технологии и комплексные решения: наука, образование, производство: Материалы Всероссийской научно-практической конференции (19 октября 2001 г., Анже­ро-Судженск). Ч. 6: Информатика. Кемерово: КемГУ, 2001. С. 48-50.

Статья представлена кафедрой прикладной информатики факультета информатики Томского государственного университета.

Вас заинтересует / Intresting for you:

Базы данных - презентация к ку...
Базы данных - презентация к ку... 3460 просмотров Светлана Комарова Wed, 10 Oct 2018, 17:32:17
Инструментальная диалоговая си...
Инструментальная диалоговая си... 1555 просмотров Ирина Светлова Sun, 24 Mar 2019, 06:01:30
Перенос корпоративных баз данн...
Перенос корпоративных баз данн... 2775 просмотров Дэн Fri, 27 Sep 2019, 07:52:18
База данных как объект правово...
База данных как объект правово... 1567 просмотров Денис Wed, 27 Mar 2019, 03:16:24
Войдите чтобы комментировать