System R
System R — это экспериментальная реляционная система управления базами данных (СУБД), разработанная в исследовательской лаборатории компании IBM в Сан-Хосе (Калифорния) в 1970-х годах. Она стала первой реализацией реляционной модели данных, предложенной Эдгаром Коддом в 1970 году, и оказала определяющее влияние на развитие современных реляционных СУБД, включая коммерческие продукты IBM (SQL/DS, DB2) и других вендоров.
История
Предпосылки и создание
Идея реляционной модели, предложенная Эдгаром Ф. Коддом в статье 1970 года «A Relational Model of Data for Large Shared Data Banks», предполагала организацию данных в виде таблиц (отношений) с операциями реляционной алгебры, что позволяло избавиться от сложных навигационных связей, характерных для иерархических и сетевых СУБД того времени. Руководство IBM, однако, первоначально не проявило значительного энтузиазма, так как компания уже имела успешную иерархическую СУБД IMS (Information Management System). Тем не менее, под влиянием Кодда и других учёных, в 1974 году в лаборатории IBM в Сан-Хосе был запущен проект по созданию экспериментальной реляционной СУБД. Проект получил название System R (буква «R» — от «relational» — «реляционная»).
Ключевые этапы разработки
Разработка System R велась с 1974 по 1979 год. Проект прошёл несколько фаз:
- Фаза I (1974–1975): Была создана первая версия — однопользовательская система, предназначенная для проверки основных концепций. На этом этапе был разработан язык запросов SEQUEL (Structured English Query Language), ставший прообразом современного SQL. SEQUEL позволял формулировать запросы к таблицам на естественном английском.
- Фаза II (1976–1978): Построена многопользовательская версия System R с поддержкой одновременного доступа, блокировок, журнализации и восстановления. В 1977 году начались внутренние пилотные испытания в нескольких подразделениях IBM. В течение 1978–1979 годов система была установлена в ряде внешних организаций (промышленных и университетских) для реальной эксплуатации.
- Фаза III (1979): На основе опыта эксплуатации System R были выпущены спецификации для коммерческой реализации. В 1981 году IBM выпустила первый коммерческий продукт на базе технологий System R — SQL/DS (SQL/Data System) для операционной системы DOS/VSE, а в 1983 году — DB2 (Database 2) для MVS.
Архитектура и особенности
Многоуровневая архитектура
System R использовала многоуровневую архитектуру, изолирующую пользовательскую логику от физического хранения данных:
- Внешний уровень (View Layer): Пользователи взаимодействовали с таблицами через виртуальные представления (views), не зависящие от конкретного физического размещения данных.
- Концептуальный уровень (Relational Layer): Реляционное ядро, отвечавшее за обработку запросов на языке SQL, оптимизацию, согласование транзакций и целостность данных.
- Внутренний уровень (Storage System, RSS — Research Storage System): RSS управлял физическим хранением данных на дисках, управлением страницами памяти, индексами и буферизацией.
Язык SQL (SEQUEL)
Язык запросов SEQUEL (позднее — SQL, Structured Query Language) стал главным наследием System R. Он включал команды для определения данных (CREATE TABLE), манипулирования данными (SELECT, INSERT, UPDATE, DELETE) и управления доступом. SQL был объявлен стандартом ANSI и ISO в 1986–1987 годах (SQL-86), после чего стал основным языком реляционных СУБД.
Оптимизация запросов
В System R был реализован один из первых оптимизаторов запросов на основе стоимости (cost-based optimizer). Он анализировал статистику по таблицам (кардинальность, распределение значений) и выбирал наиболее эффективный план выполнения запроса из нескольких альтернативных. Эта техника лежит в основе всех современных реляционных СУБД.
Управление транзакциями
Для обеспечения изоляции параллельных транзакций System R использовала механизм двухфазной блокировки (Two-Phase Locking, 2PL), предложенный Джимом Греем. Транзакции могли быть откатаны (ROLLBACK) в случае ошибки, а система поддерживала ацидность (атомарность, согласованность, изолированность, долговечность — свойства ACID) с помощью журнала упреждающей записи (WAL, Write-Ahead Logging).
Влияние и наследие
System R никогда не была коммерчески продаваемым продуктом, но её архитектурные решения и языковые разработки стали основой для практически всех реляционных СУБД, созданных впоследствии. Среди прямых потомков:
- SQL/DS и DB2 от IBM.
- Oracle Database (в ранних версиях использовала SQL, основанный на SEQUEL).
- Sybase (позднее — SAP ASE).
- Microsoft SQL Server (ведёт происхождение от Sybase).
- MySQL и PostgreSQL — опосредованно, через стандарты SQL и общие принципы реляционного моделирования.
Ключевые технологические инновации, внедрённые в System R:
- Язык SQL как декларативный интерфейс.
- Оптимизатор запросов с учётом стоимости.
- Поддержка транзакций с двухфазной блокировкой и WAL.
- Индексы на основе B-деревьев для ускорения поиска.
- Виртуальные таблицы (views) для разграничения доступа.
Критика и ограничения
Несмотря на огромное влияние, System R имела ряд недостатков, позже устранённых в её коммерческих версиях:
- Сложность установки и настройки: Система требовала значительных вычислительных ресурсов (для своего времени) и экспертных знаний администратора.
- Производительность: В ранних версиях System R уступала «навигационным» СУБД (например, IMS) по скорости выполнения простых запросов к большим объёмам данных. Абстракция реляционной модели приводила к накладным расходам.
- Функциональные ограничения: Отсутствовали поддержка триггеров, хранимых процедур и ограничений внешних ключей (они были добавлены позже в DB2).
Тем не менее, экспериментальный характер System R позволил разработать и протестировать фундаментальные принципы, которые сделали возможным массовое внедрение реляционных баз данных в корпоративных и веб-системах.
Источники
- Chamberlin, D. D., et al. (1976). «SEQUEL 2: A Unified Approach to Data Definition, Manipulation, and Control». IBM Journal of Research and Development.
- Chamberlin, D. D. (1998). «A Complete Guide to DB2 Universal Database». Morgan Kaufmann.
- Gray, J., Reuter, A. (1993). «Transaction Processing: Concepts and Techniques». Morgan Kaufmann.
- Date, C. J. (2003). «An Introduction to Database Systems». 8th edition. Addison-Wesley.
- IBM Research. «System R: A Relational Database Management System». Technical Report RJ 1769, 1976.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →