1. Что такое современный ADABAS?
2. Управление данными
3. Ядро базы данных и пользователи

1. Что такое современный ADABAS?

СУБД ADABAS - масштабируемый полнофункциональный сервер баз данных. ADABAS представлен на всех основных серверных платформах:

  • IBM Mainframe (OS/390, MVS, VM);
  • основных Unix-платформах;
  • Windows NT,
  • и естественным образом функционирует в локальных и глобальных гетерогенных сетях. ADABAS имеет мощные и удобные в работе средства администрирования баз данных, реализованные как в интерактивном, так и в пакетном режимах, на всех серверных платформах.

    Фирма-разработчик ADABAS - Software AG (ФРГ), развивает и поддерживает комплексную систему программных продуктов трех основных линий:

  • ADABAS - сервер баз данных;
  • ENTIRE - программное обеспечение Middleware - коммуникации процессов и данных;
  • NATURAL - универсальная среда разработки прикладных систем уровня 4GL.
  • На основе ADABAS в мире построено множество больших прикладных систем, как OLTP, так и OLAP. В то же время ADABAS может служить основой не только "традиционных" БД, но и хранилищ данных (Data Warehouse).

    В данной статье рассматриваются основные базовые понятия, архитектура и функциональные возможности СУБД ADABAS, представляющие несомненный интерес для разработчиков прикладных систем и администраторов баз данных.

    2. Управление данными

    2.1. Модели данных

    СУБД ADABAS обеспечивает разработчику прикладных систем возможность выбора самых различных моделей данных.

    Организация данных в ADABAS достаточно традиционна и образует следующую иерархию:

    1. Поле (Реквизит) - единица данного определенного типа;

    2. Запись (Строка) - объект хранения, сведения о котором представлены в виде набора полей. Порядок следования полей не является существенным;

    3. Файл (Таблица) - набор однородных (имеющих одну структуру) записей;

    4. База данных - физически (и технологически) обособленное хранилище файлов.

    На уровне иерархии "Поле" ADABAS поддерживает все основные типы данных:

  • символьные строки;
  • битовые строки;
  • числовые данные (двоичные и десятичные, фиксированной и переменной разрядности), и т. п.
  • К важнейшим особенностям ADABAS по представлению данных можно отнести поддержку следующих структурных элементов:

  • Подполе - вторичное значение, образованное частью значения данного в элементарном (первичном) поле, имеющее уникальный идентификатор и позволяющее запросить значение из подполя без обращения ко всей информации первичного поля;
  • Суперполе - вторичное значение, образованное слиянием значений нескольких первичных полей (и подполей) записи;
  • Множественное поле - массив данных одного типа с одноуровневой индексацией. Единица данного в множественном поле называется реализацией;
  • Периодическая группа - одноуровневый массив данных определенной структуры. Каждый элемент (реализация) периодической группы представляет, в свою очередь, некоторую последовательность элементарных полей. Аналогом периодической группы являются понятия "вложенная структура" и "массив структур" в языках программирования.
  • Подполя, множественные поля и, особенно, периодические группы предоставляют необходимые уровни определения структурированных данных в пределах объекта хранения (записи). Элементы структур данных, предоставляемые в ADABAS, изображены на рис. 1.

    Picture 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 - компонент, непосредственно реализующий все возможности SQL на сервере прикладной системы и использующий БД ADABAS как "внутреннее" высокопроизводительное хранилище данных.
  • ADABAS ODBC CLIENT - компонент, функционирующий как часть клиентского процесса (через ODBC-интерфейс) и преобразующий SQL-запросы клиента в запросы к БД ADABAS, функционирующей на сервере.
  • ADABAS SQL SERVER сочетает преимущества полной постреляционной модели, предоставляемой ADABAS, с множеством "реляционных" взглядов на данные, необходимых различным пользователям прикладной системы. При настройке сервера разработчик прикладной системы описывает отображение полной модели ADABAS-файла в некоторую плоскую таблицу (или набор таблиц), являющихся базовыми таблицами в смыле SQL. Множественные поля могут при этом разворачиваться в несколько простых столбцов реляционной таблицы, аналогичный прием используется и для реализаций периодических групп. Хотя некоторые ограничения при таком подходе неизбежны, выигрыш в эффективности, достигаемый при физическом хранении данных в постреляционном виде, является весьма существенным.

    Рассмотрим также реализацию одного из ключевых понятий манипулирования реляционными таблицами - соединение таблиц (JOIN). ADABAS предоставляет специальный аппарат "связанных" файлов. Записи двух (и более) файлов БД связываются по значению поля или дескриптора - строится и поддерживается специальное двустороннее отношение, отражающее для каждой записи одного из файлов идентификаторы записей другого файла, имеющих то же значение данного в связывающем поле. Для связанных файлов возможно задание критериев поиска, комбинирующих условия к полям и дескрипторам всех связанных файлов. Предварительно выполненное соединение таблиц путем "связывания" соответствующих файлов дает принципиальный выигрыш в производительности для регламентных запросов.

    2.4. Защита данных

    Из всех вариантов защиты данных, возможных при реализации прикладных систем, рассмотрим обеспечиваемые на уровне непосредственного доступа к БД возможности ADABAS SECURITY. Существуют три класса защиты - по доступу, по значению и по способу обработки.

    По доступу данные в БД защищаются на уровнях:

    1. полной базы данных - пользователь, не имеющий полномочий, просто "не увидит" защищенную БД;

    2. файла в БД - при несанкционированном доступе возвращается условие "файл отсутствует в БД";

    3. записи файла - при попытке доступа к защищенным записям возможны два варианта:

  • записи не выбираются из БД - пользователь их не видит и не знает о них,
  • записи выбираются, но данные из их полей пользователю не передаются - пользователь узнаёт о наличии записей, но не видит их;
  • 4. отдельных полей записи - данные не передаются пользователю.

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

    По значению данные защищаются путем криптографирования полей, записей, файлов. Прочитать зашифрованные данные возможно, только предъявив ключ для расшифровки. Самим шифрованием/дешифрованием занимается ADABAS в момент выборки данных.

    По способу обработки данные защищаются на уровне файлов БД предоставлением пользователям полномочий:

    • только чтение;
    • чтение-запись;
    • монопольная работа.

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

    3. Ядро базы данных и пользователи

    3.1. Функции ядра

    Физически база данных, управляемая СУБД ADABAS, состоит из трех основных частей:

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

    Хранилища данных - хранение записей файлов БД;

    Рабочего набора - промежуточных данных реализации запросов, обеспечения целостности БД и т. п.

    Весь доступ к конкретной БД сосредоточен в специальном процессе операционной среды сервера, называемом ядро базы данных, или ядро ADABAS.

    Основным свойством ядра БД является пассивность, заключающаяся в ожидании поступления запросов от клиентских процессов, отработке поступившего запроса и извещении клиента о возможности получения результата. Ядро ADABAS - классический образец сервера базы данных в терминах технологии клиент-сервер.

    Конкретная БД имеет уникальный идентификатор - номер базы данных. Пользовательская задача может быть жестко привязана (или настроена администратором) к БД с конкретным номером. Указывая в запросе номер БД (и ничего больше), пользователь получает доступ к нужной ему БД. Схема прохождения запроса от задачи пользователя к ядру БД и обратно представлена на рис. 2.

    Picture 2

    Рисунок 2.
    Организация многопользовательской работы с базами данных.

    Ядро БД управляет как конкретным запросом, так и цепочкой последовательных обращений, осуществляющих сложный запрос, выполняет буферизацию данных и реализует механизмы:

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

    3.2. Интерфейс команд

    Основой универсальности применения ADABAS служит наличие тщательно разработанного низкоуровневого интерфейса команд. Все типы запросов, включая сложные многоэтапные обращения к данным в БД, оформляются пользовательской программой путем заполнения управляющего блока (Control Block - CB) специального формата. В блоке CB прикладная программа указывает все необходимые сведения для успешного выполнения команды:

  • код команды ADABAS,
  • номер БД и номер файла БД,
  • параметры команды и т. п.
  • Дополнительные данные (например, критерий поиска и/или значения полей записи) оформляются в виде отдельных буферов.

    Наличие интерфейса команд дает следующие преимущества:

  • возможность низкоуровневого программирования приложений, критичных к производительности;
  • интегрируемость ADABAS в любую прикладную систему на любой аппаратно-системной платформе путем подключения программы-посредника, реализующей прикладные запросы в виде последовательностей команд ADABAS;
  • удобство передачи команд ADABAS в гетерогенной сети (проблема сводится к передаче CB и буферов данных).
  • Мы затронули только небольшую часть вопросов, связанных с представлением ADABAS как сервера баз данных. Более подробную информацию об ADABAS и других продуктах Software AG можно получить непосредственно у представителей и партнеров фирмы Software AG в Москве.


    Л.Л. Винокуров, Д.В. Леонтьев, А.Ф. Гершельман,
    Техносерв А/С, тел.: 374-2725, 374-1391