УДК 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 г.




