УДК 658.5.011.56

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

базами данных в надсТройке

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

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

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

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

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

– открытая архитектура;

– модульность;

– библиотека базовых классов для разработки;

– средства отправки и получения сообщений;

– механизмы визуализации данных;

– средства оптимизации доступа к объектам;

– средства определения метаопераций.

Построение открытой архитектуры

НЕ нашли? Не то? Что вы ищете?

средствами объектно-ориентированной

парадигмы

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

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

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

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

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

В качестве основообразующей для методологии построения открытой архитектуры автором были избраны объектно-ориентированная модель, реализованная в среде быстрой разработки приложений Borland 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. Базовые классы для объектов данных:

– 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.

Статья представлена кафедрой прикладной информатики факультета информатики Томского государственного университета, поступила в научную редакцию номера 3 декабря 2001 г.