Разработка СУБД реляционного типа Рубин, работающей под управлением ОС ДЕМОС
М. И. Давидов, И. Г. Машечкина, В. Д. Фатеев, В. А. Ершов
Реляционная система управления базами данных СУБД РУБИН обеспечивает высокую степень независимости данных и возможность создания непроцедурных средств высокого уровня для описания данных, для управления поиском, модификацией, доступом к данным для поддержки виртуальных отношений, для проверки целостности в среде операционной системы ДЕМОС.
Систему РУБИН можно использовать при разработках широкого класса информационных систем розничной торговли, отраслей машиностроения, медицины, городского хозяйства, управления транспортом.
Система РУБИН содержит простые и удобные средства окружения, которые обеспечивают:
- создание и удаление баз данных;
- создание и удаление отношений;
- копирование данных;
- изменение структуры хранения отношения с одного метода доступа на другой.
Требования к операционной системе
ОС ДЕМОС, в среде которой функционирует СУБД РУБИН, поддерживает структуру файловой системы в виде дерева. Каждый файл представляет собой либо каталог (содержащий ссылки на файлы-потомки в файловой системе), либо файл данных.
Каждый файл данных может рассматриваться как массив шириной 1 байт и длиной 2**24 байта (максимальная длина может быть увеличена средствами ОС ДЕМОС). Адресация в файле данных подобна адресации такого массива.
Физически каждый файл разделен на блоки (страницы). При обращении к файлу ОС ДЕМОС помещает одну или более страниц из внешней памяти в оперативную, а затем возвращает пользователю требуемую текущую байтовую строку.
Важно отметить, что страницы данных файловой системы считываются и записываются в оперативную память с использованием алгоритма замены по принципу вытеснения наименее используемых страниц. При таком решении управление файловой системой происходит как управление большой виртуальной памятью. Операционная система должна осуществлять распределение памяти между активными задачами, в самой СУБД РУБИН нет средств управления памятью.
Владелец файла в ОС ДЕМОС может установить один из следующих режимов доступа к своему файлу:
- чтение владельцу;
- запись владельцу;
- чтение всем;
- запись всем;
- выполнение;
- специальное выполнение.
При начальной генерации СУБД РУБИН создается суперпользователем операционной системы ДЕМОС с именем RUBIN. Все файлы данных, управляемые системой РУБИН, принадлежат суперпользователю и их коды доступа установлены следующим образом: владельцу разрешены чтение и запись, другие виды доступа запрещены. Следовательно, только суперпользователь СУБД РУБИН может иметь непосредственный доступ к файлам СУБД РУБИН.
Объектные коды СУБД РУБИН хранятся в файлах, коды доступа которых определены как "специальное выполнение, другие виды доступа запрещены".
Когда пользователь вызывает СУБД РУБИН, операционная система ДЕМОС создает параллельные процессы с временным идентификатором пользователя СУБД РУБИН. Когда пользователь заканчивает работу с СУБД РУБИН, эти процессы уничтожаются, и пользователь продолжает работу в ОС ДЕМОС под своим идентификатором.
Этот механизм обеспечивает единственный способ доступа пользователя к базе данных СУБД РУБИН – только через вход в саму систему РУБИН. Такими средствами обеспечивается эффективная защита данных СУБД РУБИН от несанкционированного доступа.
Входные и выходные данные
База данных системы РУБИН представляет собой совокупность двумерных таблиц с операциями извлечения и объединения столбцов.
Логическая структура базы данных системы РУБИН включает следующие основные понятия:
- отношение – двумерная таблица данных;
- кортеж – ряды в отношении, которые образуют логическую запись, то есть строка в таблице;
- домен – набор значений элементов данных одного типа, то есть один столбец таблицы;
- атрибут – индивидуальный элемент данных в логической записи (домен).
Входная информация СУБД РУБИН:
- команды на языке QUEL [ 1 ];
- команды на языке EQUEL [1];
- данные, вводимые пользователем с терминала;
- файлы пользователей.
Организационно-технологические требования
СУБД РУБИН можно вызывать двумя способами: во-первых, ее можно вызывать из операционной системы ДЕМОС, выполнив команду "rubin имя_базы_данных"; во-вторых, она может быть вызвана программой, написанной с использованием препроцессора.
При вызове СУБД РУБИН как команды ОС ДЕМОС создается система процессов, показанная на рис. 1.
Система процессов СУБД РУБИН
Процесс 1 – интерактивный терминальный монитор, который позволяет пользователю создавать, печатать, редактировать и выполнять наборы команд СУБД РУБИН. Он поддерживает рабочую область, с которой взаимодействует пользователь, до тех пор, пока пользователя не удовлетворят результаты взаимодействия (результат обработки набора его требований). При выполнении запроса содержимое рабочей области передается по каналу межпроцессной связи А как строка символов кода ASCII.
Как известно, операционная система ДЕМОС позволяет пользователю переназначать устройства стандартного ввода-вывода для своих процессов при выполнении команд. Пользователь, вызвавший СУБД РУБИН, в качестве стандартного ввода может назначить файл пользователя (в этом случае он запускает "ранее подготовленный" набор требований), а вывод перенаправить вместо терминала, например, на печатающее устройство или в файл.
Текущая версия терминального монитора воспринимает следующие команды (все остальные символы просто добавляются в рабочую область пользователя):
- R: удалить вводимое требование (обновить рабочую область). Старое содержимое рабочей области теряется;
- Р: распечатать текущую рабочую область. Содержимое рабочей области распечатывается на терминал пользователя;
- Е: вызвать текстовый редактор для редактирования рабочей области;
- G: выполнить текущий запрос. Содержимое рабочей области передается процессу 2;
- Q: выйти из СУБД РУБИН.
Процесс 2 содержит лексический анализатор, синтаксический анализатор, программы модификатора запросов для контроля целостности (и для дальнейшей поддержки виртуальных отношений и защиты), программы обеспечения одновременной работы нескольких пользователей.
По окончании работы процесс 2 передает в процесс 3 специальную строку знаков через межпроцессный канал В. Процесс 3 получает эту строку; он выполняет команды RETRIEVE, REPLACE, DELETE и APPEND.
Любые изменения в базе данных начинаются с запроса RETRIEVE, выбирающего кортеж. Измененные копии модифицированного кортежа помещаются в спулинг (в специальный файл). Этот файл будет выполнен "процессором отложенных изменений".
В основном процесс 3 выполняет две функции для команд RETRIEVE:
- запрос с несколькими переменными разбирается в последовательность запросов, включающих только единственную переменную (декомпозиция запроса);
- запрос с одной переменной выполняется процессором одной переменной (OVQP).
OVQP в процессе работы осуществляет вызовы различных методов доступа. Процессор одной переменной обеспечивает выполнение команд CREATE, DESTROY и др. Процесс 3 просто пересылает процессу 4 все команды, которые процесс 4 будет выполнять. Процесс 4 организован как набор оверлеев, выполняющих различные функции.
Сообщения об ошибках передаются через межпроцессные каналы D, Е и F процессу 1 (см. рис. 1), который возвращает их пользователю. Если команда RETRIEVE не выдала результирующего отношения, процесс 3 возвращает указанные кортежи в принятом формате прямо на стандартное устройство вывода процесса 1. Если не было перенаправления, то это терминал пользователя.
Состав обслуживающего персонала
Требуемый состав обслуживающего персонала определяется целевым назначением системы, разрабатываемой с помощью СУБД РУБИН.
Для обслуживания базы данных в этот состав должны быть включены:
- системные программисты, обеспечивающие операционную среду функционирования базы данных;
- администратор базы данных, обеспечивающий создание и ведение базы данных, а также восстановление ее в случае сбоя;
- проблемные программисты, разрабатывающие комплекс функциональных задач.
Перечень основных функций СУБД РУБИН
СУБД РУБИН обеспечивает выполнение запросов пользователей на обработку данных, хранящихся в базе данных:
- создание и поддержка системных отношений;
- ввод, обновление и обработка данных, а также вывод данных в виде всевозможных отчетов;
- определение схемы и подсхемы базы данных;
- создание и уничтожение существующих отношений;
- создание вторичного индекса на существующем отношении;
- выбор кортежей из отношений по различным признакам;
- создание и удаление баз данных.
Описание сервисных средств
В СУБД РУБИН включены различные сервисные возможности базы данных, доступные пользователю.
Сервисные команды организованы как несколько оверлейных программ. Оверлей может иметь более одной точки входа, поэтому он может содержать более одной сервисной команды. Фактически сервисные команды группируются, где это возможно, для минимального перекрытия. Все оверлеи содержат общую головную программу, известную как "контроллер", который читает канал С и пишет полные сообщения в канал D. Выполнение сервисных команд происходит следующим образом.
Синтаксический анализатор распознает команду пользователя. Ищется ее имя в "таблице процессов" СУБД РУБИН, которая имеет вход для каждой команды. Вход имеет "идентификатор функции".
Эти идентификаторы посылаются через канал В в процесс 3, за ними следуют параметры, указанные в команде. Процесс 3 по идентификатору оверлея определяет, предназначена ли команда процессу 4. Если это так, то информация переписывается в канал С.
Большинство сервисных программ обновляют или читают системные отношения. MODIFY, например, содержит программу сортировки, которая помещает кортежи в строгом соответствии с тем порядком, который задает объединение требуемых ключей. Программа сортировки организует М-фазную сортировку слиянием, где N – число файлов, которые процесс 4 может иметь одновременно открытыми (в настоящее время 8).
В СУБД РУБИН включены сервисные средства копирования, получения различного вида отчетов, восстановления системы после сбоя, отложенных изменений.
В СУБД РУБИН предусмотрены такие сервисные возможности, как получение информации о том, как работает СУБД РУБИН, об отношениях в базе данных (команда HELP), о базе данных (команда HELPR) и прочее.
Описание данных
Обработка данных, хранящихся в базе данных СУБД РУБИН, осуществляется пользователем в интерактивном или пакетном режимах с помощью языков высокого уровня QUEL и EQUEL.
Прежде чем производить обработку данных, необходимо создать описание этих данных. СУБД РУБИН реализует принцип независимости программ от данных, используя однократно созданные описания данных для различных процессов обработки. Это достигается хранением описаний данных в системных отношениях, которые поддерживаются специальными средствами СУБД РУБИН. Кроме того, в системных отношениях хранится следующая информация:
- структура и содержимое каждого отношения;
- кортежи для всех вторичных индексов в базе данных;
- предикаты защиты и целостности для каждого отношения в базе данных.
Таким образом, информационная база системы состоит из двух частей:
- системных отношений;
- базы данных, представляющей собой совокупность отношений пользователей.
На рис. 2 показан раздел файловой системы ДЕМОС, выделенный под файлы и каталоги СУБД РУБИН.
Структура раздела файловой системы ОС ДЕМОС, выделенного для каталогов и файлов СУБД РУБИН
В каталог FILES включены файлы, содержащие таблицу для управления процессами СУБД (эта таблица формируется системным программистом), и файл определений пользователей, аналогичный парольному файлу /etc/passwd.
В каталог BIN включены объектные файлы компонент СУБД RUBIN. Некоторые из них можно запустить на выполнение как команды ОС ДЕМОС, остальные используются при загрузке СУБД и выполнении им различных команд.
В каталоги DOC и OTHERS включены файлы с документацией по СУБД РУБИН. Часть этих файлов используется командой HELP в интерактивном режиме работы СУБД.
Файлы каталога DEMO используются для создания демонстрационной базы данных. Она соответствует описанной в учебном введении.
Каталог BASE включает подкаталоги с файлами баз данных, созданными пользователями СУБД РУБИН.
Файлы баз данных делятся на четыре типа:
1. Административный файл. Он содержит идентификатор пользователя – администратора базы данных (АБД) и инициализирующую информацию.
2. Системные отношения. Эти отношения имеют предопределенные имена и создаются для каждой базы данных. Они принадлежат АБД и определяют системные каталоги. Они могут быть затребованы пользователями, выдавшими команду RETRIVE, и могут изменяться только командами СУБД РУБИН (в случае крайней необходимости суперпользователем).
3. Отношения АБД. Это отношения, принадлежащие администратору базы данных и разделяемые между пользователями, имеющими к ним доступ. Когда разрешения на доступ установлены, администратор может разрешить пользователю пользоваться этими отношениями, установив некие признаки (которые хранятся в одном из системных отноше-
ний), или запретить пользоваться, убрав эти признаки.
4. Другие отношения. Эти отношения создаются остальными пользователями (с помощью команды RETRIEVE или CREATE) и не доступны для раздельного доступа.
Требования к конфигурации технических средств
СУБД РУБИН функционирует на ЭВМ типа СМ 1420 с объемом оперативной памяти не менее 1 Мбайта.
Для нормального функционирования СУБД РУБИН СМ 1420 должна иметь следующую минимальную конфигурацию:
- процессор СМ 1420 с объемом оперативной памяти 128 Мбайт;
- терминал типа ВТА СМ 1420-15;
- АЦПУ типа СМ 1420 6302;
- устройство внешней памяти на МЛ СМ 5300. 01;
- устройство внешней памяти на МДСМ 1420. 5410.
Рекомендации по освоению
Системные программисты, обслуживающие систему управления базами данных СУБД РУБИН, должны быть знакомы с операционной системой ДЕМОС.
Проблемный программист, разрабатывающий функциональные задачи для СУБД РУБИН, должен быть знаком с языками программирования Си и QUEL.
В своей работе обслуживающий персонал должен руководствоваться:
- системный программист – документами [2], [3];
- проблемный программист – документами [3-5].
Литература
- Ульман Дж. Основы систем баз данных. – М.: Финансы и статистика, 1983.
- Система управления базами данных для среды ДЕМОС (СУБД РУБИН): Описание применения. – Калинин: Центрпрограммсистем, 1986.
- Система управления базами данных для среды ДЕМОС (СУБД РУБИН): Руководство программиста. – Калинин: Центрпрограммсистем, 1986.
- Система управления базами данных для среды ДЕМОС (СУБД РУБИН): Руководство администратора базы данных. – Калинин: Центрпрограммсистем, 1986.
- Система управления базами данных для среды ДЕМОС (СУБД РУБИН): Описание контрольного примера. – Калинин: Центрпрограммсистем, 1986.
Статья опубликована в сборнике "Методические материалы и документация по пакетам прикладных программ", выпуск 53, Москва, МЦНТИ, 1987 г., стр. 103.