Raima Database Manager ++ (RDM) - новое рождение СУБД, встраиваемых в приложения
Большаков С. А.
Выбор средств разработки информационных систем для многих фирм в настоящее время является очень актуальной задачей. С одной стороны, желательно иметь средства разработки приложений и взаимодействия с базами данных более высокого уровня (средства программировании 4GL) - это позволяет сократить сроки разработки, облегчить поиск ошибок и, в конечном счете, найти потребителя разработанного программного обеспечения. С другой стороны, для достижения перечисленных выше целей необходимо в максимальной степени удовлетворять пользовательские требования, а это - высокая производительность, компактность, эффективный пользовательский интерфейс и, несомненно, возможность влиять на механизмы доступа к данным, включая их организацию. В большинстве случаев средства разработки высокого уровня (4GL) в силу своих конструктивных особенностей, таких как скрытость механизмов организации и хранения данных, отработка запросов в едином сервере БД и других, не отвечают требованиям второй группы.
Традиционно обеспечение гибкого интерфейса и эффективных механизмов доступа к данным выполнялось встраиваемыми в приложения СУБД, представляющими собой набор статических и динамических библиотек, работающих совместно с приложениями. Однако большинство подобных систем по ряду причин морально устарели: предназначены для операционных систем (ОС), которые уже не поддерживаются (ДОС); их приемлемые реализации для новых ОС не находят применения или отсутствуют; они ориентированы на устаревшие модели построения интерфейса и механизмы доступа к данным. Встроенные СУБД, которые изначально были ориентированы только на универсальные и хорошо проработанные механизмы работы с данными, в которых принципиально отсутствовали процедуры построения интерфейса, в этом случае приобретают новое значение. Поскольку концепция их построения такова, что они могут подключаться практически к любым новым современным системам программирования, таким как Builders и средствам уровня 4GL, эти СУБД занимают свою нишу средств разработки информационных систем..
Ярким представителем систем подобного класса, на самим деле чуть ли не единственным на российском рынке, является встраиваемая СУБД RDM++ (Raima Database Manager)предлагаемая и сопровождаемая фирмой Centura. Эта СУБД была разработана фирмой Raima еще в 1987 году и носила первоначальное название dbVista, под которым известна многим российским разработчикам и руководителям проектов. Сейчас, когда Raima влилась в фирму Centura, этот продукт приобрел особую популярность. Ниже мы рассмотрим особенности, принципы построения и состав программной системы. Здесь же отметим ключевые аспекты, которые являются основой нашего мнения о том, что продукты данного класса и в будущем будут играть важную роль в развитии информационных технологий (ИТ). Это следующие свойства СУБД RDM++:
В первую очередь это высокое, даже высочайшее быстродействие встраиваемой СУБД RDM. Оценки и измерения показывают, что даже по сравнению с очень быстрыми приложениями на CA Clipper, выигрыш составляет десятки раз (30-50), что достигается за счет хорошо проработанных и оригинальных методов доступа к данным. Ни в какое сравнение с RDM не идут временные характеристики, получаемые для SQL СУБД, даже очень мощных.
Во-вторых, это наличие NON SQL интерфейса навигации по таблицам БД. Для ряда задач, особенно оперативного ввода и обработки данных, такая возможность может стать определяющей при выборе СУБД. Наряду с традиционными методами навигации в RDM предусмотрены методы доступа к данным, основанные на SQL запросах (DB_QUERY - об этой компоненте мы расскажем ниже).
В-третьих, для многих информационных систем чисто реляционная модель данных, лежащая в основе SQL СУБД, не является приемлемой, так как на дополнительные связи уходит много ресурсов (места в БД, время формирования выборок и т.п.). Сетевая модель данных, предлагаемая в RDM, в совокупности с эффективными процедурами доступа в наборах (Sets), позволяет значительно упростить модель данных, оптимизировать процедуры их организации и хранения.
В-четвертых, компактность. Новые ИТ, ориентированные на интеграцию данных и малых (и сверхмалых) вычислительных устройств, таких как мобильные телефоны и портативные компьютеры, не предназначены для работы приложений, построенных для мощных СУБД. В RDM существует поддержка многих платформ и конфигураций вычислительных средств, в том числе и таких как Windows CE. Эти системы способны работать даже на микроминиатюрных компьютерах. Возможность поддержки распределенных технологий, получивших название технологии "пятого поколения" или eSNAP- технологии (смотрите информацию на сайтах interface.ru и centurasoft.com) является отличительной чертой RDM. Здесь СУБД встраивается в приложения клиента, работающего на микроминиатюрном компьютере.
В-пятых, наличие объектно-ориентированного интерфейса, присущего всем современным средствам доступа к данным. Объектно-ориентированный интерфейс в RDM реализован в виде отдельного пакета программ - ROM (Raima Object Manager). Ранее этот пакет поставлялся отдельно, а теперь входит в состав продукта RDM++. Отличительной чертой ROM, как системы классов - типов обработки данных, является направленность на пользователя-программиста. Это отражается в удобной системе перегруженных операций (процедуры навигации перегружаются, например, операторами ++ - переход к следующей записи) и первоначальной направленности сохранения высокой производительности. Для достижения последнего, в ROM в механизмах доступа к данным использована прямая адресация дискового пространства. В дополнение к сказанному отметим, что интуитивно понятный объектно-ориентированный интерфейс значительно расширяет возможности сетевых моделей RDM. В RDM реализованы новые варианты связей между записями в БД, в частности, реализована связь M к N (M:N).
И, наконец, мобильность. В этом, по-видимому, продукту RDM нет равных, так как изначально продукт вообще предлагался в виде исходных текстов программ, настраиваемых для перекомпиляции для любых платформ и любых систем программирования. Это относилось не только к главным библиотекам системы, но и ко всем вспомогательным модулям и утилитам. В настоящее время вы можете заказать и получить версию RDM для любых платформ (от DOS до LINUX) и систем разработки программ: от СИ++ до VB (кроме того Java, Delphi и др.). За дополнительную плату вы и сейчас можете получить все исходные тексты программ, а ROM всегда поставляется в виде исходных текстов и библиотек. Так как основные функции представлены в динамической библиотеке стандарта Windows (Windows DLL), то любые системы программирования обеспечивают стандартный интерфейс к функциям RDM.
Перечень особенностей и свойств можно было бы продолжить, но в данном кратком обзоре мы на этом остановимся. Рассмотрим основные составляющие системы управления БД - RDM. В RDM++ входят:
Система библиотек (DLL или LIB, в зависимости от платформы) и система файлов настройки (INCLUDE).
ROM - библиотеки и исходные тексты для объектно-ориентированного интерфейса (Raima Databasebase Runtime Library - RDRL).
Примеры использования RDM и ROM для разных платформ.
Документация в электронном виде (PDF- формат) и печатном виде.
Утилита для преобразования описаний структур данных в физический формат в виде файлов - DDLP (Databasebase Definition Language Processor).
Утилита инициализации БД - INITDB.
Средство для обеспечения коллективной работы пользователей с данными и их защиты - LOCK MANAGER. Эта компонента устанавливается на одной из машин в сети и обеспечивает совместную работу клиентских приложений на разных компьютерах.
Утилита DBCLRDL - очистки блокировок в случаях сбоев.
Средства импорта и экспорта данных, снабженных специализированным языком - DBIMP и DBEXP.
Средства работы с ключами БД - KEYBUILD, KEYPACK и KEYDUMP.
Интерактивные утилиты просмотра и редактирования БД - IDA и WIDA.
Утилиты проверки БД и данных - DBCHECK и DATDUMP.
Утилита распечатки БД - PRDBD.
Средство реорганизации БД - REVISE. Эта утилита основана на собственном языке и позволяет выполнять все операции реорганизации БД с сохранением информации. С помощью REVISE можно избежать необходимости написания и отладки собственных программ для преобразования базы, а также экспорта и импорта ее содержания. Целостность базы обеспечивается тем, что REVISE не переписывает исходную базу данных. REVISE читает базу, сохраняет преобразуемую информацию в промежуточной рабочей базе и затем записывает преобразованные данные в выходную базу. Исходная база не изменяется. В процессе компиляции REVISE сравнивает словарные файлы исходной и выходной баз. Проверяется корректность преобразования, отличия в схемах, и отчет может быть распечатан. В различных режимах реорганизации данных обеспечивается сохранность данных.
Средство доступа к БД на основе SQL языка, модернизированного для сетевых структур данных - QUERY. Содержит три составляющие: библиотеку функций, включаемую в RDRL; базу данных запросов и интерактивную утилиту WQUERY. QUERY - обеспечивает выполнение изолированных и встроенных запросов к RDM++ базе данных. Поддерживает подмножество Структурированного Языка Запросов (SQL) и содержит команды, позволяющие описать и получить реляционные проекции RDM++ базы для условной выборки и сортировки данных.
Другие утилиты, которые мы не можем осветить в данной статье из-за ограниченности ее объема.
Рассмотрим некоторые особенности СУБД RDM++.
Важными чертами RDM++ являются эффективное использование оперативной и дисковой памяти, компактное хранение данных и встроенные средства обеспечения ссылочной целостности базы. RDM++ включает средства мониторинга производительности, эффективную схему кэширования и предоставляет возможности оптимизации системы для работы практически в режиме реального времени. Регистрация и восстановление транзакций обеспечивают целостность базы даже в аварийных ситуациях. Благодаря средствам повышения устойчивости вероятность появления ошибок в базе из-за сбоев операционной системы или приложений уменьшена.
Многопользовательский режим обеспечивается специальными механизмами, реализацию которых поддерживает специальная утилита в сети - LOCK MANAGER. Эта утилита строит специальные таблицы, выполняет контроль за блокировками записей и их отмену, работает как резидентная задача. LOCK MANAGER - управляет пользователями, используя эффективные и распространенные протоколы NETBIOS, SPX, TCP. Для снятия блокировок в случае аварийных ситуаций и сбоев предусмотрено специальное средство - утилита DBLRDL. Предусматривается защита файлов, страниц и отдельных записей, ведение журналов и поддержка стандартных механизмов транзакций.
Принцип работы RDM достаточно прост. Эта работа состоит из нескольких этапов. Рассмотрим их:
Создание БД. БД описывается на специальном языке DDL, при этом описываются записи, ключи, наборы, а также распределение элементов данных по файлам. Попутно отметим, что это как раз, в дополнении к сказанному, позволяет выполнить процедуру оптимизации хранения данных. Далее с помощью DDLP схема БД компилируется, превращаясь в набор файлов, некоторые их которых используются в программах для обеспечения интерфейса с записями.
С использованием средств программирования (СИ, СИ++, VB и др.) разрабатывается программа, содержащая вызовы функций библиотеки RDM. Функции эти очень просты в использовании и для запоминания их названий. Например: открытие БД - d_open, поиск по ключу d_keyfind, переход к следующей записи - d_recnext, чтение записи - d_recread, запись в БД - d_recwrite и дак далее. Отметим, что можно открыть и работать одновременно сразу с несколькими БД. В проект программной системы подключается библиотека RDM или интерфейсная библиотека для динамических вызовов. После написания и отладки программ приложение готово к применению.
Для работы приложение запускается с обеспечением доступа к динамическим библиотекам по путям поиска программ (path). При работе в многопользовательском режиме, необходимо на одной из машин в сети запустить - LOCK MANAGER, соответствующий операционной системе, и настроить протоколы доступа.
Для реорганизации БД, при необходимости, использовать утилиту REVISE, для импорта и экспорта утилиты DBIMP и DBEXP.
В RDM++ предусмотрены следующие основные классы функций для работы с данными и управления данными:
Функции управления базами данных
Функции чтения записей
Функции записи в БД
Функции поиска записей, в том числе и по ключам
Функции работы с наборами
Функции прямого доступа
Функции управления защитой записей
Функции шифровки и дешифровки записей
И многие другие функции.
При работе с RDM, несомненно, доступны все функции и объекты пользовательского интерфейса, которые имеются в используемой системе программирования. Подбор названий функций (префиксация) практически исключают их совпадение, поэтому программист может спать спокойно. Так как эти функции разработаны и отлажены довольно давно, то уровень их надежности высок, даже при разработке приложений в универсальных языках с указателями (СИ и Паскаль).
Составная часть RDM - ROM, объектно-ориентированный интерфейс, требуют более тщательного внимания и изучения, так как в ROM фактически определен новый универсальный язык описания и управления данными. Как любая система взаимосвязанных классов, он не прост в обучении и осмысливании, но после освоения этого языка, Вы почувствуете все прелести жизни: доступ к сложным структурам данных упростится, программа станет короткой и наглядной.
Несмотря на свою компактность и простоту RDM++ представляет собой программный продукт, ориентированный на профессионала в области программирования. С его помощью можно создавать программные информационные системы самого высокого качества и уровня, отвечающие всем современным требованиям заказчиков и ИТ. Вот некоторые важнейшие характеристики встраиваемой СУБД RDM:
Число полей в записи ограничено только размерами записи
Максимальное число объектов в файле: 16,777,215
Максимальное число файлов в базе: 256
Максимальное число объектов в базе: 4,294,967,040
Максимальное число одновременно открытых баз данных ограничено только оперативной памятью
Необходимая оперативная память - всего 110K
Выбирая RDM++ для своих разработок Вы не ошибетесь. Отметим, что СУБД RDM полностью совместима по функциям и по данным с другим программным продуктом Centurа - выделенным СУБД Velocis. Это также мощное профессиональное средство, позволяющее одновременно обслуживать, как показали последние измерения, до 300 пользователей и обладающее всеми положительными качествами RDM.