Сетевая модель данных
Сетевая модель данных — это логическая модель представления данных, основанная на графовой структуре, в которой данные организованы в виде множества записей (узлов), соединённых между собой связями (рёбрами), допускающими произвольную кратность и направление. В отличие от иерархической модели, где каждый дочерний элемент имеет только одного родителя, сетевая модель позволяет записи иметь несколько родительских и дочерних записей, что обеспечивает более гибкое отображение сложных взаимосвязей реального мира. Модель была формализована в 1969 году в рамках стандарта CODASYL (Conference on Data Systems Languages) и стала одной из первых альтернатив иерархической модели, широко применявшейся в базах данных 1970–1980-х годов.
История
Предпосылки возникновения
В 1960-х годах доминирующей моделью данных была иерархическая, реализованная, например, в системе IMS (IBM). Однако она не могла эффективно описывать ситуации, где объект (например, сотрудник) участвует в нескольких иерархиях одновременно (отдел, проект, подразделение). Это ограничение стимулировало поиск более универсальных структур.
Разработка стандарта CODASYL
В 1965 году в рамках комитета CODASYL была сформирована группа Data Base Task Group (DBTG), которая к 1969 году опубликовала первый отчёт, содержащий спецификацию сетевой модели данных. В 1971 году вышла уточнённая версия, ставшая основой для большинства реализаций. Модель CODASYL предусматривала три уровня абстракции: схему (общее описание базы данных), подсхемы (представления для приложений) и физическое хранение.
Коммерческие реализации
Наиболее известные системы управления базами данных (СУБД), поддерживавшие сетевую модель:
- IDMS (Integrated Database Management System, компания Cullinane, позже Computer Associates) — одна из первых коммерческих СУБД, работавшая на мейнфреймах IBM.
- DBMS-10/20 (Digital Equipment Corporation) — для машин PDP-10 и PDP-20.
- IMAGE (Hewlett-Packard) — использовалась в системах HP 3000.
- ADABAS (Software AG) — хотя изначально была реляционной, имела сетевые возможности.
К концу 1980-х годов сетевая модель была вытеснена реляционной моделью (Codd, 1970) благодаря её математической строгости, простоте запросов (SQL) и независимости от физического хранения.
Основные понятия
Запись (record)
Запись — это совокупность полей (атрибутов), описывающих сущность. Каждая запись имеет уникальный идентификатор (ключ) и может принадлежать к одному или нескольким типам записей.
Связь (set)
Связь — это именованное отношение между двумя типами записей, определяющее направление от «владельца» (owner) к «члену» (member). В отличие от иерархической модели, один и тот же тип записи может быть членом нескольких связей и владельцем других. Связи могут быть:
- один-к-одному (1:1) — каждой записи-владельцу соответствует одна запись-член;
- один-ко-многим (1:M) — владелец может иметь несколько членов;
- многие-ко-многим (M:N) — реализуется через промежуточную запись (соединительный набор).
Графовая структура
База данных в сетевой модели представляет собой ориентированный граф, где узлы — записи, а дуги — связи. Циклы и множественные пути между узлами разрешены, что отличает модель от иерархической.
Навигационный доступ
Доступ к данным осуществляется путём навигации по графу: программа последовательно переходит от записи к записи по связям, используя указатели (например, «следующий член набора»). Это требовало от разработчиков знания физической структуры базы данных.
Классификация
По типу связей
- Простая сетевая модель — допускает только связи «один-ко-многим».
- Полная сетевая модель — поддерживает связи «многие-ко-многим» и произвольные графы.
По способу реализации
- Навигационные СУБД — доступ через указатели (IDMS, DBMS-10).
- Гибридные системы — сочетание сетевой модели с реляционными или иерархическими элементами (например, ADABAS).
Структура и устройство
Схема базы данных
Схема определяет типы записей, типы связей и их атрибуты. Например, для учебной базы «Университет»:
- Тип записи Студент (поля: номер зачётной книжки, фамилия, группа).
- Тип записи Предмет (поля: код предмета, название, часы).
- Тип связи Успеваемость (владелец — Студент, член — Предмет, с дополнительным полем «оценка»).
Физическое хранение
Записи хранятся в файлах, а связи реализуются через цепочки указателей (например, однонаправленные или двунаправленные списки). Для ускорения доступа могли использоваться индексы.
Язык манипулирования данными
Стандарт CODASYL определял язык DML (Data Manipulation Language), включающий команды:
FIND— найти запись по ключу или по связи;GET— извлечь данные из найденной записи;CONNECT— включить запись в связь;DISCONNECT— исключить запись из связи.
Запросы выполнялись в процедурном стиле, шаг за шагом.
Применение
Области использования
В 1970–1980-х годах сетевая модель применялась в:
- Промышленных базах данных — управление производством, складской учёт, логистика.
- Финансовых системах — банковские операции, учёт ценных бумаг.
- Научных исследованиях — моделирование сложных взаимосвязей (например, в химии или социологии).
- Телекоммуникациях — управление сетями связи.
Примеры
- Система управления полётами авиакомпании: записи «Рейс», «Пассажир», «Билет» связаны через множество связей (один пассажир может иметь несколько билетов, один рейс — много пассажиров).
- База данных медицинского учреждения: записи «Врач», «Пациент», «Диагноз» образуют сеть с циклами (пациент может лечиться у нескольких врачей, врач ведёт много пациентов).
Преимущества и недостатки
Преимущества
- Гибкость — возможность моделировать сложные, неиерархические отношения.
- Производительность — навигационный доступ часто быстрее реляционных запросов для транзакционных систем (особенно на мейнфреймах).
- Эффективность хранения — минимум избыточности данных благодаря прямым связям.
Недостатки
- Сложность разработки — программист должен знать физическую структуру базы и порядок обхода связей.
- Трудность модификации — изменение схемы (например, добавление нового типа связи) требует переработки всех прикладных программ.
- Отсутствие декларативных запросов — нет аналога SQL; каждый запрос пишется как последовательность навигационных шагов.
- Ограниченная поддержка целостности — стандарт CODASYL не предусматривал автоматических ограничений (например, каскадное удаление).
Сравнение с другими моделями
С иерархической моделью
- В иерархической модели каждая дочерняя запись имеет ровно одного родителя; в сетевой — может иметь несколько.
- Иерархическая модель проще для понимания, но не подходит для сложных связей.
С реляционной моделью
- Реляционная модель использует таблицы и математическую теорию отношений, а сетевая — графы и указатели.
- Реляционная модель обеспечивает независимость данных от приложений, в сетевой — тесная связь.
- SQL позволяет формулировать запросы декларативно (что нужно), в сетевой — процедурно (как получить).
С графовой моделью (современной)
- Современные графовые базы данных (Neo4j, ArangoDB) используют схожие принципы (узлы и рёбра), но с более развитыми возможностями: индексы, язык запросов (Cypher, Gremlin), распределённые вычисления.
- Сетевая модель считается предшественником графовых СУБД.
Интересные факты
- Термин «сетевая модель» иногда путают с компьютерными сетями, хотя речь идёт исключительно о структуре данных.
- Стандарт CODASYL повлиял на разработку языка Pascal (Никлаус Вирт использовал его идеи для работы с файлами).
- В 1973 году Чарльз Бахман, один из ключевых разработчиков сетевой модели (IDMS), получил премию Тьюринга за вклад в базы данных.
- Несмотря на упадок в 1990-х, сетевая модель продолжает использоваться в унаследованных системах (легаси-системы) в банках, страховых компаниях и государственных учреждениях.
Критика
Основные претензии к сетевой модели связаны с её процедурным характером и отсутствием независимости данных. Критики (в частности, Эдгар Кодд) отмечали, что навигационный доступ затрудняет эволюцию базы данных и требует высокой квалификации программистов. Кроме того, модель не поддерживает реляционные операции (проекция, соединение) без дополнительных программных усилий. Однако в контексте своего времени сетевая модель была значительным шагом вперёд по сравнению с иерархической и предоставила практические решения для сложных информационных систем.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →