Unisys Data Management System II (DMSII) — это система баз данных , изначально созданная Burroughs Corporation в 1972 году. Она была доступна в линейках продуктов Burroughs (позже Unisys ) Small (B1000), Medium (4000, V Series) и Large System (5000, 6000, 7000). Более поздние линейки продуктов A Series, Clearpath, Libra поддерживают ее, а в последних выпусках программного обеспечения Unisys Clearpath она была переименована в Enterprise Database Server for ClearPath MCP . Оригинальная DMS II использовала сетевую модель. [1]
Первоначально она конкурировала с продуктами IBM IMS и CICS и появилась еще до того, как реляционные базы данных стали популярными.
DMSII предоставила модель ISAM (индексированный последовательный метод доступа) для доступа к данным, изоляции транзакций и возможностей восстановления базы данных. Схема базы данных была написана на проприетарном языке определения данных и структур (DASDL). Исходный код DASDL был скомпилирован системной утилитой в файл, содержащий метаданные для базы данных (известный как файл описания). Программа-утилита базы данных использовала файл описания базы данных для создания остальных компонентов базы данных.
Компиляторы частных языков (такие как COBOL и ALGOL ) использовали файл описания базы данных для создания элементов, связанных с базой данных, в объектном коде скомпилированной программы. Эти компиляторы использовали расширения языка для предоставления программисту более естественного интерфейса к базе данных. Компилятор вставлял ряд встроенных функций, чтобы гарантировать, что программа и база данных используют одно и то же определение структур базы данных.
Первоначально DMSII поддерживал словарь данных, на который программист приложения ссылался в своем исходном коде. Источник для структур данных поддерживался в обычном исходном файле CANDE . Затем этот источник компилировался компилятором DASDL, который создавал словарь (файл описания), если таковой ранее не существовал. Если словарь существовал, новый дизайн, указанный исходным файлом, включался в словарь; программы для копирования данных из старой(ых) файловой(ых) структуры(й) и записи в новую(ые) файловую(ые) структуру(ы) автоматически генерировались (задача реорганизации базы данных). Программисту приложения просто требовалось перекомпилировать исходный код своего приложения (обычно COBOL) с новым файлом описания, и программист мог воспользоваться новыми элементами данных в структурах.
DMSII использовала концепцию «наборов» для хранения данных. Набор данных содержал строки данных и мог быть случайным или упорядоченным. Поскольку DMSII поддерживал как иерархические, так и реляционные модели, набор данных мог быть разъединенным или встроенным. Индексы таблиц были реализованы в наборах индексов и могли быть полными наборами или подмножествами целевого набора данных. Подмножества могли быть обозначены как автоматические подмножества (с правилами выбора записей из целевого набора данных для включения) или ручные подмножества (которые использовали программные интерфейсы для вставки и удаления записей).
Наборы индексов включали стили ISAM (которые использовали ключи полей для ссылки на записи) и бит-векторные наборы (которые использовали булево представление членства набора, если запись набора данных соответствовала условиям, определенным в наборе). Как и ISAM, он использовал наборы (индексы, в которых ссылались на все записи, например, индекс в Microsoft Access ), подмножества (частичный список записей, зависящий от определяемого условия, например, женщины для базы данных с полем «пол») и битовые карты (набор записей, соответствующих определенному условию (истина/ложь) в наборе данных). Эти функции достигли значительно более высокой производительности при доступе к данным с небольшим штрафом в виде дополнительного времени, затрачиваемого на создание новой записи, если было определено много подмножеств.
Утверждалось, что сетевая база данных может быть создана с использованием возможности ручного подмножества. Это было рискованно, поскольку зависело от пользовательских программ для добавления и удаления записей в ручном подмножестве. Между DMSII и реляционными базами данных есть существенная разница: в DMSII запись может быть извлечена только через индекс, если индекс был изначально разработан (или после реорганизации, которая генерирует новое подмножество из всех данных в наборе). В реляционной модели это операция времени выполнения.
В 1988 году Берроуз попытался создать объектно-ориентированную модель базы данных, известную как Infoexec, которая была дополнительным слоем поверх DMSII. Этот слой был запрограммирован на Паскале и следовал подходу выбора времени выполнения, как это делает реляционная модель. Разработанная Майком Хаммером и Деннисом Маклеодом в Массачусетском технологическом институте, она работала плохо.