IBM System R
IBM System R — это экспериментальная реляционная система управления базами данных (СУБД), разработанная в исследовательской лаборатории компании IBM в Сан-Хосе (Калифорния) в 1970-х годах. Проект, начатый в 1974 году и завершённый в 1979 году, стал первой реализацией реляционной модели данных, предложенной Эдгаром Коддом в 1970 году. System R доказала практическую применимость реляционной модели и заложила основы для современных коммерческих СУБД, включая IBM DB2, Oracle и Microsoft SQL Server.
История
Предпосылки создания
В 1970 году Эдгар Кодд, работавший в IBM, опубликовал статью «A Relational Model of Data for Large Shared Data Banks», в которой предложил новую модель организации данных, основанную на математическом понятии отношения (таблицы). В отличие от существовавших тогда иерархических и сетевых СУБД (например, IBM IMS), реляционная модель обещала более простой и гибкий доступ к данным через декларативные запросы, а не через навигационные процедуры.
Однако в IBM первоначально скептически отнеслись к идеям Кодда. Для проверки их практической реализуемости в 1974 году был запущен проект System R. Руководителями проекта стали Дональд Чемберлин (Donald D. Chamberlin) и Рэймонд Бойс (Raymond F. Boyce), а в команду вошли такие исследователи, как Майкл Стоунбрейкер (Michael Stonebraker), Джим Грей (Jim Gray) и другие.
Разработка и прототипы
Проект System R прошёл несколько этапов:
- 1974–1975: Создание первого прототипа, реализованного на языке PL/I под операционной системой VM/CMS. Этот прототип включал интерпретатор запросов на языке SQUARE (Specifying Queries as Relational Expressions), который был предшественником SQL.
- 1975–1976: Разработка второго прототипа, который уже использовал язык SQL (Structured Query Language), созданный Чемберлином и Бойсом. SQL был разработан как более удобный и читаемый язык запросов, чем SQUARE. В этом прототипе была реализована полная реляционная алгебра, включая операции соединения, проекции и выборки.
- 1976–1979: Фаза тестирования и доработки. System R была развёрнута внутри IBM для внутреннего использования (например, в отделе производства и в исследовательских группах). В 1979 году проект был официально завершён, а его результаты опубликованы в серии статей.
Влияние на индустрию
System R оказала огромное влияние на развитие баз данных. В 1979 году, после завершения проекта, IBM выпустила коммерческий продукт — IBM SQL/DS (позже переименованный в IBM DB2), который был основан на архитектуре System R. Параллельно некоторые участники проекта, включая Майкла Стоунбрейкера, основали компанию Oracle (изначально называвшуюся Software Development Laboratories), которая выпустила первую коммерческую реляционную СУБД в 1979 году, также основанную на принципах System R.
Архитектура и ключевые особенности
Язык SQL
Система R ввела в обиход язык SQL (Structured Query Language), который стал стандартом для реляционных баз данных. SQL в System R поддерживал:
- DDL (Data Definition Language): команды
CREATE TABLE,ALTER TABLE,DROP TABLE. - DML (Data Manipulation Language): команды
SELECT,INSERT,UPDATE,DELETE. - Управление транзакциями: команды
BEGIN TRANSACTION,COMMIT,ROLLBACK.
SQL в System R был декларативным: пользователь описывал, какие данные нужны, а не как их получить. Это кардинально отличалось от навигационных языков того времени.
Многоуровневая архитектура
System R использовала трёхуровневую архитектуру:
- Внешний уровень (External Level): представление данных для пользователей (виртуальные таблицы — представления, views).
- Концептуальный уровень (Conceptual Level): логическая структура всей базы данных (таблицы, связи, ограничения целостности).
- Внутренний уровень (Internal Level): физическое хранение данных на диске (методы доступа, индексы, страницы).
Такая архитектура позволяла изменять физическое хранение без изменения логической структуры, что обеспечивало физическую независимость данных.
Оптимизация запросов
System R включала один из первых оптимизаторов запросов. Он анализировал SQL-запрос и выбирал наиболее эффективный план выполнения, используя:
- Статистику по таблицам (количество строк, распределение значений).
- Методы доступа (последовательный просмотр, индексный поиск).
- Порядок соединения таблиц (join ordering).
Оптимизатор System R базировался на динамическом программировании и мог обрабатывать запросы с несколькими соединениями.
Управление транзакциями
Система R поддерживала транзакции с свойствами ACID (атомарность, согласованность, изолированность, долговечность). Для этого использовались:
- Журнал транзакций (WAL — Write-Ahead Logging): все изменения сначала записывались в журнал, а затем в базу данных. Это обеспечивало восстановление после сбоев.
- Блокировки (locking): для изоляции транзакций использовались блокировки на уровне страниц (page-level locking). System R поддерживала двухфазную блокировку (2PL), предотвращающую аномалии параллельного доступа.
Индексы
System R поддерживала индексы для ускорения поиска. Использовались:
- B-деревья (B-trees): для упорядоченных данных и диапазонных запросов.
- Хеш-индексы: для точного совпадения ключей.
Классификация
System R относится к следующим категориям:
- По модели данных: реляционная СУБД.
- По времени создания: экспериментальная СУБД второго поколения (после ранних прототипов, таких как IBM System/38).
- По архитектуре: клиент-серверная (внутри IBM использовалась как многопользовательская система).
- По языку запросов: SQL-ориентированная.
Применение
Внутреннее использование в IBM
System R использовалась внутри IBM для:
- Управления производственными данными (например, учёт деталей и заказов).
- Научных исследований (анализ данных экспериментов).
- Тестирования новых идей в области баз данных (например, распределённые запросы, репликация).
Влияние на коммерческие продукты
System R стала основой для:
- IBM DB2 (выпущена в 1983 году) — одна из самых популярных коммерческих реляционных СУБД.
- Oracle (первая версия выпущена в 1979 году) — основана на принципах System R, но с некоторыми отличиями (например, Oracle использовала блокировки на уровне строк, а не страниц).
- Microsoft SQL Server (выпущен в 1989 году) — также унаследовал многие архитектурные решения от System R.
Наследие
System R продемонстрировала, что реляционная модель может быть эффективно реализована на практике. Её идеи (SQL, оптимизация запросов, управление транзакциями, индексы) стали стандартом для всех современных СУБД, включая PostgreSQL, MySQL, SQLite и другие.
Критика
Несмотря на успех, System R имела ряд недостатков:
- Производительность: на ранних этапах System R была медленнее существовавших иерархических СУБД (например, IMS) из-за накладных расходов на оптимизацию и управление транзакциями. Это было одной из причин, по которой IBM не сразу выпустила коммерческий продукт.
- Сложность: архитектура System R была сложной для понимания и настройки. Требовались квалифицированные администраторы баз данных.
- Ограничения по масштабируемости: System R не поддерживала распределённые базы данных или кластеризацию, что ограничивало её применение в крупных организациях.
- Отсутствие поддержки сложных типов данных: System R работала только с простыми типами (числа, строки, даты) и не поддерживала массивы, XML или другие сложные структуры.
Интересные факты
- Название: System R не является аббревиатурой. Буква «R» в названии означала «Relational» (реляционная), но также могла означать «Research» (исследовательская).
- Первая коммерческая СУБД: Первой коммерческой реляционной СУБД стала Oracle (1979 год), а не IBM DB2 (1983 год). Это произошло из-за того, что IBM затянула выпуск продукта, опасаясь конкуренции с собственной системой IMS.
- Язык SQL: Первоначально SQL назывался SEQUEL (Structured English Query Language), но из-за торговой марки, принадлежавшей компании Hawker Siddeley, название было изменено на SQL.
- Участники проекта: Многие участники System R стали пионерами в области баз данных. Майкл Стоунбрейкер получил премию Тьюринга в 2014 году за вклад в развитие реляционных баз данных. Джим Грей также получил премию Тьюринга в 1998 году за работы по управлению транзакциями.
Источники
- Chamberlin, D. D., et al. «A History and Evaluation of System R.» Communications of the ACM, vol. 24, no. 10, 1981.
- Codd, E. F. «A Relational Model of Data for Large Shared Data Banks.» Communications of the ACM, vol. 13, no. 6, 1970.
- Gray, J., & Reuter, A. «Transaction Processing: Concepts and Techniques.» Morgan Kaufmann, 1993.
- IBM Research. «System R: A Relational Database Management System.» IBM Journal of Research and Development, vol. 20, no. 2, 1976.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →