СТАТЬЯ
10.07.00

ROM: Объектно-ориентированный интерфейс
к СУБД RDM++ и Velocis фирмы Centura

Большаков Сергей Алексеевич,
к.т.н., доцент

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

Приятным исключением из правил является программный продукт фирмы Centura/Raima - ROM (Raima Object Manager), который представляет собой объектно-ориентированный интерфейс (систему классов) для встраиваемой СУБД RDM (см. статью) и для выделенного сервера БД Velocis (см. статью). Отличительной способностью ROM является наглядность и простота в использовании, но самое важное с нашей точки зрения - это высокая производительность, для достижения которой авторы программного продукта решили опираться на самый нижний уровень функций взаимодействия с данными. В частности, используется прямой метод доступа к данным на основе специального объекта - адреса в БД (DbAddr).

С помощью ROM ускоряется разработка информационных приложений, повышается их надежность. ROM инкапсулируют хранение и выборку объектов, обеспечивает навигацию по базам данных, упрощает работу с записями, их поиск и модификацию. В целом, ROM можно рассматривать как "посредника" между клиентской программой, ее программными модулями интерфейса, и базовым уровнем функций RDM и Velocis engin, которые в свою очередь непосредственно работают с данными. ROM поддерживает набор платформ, соответствующий RDM и Velocis, и включает в состав библиотеки, заголовочные файлы, примеры программ, утилиты и комплект документации. Ниже мы перечислим особенности ROM:

Ниже на рисунке представлена схема взаимодействия клиентских приложений и ROM применительно к многопользовательскому режиму.

Приложения на С++ для RDM посредством ROM взаимодействуют базовым набором функций API (RDM engin). Работа пользователей синхронизируется с помощью LOCK MAMAGER, обращение к которому обеспечивается из ROM. Горизонтальная черта на рисунке обозначает уровень, где заканчивается работа приложения.

Аналогично, но несколько по-другому выглядит взаимодействие приложений на ROM для Velocis СУБД. Схема взаимодействия показана на втором рисунке, расположенном ниже. Приложение на ROM взаимодействуют с клиентским модулем интерфейса. Это обычная библиотека (DLL), которая входит в состав клиентской части продукта Velocis СУБД. Сетевые и серверные модели клиента обеспечивают интерфейс на сети. Специальный модуль - ROM Server Extention поддерживает обслуживание запросов к данным, преобразует их в форму, доступную Velocis СУБД engin, который в свою очередь обеспечивает доступ к данным. В последнее время появились сведения, что Centura/Raima не собирается поддерживать интерфейс в виде модуля ROM Server Extention (для Velocis v3.0). При этом интерфейс для клиентской части должен быть сохранен. Пока не получены точные сведения - не буду утверждать ни то, ни другое. По крайней мере, в бета-документации на Velocis v3.0 никакого упоминания о ROM нет. Что касается RDM, то здесь позиции фирмы по продуктам Centura/Raima пока не изменились.

Все классы, представленные в ROM, можно разделить на две группы: классы приложения и классы для управления ROM. В классах приложения и объектах, создаваемых на их основе, описываются структуры записей, баз данных (ROM обеспечивает множественный доступ к БД) и задач пользователя. Эти классы автоматически генерируются (их каркас) при создании БД. В дальнейшем описания этих классов может быть изменено. В классах управления описываются элементы доступа к данным (ключи, наборы, транзакции и т.д.), которые используются для навигации по БД и манипулированию записями. Структура классов ROM приведена на третьем рисунке, расположенном ниже. К классам первой группы, а на рисунке они показаны справа, относятся базовые классы: AppObj - для записей; AppDb - для БД и AppTask - для задач.

Классы управления расположены на рисунке слева и включают следующие основные: KeyObj- для ключей; SetObj- для наборов; StoreObjArray - для массивов объектов; Qtas

и OmQuery - для запросов; GroupLock - для блокировок; TransAction - для транзакций; OmBlob - для работы с графическими объектами; Polymorph- для определения полиморфизма объектов.

После генерирования стандартных классов, которые определены в приложении и описании БД объекты для работы с записями описываются, к примеру, так:
AuthorObj author; - объект класса AuthorObj.
InfoObj info; - объект класса InfoObj.
InfoObj info(KeyObj(INFO_IDCODE)); - объект с ключом типа INFO_IDCODE.

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

author[FIRST]; - получение первой записи типа AUTHOR.
author++; получение следующий записи типа AUTHOR.
info.Find(infoKey); - поиск записи по ключу в поле
infoKey. author >> info; - поиск записи члена набора (info) по записи владельца (author).
author.NewObj().Okay(); - новая запись типа AUTHOR.
author.Delete() - удаления записи автора из БД info.
DisConnect(author) - отключения записи из набора.

Из примера видно, что данная нотация проста для прочтения и легко запоминается. Используя ROM совместно с RDM и Velocis, вы получаете профессиональный инструмент разработки информационных бизнес приложений самого высокого качества. Разрабатывая свои программы на современных системах С++ (VS, BCPPB), вы сможете сделать свои системы эффективными и удовлетворить требования самого придирчивого заказчика.

Дополнительная информация


Interface Ltd.

Ваши замечания и предложения отправляйте автору
По техническим вопросам обращайтесь к вебмастеру
Документ опубликован: 10.07.00