1. Что такое современный ADABAS?
СУБД ADABAS - масштабируемый полнофункциональный сервер баз данных. ADABAS представлен на всех основных серверных платформах:
и естественным образом функционирует в локальных и глобальных гетерогенных сетях. ADABAS имеет мощные и удобные в работе средства администрирования баз данных, реализованные как в интерактивном, так и в пакетном режимах, на всех серверных платформах.
Фирма-разработчик ADABAS - Software AG (ФРГ), развивает и поддерживает комплексную систему программных продуктов трех основных линий:
На основе ADABAS в мире построено множество больших прикладных систем, как OLTP, так и OLAP. В то же время ADABAS может служить основой не только "традиционных" БД, но и хранилищ данных (Data Warehouse).
В данной статье рассматриваются основные базовые понятия, архитектура и функциональные возможности СУБД ADABAS, представляющие несомненный интерес для разработчиков прикладных систем и администраторов баз данных.
2. Управление данными
2.1. Модели данных
СУБД ADABAS обеспечивает разработчику прикладных систем возможность выбора самых различных моделей данных.
Организация данных в ADABAS достаточно традиционна и образует следующую иерархию:
1. Поле (Реквизит) - единица данного определенного типа;
2. Запись (Строка) - объект хранения, сведения о котором представлены в виде набора полей. Порядок следования полей не является существенным;
3. Файл (Таблица) - набор однородных (имеющих одну структуру) записей;
4. База данных - физически (и технологически) обособленное хранилище файлов.
На уровне иерархии "Поле" ADABAS поддерживает все основные типы данных:
К важнейшим особенностям ADABAS по представлению данных можно отнести поддержку следующих структурных элементов:
Подполя, множественные поля и, особенно, периодические группы предоставляют необходимые уровни определения структурированных данных в пределах объекта хранения (записи). Элементы структур данных, предоставляемые в ADABAS, изображены на рис. 1.
Рисунок 1.
Элементы структур данных ADABAS.
Из особенностей физической организации хранения данных в ADABAS можно отметить следующие.
Из сказанного очевидно, что СУБД ADABAS естественным образом поддерживает плоские таблицы - наиболее простые и наглядные структуры данных, - являющиеся основой классической реляционной модели данных. С полным правом ADABAS может быть отнесен к реляционным базам данных (RDBMS).
В то же время наличие дополнительных возможностей структурирования данных позволяет поддерживать средствами СУБД ADABAS класс моделей данных, получивших название постреляционных. Следует заметить, что естественная поддержка постреляционной модели позволяет не только хранить в записях БД данные сложной структуры (этого можно достичь, например, моделируя вторичные данные внутри первичной строки - символьной или битовой), но и различать элементы таких сложноорганизованных данных в запросах, индексах и т. п., что принципиально невозможно при моделировании. О преимуществах постреляционной модели данных, обеспечиваемой СУБД ADABAS, мы и расскажем далее.
2.2. Поиск и выборка
Для быстрого поиска записей файла, обладающих нужными пользователю свойствами - удовлетворяющих критерию поиска, - ADABAS использует заранее созданные и постоянно поддерживаемые в актуальном состоянии индексы (дескрипторы). Наряду с традиционными для всех СУБД индексами, образуемыми значением некоторого поля, ADABAS обеспечивает более сложные виды индексов:
Все виды дескрипторов в ADABAS могут быть множественными, если в их образовании участвуют значения реализаций множественных полей и/или данные из периодических групп. Хранятся и используются только различные значения множественного дескриптора.
О гипердескрипторах следует сказать особо. Все традиционные виды индексов так или иначе отображают значения первичных данных, хранящиеся в записях БД. Поэтому, если требовалось наделить записи некоторым свойством (значением), прямо не присутствующим в структуре первичных данных, приходилось расширять первичную структуру дополнительным полем (полями), вторичные значения в которых вычислялись прикладной программой и использовались в индексах. Решением этой проблемы в СУБД ADABAS является аппарат гипердескрипторов.
Математически гипердескриптор представляет собой функцию
H = H (ai, aj, ak, ...)
где ai - значения из первичных полей данных записи. При вычислении значений (одного или нескольких) гипердескриптора могут использоваться значения полей различных типов (символьные, числовые и т. п.). Получаемые значения также могут быть различного типа, не обязательно совпадающего с типами исходных данных. Например, если в записи хранятся данные о ежемесячной зарплате сотрудников отдела, то гипердескриптором может быть перечень табельных номеров сотрудников, которым хотя бы в одном месяце начислялась зарплата ниже 300 тыс. рублей. Построение подобного индекса возможно только программным путем.
Значения гипердескриптора не хранятся в записях БД и используются только для "интеллектуального" доступа к данным.
Множественность значений индексов в ADABAS порождает прикладную проблему множественной выборки некоторой записи при переборе всевозможных значений некоторого индекса с последующим суммированием количеств выбранных записей. В результате сумма объемов выборок может оказаться больше, чем количество записей в файле. Однако в каждой конкретной задаче с этим приходится считаться, так как этот эффект - отражение свойств объектов реального мира, моделируемого в записях БД. Например, запись о предприятии содержит перечень кодов видов деятельности, которыми ему разрешено заниматься. Нельзя просто суммировать число предприятий, занимающихся торговлей с числом предприятий, занимающихся сельским хозяйством - но это и так очевидно.
Критерий поиска записей в БД задается в ADABAS как логический предикат, накладывающий условия на значения данных в полях и дескрипторах, причем по конкретному полю, упомянутому в критерии, дескриптор может и отсутствовать в момент выдачи запроса. ADABAS, осуществив выборку по той части критерия, которая ссылается на имеющиеся дескрипторы, в момент чтения каждой предварительно отобранной записи проверит полное условие и передаст на обработку пользователю только "нужные" записи.
2.3. Реляционная модель и поддержка SQL
Из всего спектра моделей данных, обеспечиваемых в СУБД ADABAS, строгая реляционная модель представляет собой всего лишь частный случай. Для создания плоских реляционных таблиц и обеспечения работы с ними ADABAS располагает всеми необходимыми инструментами.
Ключевым свойством каждой современной СУБД является также способность обеспечить пользователям описание и манипулирование данными в БД средствами SQL. Для подавляющего большинства современных прикладных систем, ориентированных на пользовательскую обработку данных, SQL является стандартом де-факто. СУБД ADABAS также имеет специальный аппарат, поддерживающий SQL уровня актуального мирового стандарта. Причем, в зависимости от особенностей прикладной задачи, разработчик может выбрать один из нескольких вариантов. Рассмотрим два из них.
ADABAS SQL SERVER сочетает преимущества полной постреляционной модели, предоставляемой ADABAS, с множеством "реляционных" взглядов на данные, необходимых различным пользователям прикладной системы. При настройке сервера разработчик прикладной системы описывает отображение полной модели ADABAS-файла в некоторую плоскую таблицу (или набор таблиц), являющихся базовыми таблицами в смыле SQL. Множественные поля могут при этом разворачиваться в несколько простых столбцов реляционной таблицы, аналогичный прием используется и для реализаций периодических групп. Хотя некоторые ограничения при таком подходе неизбежны, выигрыш в эффективности, достигаемый при физическом хранении данных в постреляционном виде, является весьма существенным.
Рассмотрим также реализацию одного из ключевых понятий манипулирования реляционными таблицами - соединение таблиц (JOIN). ADABAS предоставляет специальный аппарат "связанных" файлов. Записи двух (и более) файлов БД связываются по значению поля или дескриптора - строится и поддерживается специальное двустороннее отношение, отражающее для каждой записи одного из файлов идентификаторы записей другого файла, имеющих то же значение данного в связывающем поле. Для связанных файлов возможно задание критериев поиска, комбинирующих условия к полям и дескрипторам всех связанных файлов. Предварительно выполненное соединение таблиц путем "связывания" соответствующих файлов дает принципиальный выигрыш в производительности для регламентных запросов.
2.4. Защита данных
Из всех вариантов защиты данных, возможных при реализации прикладных систем, рассмотрим обеспечиваемые на уровне непосредственного доступа к БД возможности ADABAS SECURITY. Существуют три класса защиты - по доступу, по значению и по способу обработки.
По доступу данные в БД защищаются на уровнях:
1. полной базы данных - пользователь, не имеющий полномочий, просто "не увидит" защищенную БД;
2. файла в БД - при несанкционированном доступе возвращается условие "файл отсутствует в БД";
3. записи файла - при попытке доступа к защищенным записям возможны два варианта:
4. отдельных полей записи - данные не передаются пользователю.
Разнообразие уровней защиты по доступу позволяет строить гибкие многофункциональные прикладные системы, сочетающие исключение дублирования информации с одновременной работой пользователей различных категорий - каждый со своим подмножеством данных.
По значению данные защищаются путем криптографирования полей, записей, файлов. Прочитать зашифрованные данные возможно, только предъявив ключ для расшифровки. Самим шифрованием/дешифрованием занимается ADABAS в момент выборки данных.
По способу обработки данные защищаются на уровне файлов БД предоставлением пользователям полномочий:
- только чтение;
- чтение-запись;
- монопольная работа.
Кроме перечисленных существует широкий круг способов защиты данных прикладного уровня, но рассмотрение их выходит за рамки данной статьи.
3. Ядро базы данных и пользователи
3.1. Функции ядра
Физически база данных, управляемая СУБД ADABAS, состоит из трех основных частей:
Ассоциатора - хранение индексов и таблиц доступа к записям данных;
Хранилища данных - хранение записей файлов БД;
Рабочего набора - промежуточных данных реализации запросов, обеспечения целостности БД и т. п.
Весь доступ к конкретной БД сосредоточен в специальном процессе операционной среды сервера, называемом ядро базы данных, или ядро ADABAS.
Основным свойством ядра БД является пассивность, заключающаяся в ожидании поступления запросов от клиентских процессов, отработке поступившего запроса и извещении клиента о возможности получения результата. Ядро ADABAS - классический образец сервера базы данных в терминах технологии клиент-сервер.
Конкретная БД имеет уникальный идентификатор - номер базы данных. Пользовательская задача может быть жестко привязана (или настроена администратором) к БД с конкретным номером. Указывая в запросе номер БД (и ничего больше), пользователь получает доступ к нужной ему БД. Схема прохождения запроса от задачи пользователя к ядру БД и обратно представлена на рис. 2.
Рисунок 2.
Организация многопользовательской работы с базами
данных.
Ядро БД управляет как конкретным запросом, так и цепочкой последовательных обращений, осуществляющих сложный запрос, выполняет буферизацию данных и реализует механизмы:
Остановимся подробнее только на параллельной, "многоядерной" работе пользователей с одной БД. В прикладных системах, сочетающих постоянное оперативное обновление БД с выполнением большого количества справочных запросов, для обеспечения нужной производительности активизируют, наряду с "главным" ядром БД, выполняющим запросы-обновления, одно или несколько "дополнительных" ядер ADABAS, работающих с БД в режиме "только чтение" (возможно, даже на различных серверах) и обслуживающих запросы-справки. При этом обеспечивается необходимая общая производительность всей системы.
3.2. Интерфейс команд
Основой универсальности применения ADABAS служит наличие тщательно разработанного низкоуровневого интерфейса команд. Все типы запросов, включая сложные многоэтапные обращения к данным в БД, оформляются пользовательской программой путем заполнения управляющего блока (Control Block - CB) специального формата. В блоке CB прикладная программа указывает все необходимые сведения для успешного выполнения команды:
Дополнительные данные (например, критерий поиска и/или значения полей записи) оформляются в виде отдельных буферов.
Наличие интерфейса команд дает следующие преимущества:
Мы затронули только небольшую часть вопросов, связанных с представлением ADABAS как сервера баз данных. Более подробную информацию об ADABAS и других продуктах Software AG можно получить непосредственно у представителей и партнеров фирмы Software AG в Москве.
Л.Л. Винокуров, Д.В. Леонтьев, А.Ф. Гершельман, Техносерв А/С, тел.: 374-2725, 374-1391