Relational Database Systems¶
Реляционная система управления базами данных (сокр. РСУБД, англ. Relational Database Management System, RDBMS) — это программное обеспечение, предназначенное для создания, ведения и использования реляционных баз данных. Основой РСУБД является реляционная модель данных, предложенная в 1970 году сотрудником компании IBM Эдгаром Франком Коддом. В основе этой модели лежит представление данных в виде совокупности двумерных таблиц (отношений), связанных между собой с помощью ключей. РСУБД обеспечивает выполнение операций по определению структуры данных, их манипулированию (вставка, обновление, удаление, выборка) и управлению доступом, целостностью и параллельностью.
¶История
¶Теоретические основы
Концепция реляционной модели была впервые опубликована Э. Ф. Коддом в статье «A Relational Model of Data for Large Shared Data Banks» (1970). Кодд предложил заменить иерархические и сетевые модели, доминировавшие в то время, на математически строгую модель, основанную на теории множеств и математической логике. Ключевым понятием стало «отношение» (relation) — таблица, строки которой (кортежи) представляют собой записи, а столбцы (атрибуты) — поля данных. Кодд также сформулировал 12 правил (на самом деле их 13, включая правило нулевое), которым должна удовлетворять полноценная реляционная СУБД.
¶Ранние реализации
Первые коммерческие РСУБД появились в конце 1970-х — начале 1980-х годов. К числу пионеров относятся:
- Ingres (1977, Калифорнийский университет в Беркли) — одна из первых систем, реализовавшая реляционную модель. Впоследствии стала основой для коммерческих продуктов, таких как Postgres.
- System R (1974–1979, IBM) — исследовательский проект, в ходе которого был разработан язык SQL (Structured Query Language), ставший стандартом для работы с реляционными базами данных. Коммерческим продуктом на основе System R стала DB2 (1983).
- Oracle (1979, компания Relational Software, Inc., позже Oracle Corporation) — первая коммерческая РСУБД, поддерживающая SQL. Первая версия (Oracle 2) была выпущена в 1979 году.
¶Стандартизация и расцвет
В 1986 году Американский национальный институт стандартов (ANSI) принял первый стандарт языка SQL (SQL-86). В 1987 году к нему присоединилась Международная организация по стандартизации (ISO). Стандартизация SQL способствовала унификации интерфейсов и переносимости приложений между различными РСУБД. В 1990-е годы реляционные СУБД стали доминирующим типом систем управления базами данных, вытеснив иерархические и сетевые модели. Крупнейшими коммерческими продуктами стали Oracle, IBM DB2, Microsoft SQL Server (выпущен в 1989 году) и Sybase.
¶Эра открытого кода и современные тенденции
С конца 1990-х годов значительное распространение получили РСУБД с открытым исходным кодом:
- MySQL (1995) — популярная система для веб-приложений, особенно в связке с PHP. В настоящее время принадлежит корпорации Oracle.
- PostgreSQL (1996) — наследник проекта Ingres, отличается высокой функциональностью, поддержкой расширенных типов данных и объектно-реляционных возможностей.
В 2000-е годы, с ростом объёмов данных и требований к масштабируемости, возникло движение NoSQL, предлагающее альтернативы реляционной модели (документо-ориентированные, графовые, ключ-значение и другие СУБД). Однако РСУБД остаются основным инструментом для большинства бизнес-приложений, где требуется строгая согласованность данных, поддержка транзакций ACID и сложные запросы с соединениями таблиц.
¶Основные характеристики
¶Реляционная модель данных
Данные в РСУБД организованы в виде таблиц (отношений). Каждая таблица имеет уникальное имя и состоит из строк (кортежей) и столбцов (атрибутов). Каждый столбец имеет определённый тип данных (например, целое число, строка, дата). Строки таблицы не имеют определённого порядка. Для обеспечения целостности данных используются ключи:
- Первичный ключ (Primary Key) — один или несколько столбцов, уникально идентифицирующих каждую строку в таблице. Значения первичного ключа не могут быть NULL и не должны повторяться.
- Внешний ключ (Foreign Key) — столбец или набор столбцов, которые ссылаются на первичный ключ другой таблицы. Внешние ключи обеспечивают ссылочную целостность, гарантируя, что связи между таблицами остаются корректными.
¶Язык SQL
SQL (Structured Query Language) является стандартным языком для работы с реляционными базами данных. Он делится на несколько подмножеств:
- DDL (Data Definition Language) — язык определения данных (CREATE, ALTER, DROP для создания, изменения и удаления таблиц, индексов и других объектов).
- DML (Data Manipulation Language) — язык манипулирования данными (SELECT, INSERT, UPDATE, DELETE для выборки, вставки, обновления и удаления данных).
- DCL (Data Control Language) — язык управления доступом (GRANT, REVOKE для предоставления и отзыва прав пользователей).
- TCL (Transaction Control Language) — язык управления транзакциями (BEGIN, COMMIT, ROLLBACK для управления транзакциями).
¶Транзакции и ACID
Транзакция — это логически завершённая операция над данными (например, перевод денег с одного счёта на другой), которая выполняется как единое целое. Для обеспечения надёжности РСУБД должны поддерживать свойства ACID:
- Atomicity (Атомарность) — транзакция выполняется полностью или не выполняется вовсе. Если часть операций внутри транзакции завершается неудачно, все изменения откатываются (rollback).
- Consistency (Согласованность) — транзакция переводит базу данных из одного согласованного состояния в другое. Все правила целостности, ограничения и триггеры должны быть соблюдены.
- Isolation (Изолированность) — результаты параллельно выполняющихся транзакций не должны влиять друг на друга. Для этого используются уровни изоляции (Read Uncommitted, Read Committed, Repeatable Read, Serializable).
- Durability (Долговечность) — после успешного завершения транзакции (commit) её результаты сохраняются даже в случае сбоя системы (например, отключения питания).
¶Нормализация
Нормализация — это процесс организации данных в таблицах для минимизации избыточности и устранения аномалий обновления, вставки и удаления. Она основана на нормальных формах (1НФ, 2НФ, 3НФ, НФБК и др.). В большинстве практических случаев базы данных нормализуются до третьей нормальной формы (3НФ). Денормализация (намеренное отступление от нормальных форм) может применяться для повышения производительности при чтении данных.
¶Классификация РСУБД
¶По модели данных
- Чисто реляционные — строго следуют реляционной модели (например, MySQL, PostgreSQL, Oracle).
- Объектно-реляционные — расширяют реляционную модель объектно-ориентированными возможностями: поддержка пользовательских типов данных, наследования, методов (например, PostgreSQL, Oracle с опциями).
¶По способу распространения
- Коммерческие — проприетарное программное обеспечение, требующее покупки лицензии. Примеры: Oracle Database, Microsoft SQL Server, IBM Db2.
- С открытым исходным кодом — распространяются бесплатно, часто с возможностью коммерческой поддержки. Примеры: MySQL, PostgreSQL, MariaDB, SQLite.
¶По архитектуре
- Клиент-серверные — сервер базы данных работает как отдельный процесс, обслуживающий запросы от множества клиентов (например, Oracle, MySQL, PostgreSQL).
- Встраиваемые (embedded) — библиотека, встраиваемая непосредственно в приложение, без необходимости отдельного серверного процесса (например, SQLite, Firebird Embedded).
¶Применение
Реляционные СУБД являются основой для подавляющего большинства информационных систем, где требуется структурированное хранение и обработка данных. Основные области применения:
- Корпоративные информационные системы (ERP, CRM, SCM) — управление ресурсами предприятия, взаимоотношениями с клиентами, цепочками поставок.
- Банковские и финансовые системы — обработка транзакций, ведение счетов, расчёт процентов, учёт ценных бумаг.
- Веб-приложения и электронная коммерция — хранение данных о пользователях, заказах, товарах, контенте (например, WordPress, Magento, Joomla используют MySQL).
- Государственные информационные системы — учёт населения, налогов, регистрация прав собственности, здравоохранение.
- Научные исследования — хранение и анализ экспериментальных данных, геномная информация, метеоданные (при условии, что данные хорошо структурированы).
¶Критика и ограничения
Несмотря на широкое распространение, реляционные СУБД имеют ряд ограничений:
- Сложность масштабирования — традиционные РСУБД трудно горизонтально масштабировать (добавлять новые серверы) для обработки очень больших объёмов данных (Big Data). Для этого часто используются шардинг (разбиение таблиц на части) и репликация, что усложняет архитектуру.
- Негибкость схемы — реляционная модель требует заранее определённой и жёсткой структуры таблиц (схемы). Изменение схемы (добавление нового столбца) может быть трудоёмким и приводить к простою системы.
- Проблемы с неструктурированными данными — РСУБД плохо подходят для хранения и обработки неструктурированных данных (изображения, видео, тексты, JSON-документы), хотя современные системы (например, PostgreSQL) поддерживают такие типы данных.
- Производительность при сложных запросах — выполнение сложных запросов с множественными соединениями (JOIN) может быть медленным на больших таблицах без правильно настроенных индексов.
¶Основные продукты
| Название | Разработчик | Тип лицензии | Особенности |
|---|---|---|---|
| Oracle Database | Oracle Corporation | Коммерческая | Высокая производительность, надёжность, поддержка кластеризации (RAC), расширенные возможности для крупных предприятий. |
| Microsoft SQL Server | Microsoft | Коммерческая | Тесная интеграция с экосистемой Microsoft (Windows, .NET, Azure), поддержка T-SQL, Analysis Services, Reporting Services. |
| IBM Db2 | IBM | Коммерческая | Поддержка различных платформ (Linux, Unix, Windows, z/OS), высокая масштабируемость, встроенная поддержка AI. |
| PostgreSQL | PostgreSQL Global Development Group | Открытая (BSD-подобная) | Максимальное соответствие стандартам SQL, поддержка расширенных типов данных (JSON, массивы, геоданные), объектно-реляционные возможности, высокая расширяемость. |
| MySQL | Oracle Corporation | Двойная (GPL / коммерческая) | Высокая скорость работы, простота настройки, популярность в веб-разработке, поддержка различных движков хранения (InnoDB, MyISAM). |
| SQLite | D. Richard Hipp | Общественное достояние | Встраиваемая СУБД (не требует сервера), минимальное потребление ресурсов, используется в мобильных приложениях и браузерах. |
¶Источники
- Кодд Э. Ф. «A Relational Model of Data for Large Shared Data Banks». Communications of the ACM, 1970.
- Дейт К. Дж. «Введение в системы баз данных». 8-е издание. — М.: Вильямс, 2005.
- Гарсиа-Молина Г., Ульман Дж., Уидом Дж. «Системы баз данных. Полный курс». — М.: Вильямс, 2003.
- ISO/IEC 9075:2023 — Information technology — Database languages — SQL.
- Документация по PostgreSQL, MySQL, Oracle Database, Microsoft SQL Server.