Комитет CODASYL
CODASYL (от англ. Conference on Data Systems Languages) — это консорциум, основанный в 1959 году, целью которого была разработка и стандартизация языков программирования для обработки данных. Наибольшую известность CODASYL получил благодаря созданию языка программирования COBOL (Common Business-Oriented Language), а также разработке одной из первых моделей данных для систем управления базами данных (СУБД), известной как сетевая модель данных или модель CODASYL.
История создания
Предпосылки и основание
В конце 1950-х годов в Соединённых Штатах Америки остро встала проблема несовместимости компьютерных систем и языков программирования, используемых для решения бизнес-задач. Различные производители (IBM, Remington Rand, Sperry Rand и другие) предлагали собственные, несовместимые между собой решения. Это затрудняло обмен данными и разработку переносимых приложений.
В апреле 1959 года Министерство обороны США созвало конференцию, на которой обсуждалась необходимость создания единого, переносимого языка для коммерческих приложений. В результате была сформирована группа, которая впоследствии стала известна как CODASYL. Первое заседание состоялось 28–29 мая 1959 года в Пентагоне.
Разработка COBOL
Основным результатом работы CODASYL в первые годы стало создание языка COBOL. Первая версия спецификации была опубликована в 1960 году. Язык был ориентирован на обработку файлов и бизнес-логику, что сделало его популярным в государственных учреждениях и крупных корпорациях. Комитет продолжал выпускать обновления и стандарты для COBOL на протяжении 1960-х годов.
Переход к базам данных
К середине 1960-х годов стало очевидно, что файловые системы хранения данных устаревают. Возникла потребность в более гибких и эффективных способах организации и доступа к данным. В 1965 году CODASYL создал подкомитет по базам данных (Data Base Task Group, DBTG), который занялся разработкой стандартов для систем управления базами данных.
Сетевая модель данных (Модель CODASYL)
Основные понятия
Сетевая модель данных, предложенная DBTG, стала одной из первых формальных моделей, описывающих структуру и манипулирование данными. Её ключевыми элементами являются:
- Запись (Record) — совокупность полей (атрибутов), представляющая собой единицу данных (например, «Сотрудник» с полями «Имя», «Должность», «Оклад»).
- Набор (Set) — именованная связь между двумя типами записей. Набор имеет один «владельца» (owner) и ноль или более «членов» (member). Например, набор «Отдел-Сотрудники» связывает запись «Отдел» (владелец) с записями «Сотрудник» (члены). Важно, что в сетевой модели, в отличие от иерархической, запись может быть членом нескольких наборов, что позволяет реализовывать сложные связи «многие-ко-многим».
- Схема (Schema) — описание всей структуры базы данных, включая типы записей, наборы и их взаимосвязи.
- Подсхема (Subschema) — часть схемы, доступная конкретному пользователю или приложению.
Язык манипулирования данными
Для работы с данными в модели CODASYL был разработан специализированный язык манипулирования данными (DML), который обычно встраивался в хост-язык, такой как COBOL или FORTRAN. Основные операции включали:
- FIND — поиск записи по ключу или по навигации (например, найти первую запись в наборе).
- GET — извлечение данных из найденной записи.
- STORE — добавление новой записи.
- MODIFY — изменение существующей записи.
- ERASE — удаление записи.
- CONNECT — включение записи в набор.
- DISCONNECT — исключение записи из набора.
Навигация по данным была курсорной: приложение последовательно перемещалось по записям и наборам, используя команды типа FIND NEXT или FIND OWNER.
Отличия от реляционной модели
Сетевая модель CODASYL существенно отличается от реляционной модели, предложенной Эдгаром Коддом в 1970 году. В реляционной модели данные хранятся в таблицах, а связи устанавливаются через значения общих полей (внешних ключей). В сетевой модели связи являются физическими и явными (через указатели), что делает навигацию более быстрой, но жёсткой и сложной для модификации.
Ключевые различия:
- Гибкость: Реляционная модель более гибкая для выполнения произвольных запросов (через SQL). Сетевая модель требует знания структуры связей для навигации.
- Сложность проектирования: Проектирование сетевой базы данных требует тщательного планирования связей, что сложнее, чем нормализация реляционных таблиц.
- Производительность: Для заранее известных, канонических запросов сетевая модель может быть производительнее, так как избегает операций соединения (JOIN).
Влияние и наследие
Коммерческие реализации
На основе спецификаций CODASYL было создано несколько коммерческих СУБД, которые активно использовались в 1970-х и 1980-х годах. К наиболее известным относятся:
- IDMS (Integrated Database Management System) компании Cullinet (изначально — B.F. Goodrich). Стала одной из самых популярных СУБД на мейнфреймах IBM.
- IMS (Information Management System) компании IBM, хотя она и не полностью соответствовала модели CODASYL (была иерархической), но испытала её влияние.
- DBMS-10/20 от Digital Equipment Corporation (DEC) для операционных систем TOPS-10 и TOPS-20.
- IMAGE от Hewlett-Packard (HP) для серии компьютеров HP 3000.
Упадок и переход к реляционным СУБД
К концу 1980-х годов реляционные СУБД, такие как Oracle, DB2 и SQL Server, начали доминировать на рынке. Простота использования, стандартизация SQL и поддержка сложных запросов сделали их более привлекательными для большинства приложений. Многие организации начали мигрировать с сетевых баз данных на реляционные. Однако некоторые системы, особенно на мейнфреймах, продолжали эксплуатироваться десятилетиями.
Влияние на современные технологии
Несмотря на то, что сетевая модель CODASYL уступила место реляционной, её идеи не исчезли полностью. Некоторые концепции нашли своё отражение в современных технологиях:
- Графовые базы данных (например, Neo4j, Amazon Neptune) используют концепцию явных связей между узлами, что перекликается с сетевыми наборами.
- Объектно-ориентированные базы данных (ObjectStore, Versant) также использовали идею навигации по ссылкам между объектами.
- Модели данных NoSQL, такие как документо-ориентированные (MongoDB) и семейства столбцов (Cassandra), частично заимствуют идеи гибкости схемы, хотя и не являются прямыми наследниками CODASYL.
Критика
Основные претензии к модели CODASYL были связаны с её сложностью. Для разработчиков требовалось глубокое понимание физической структуры данных, что замедляло разработку и усложняло сопровождение. Кроме того, навигационный характер доступа делал запросы негибкими: изменение структуры связей часто требовало переписывания кода приложений. В отличие от декларативного SQL, где пользователь указывает что получить, в CODASYL нужно было детально описывать как это сделать, что было чревато ошибками.
Распад комитета
Комитет CODASYL прекратил свою активную деятельность в начале 1990-х годов. Последние официальные спецификации были выпущены в 1984 году. С распространением SQL и реляционных баз данных необходимость в поддержке отдельного стандарта для сетевых СУБД отпала. Тем не менее, вклад CODASYL в историю информатики остаётся значительным: он заложил основы для формального описания структур данных и управления ими, а также создал один из первых промышленных языков программирования (COBOL), который используется до сих пор.
Источники
- CODASYL Data Base Task Group. (1971). April 1971 Report. ACM.
- Date, C. J. (2003). An Introduction to Database Systems (8th ed.). Addison-Wesley.
- Elmasri, R., & Navathe, S. B. (2016). Fundamentals of Database Systems (7th ed.). Pearson.
- Gray, J. N. (1992). The Benchmark Handbook for Database and Transaction Processing Systems. Morgan Kaufmann.
- Sammet, J. E. (1969). Programming Languages: History and Fundamentals. Prentice-Hall.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →