IMS (СУБД)


IMS (англ. IBM Information Management System, система управления информацией IBM) — система управления иерархическими базами данных с транзакционными возможностями, выпускается компанией IBM с 1968 года.

IBM спроектировала IMS в сотрудничестве с компаниями Rockwell и Caterpillar для космической программы Аполлон в 1966 году. В задачу IMS входила обработка спецификации изделия (англ. Bill of materials) для ракеты Сатурн-5 и кораблей Аполлон.

Датой выпуска системы считается 14 августа 1968 года. Будучи созданной как технология для платформы IBM System/360, позднее система была перенесена в более современные операционные системы, выпускавшиеся IBM, в том числе на z/OS. Начиная с версии IMS 9 стандартным средством сетевого доступа для СУБД становится средство IMS Connect. С конца 1990-х годов система поддерживает доступ на языке программирования Java, интерфейсы JDBC, обработку XML, а с 2000-х — поддерживаются веб-службы.

Главным архитектором СУБД был Верн Уоттс (англ. Vern Watts), начав работу в IBM в 1956 году, он непрерывно работал над IMS начиная от времени её первоначального проектирования вплоть до своей кончины 4 апреля 2009 года.

Система использует иерархическую модель данных, существенно отличающуюся от ставшей фактически стандартной в 1980-е — 1990-е годы реляционной модели. При этом в наименовании основной реляционной СУБД производства IBM — DB2, вышедшей в 1982 году, подразумевается следующее поколение в сравнении с IMS, называвшейся также DB1.

Основной структурный элемент иерархической модели в IMS — сегмент, каждый сегмент может содержать несколько атомарных информационных блоков данных, которые называются областями, либо содержать другие сегменты. Например, для базы данных «Абонент» существует корневой сегмент с областями, такими как "Телефон", "Имя", "Дата рождения", отражающими атрибуты абонента, а также подчинённый сегмент "Заявка", в который записываются все заявки от данного абонента. Предварительное описание модели данных для сегмента не требуется, поэтому новые типы областей и подсегментов могут быть добавлены на этапе эксплуатации к конкретным записям без дополнительной обработки для прочих записей.