Реляционная СУБД
Реляционная СУБД (Реляционная система управления базами данных, РСУБД) — это программное обеспечение, предназначенное для создания, ведения и совместного использования реляционных баз данных. Основой реляционной модели данных является представление информации в виде двумерных таблиц (отношений), связанных между собой с помощью ключей. Реляционные СУБД обеспечивают целостность, непротиворечивость и безопасность данных, а также предоставляют стандартизированные средства для их выборки, модификации и администрирования, прежде всего через язык SQL (Structured Query Language).
История
Теоретические основы
Концепция реляционной модели данных была предложена английским математиком Эдгаром Франком Коддом в 1970 году в статье «A Relational Model of Data for Large Shared Data Banks», опубликованной в журнале Communications of the ACM. Кодд сформулировал 12 правил (позже расширенных до 13), которым должна соответствовать «истинно реляционная» СУБД. Его идея заключалась в том, чтобы отделить логическую структуру данных от физического способа их хранения, используя математические понятия множеств и предикатов.
Ранние реализации
Первые коммерческие реляционные СУБД появились в конце 1970-х — начале 1980-х годов. Ключевыми проектами стали:
- System R (IBM) — прототип, разработанный в 1974–1979 годах, на основе которого был создан первый диалект SQL.
- Ingres (Университет Калифорнии в Беркли) — открытая система, оказавшая влияние на коммерческие продукты, такие как PostgreSQL.
- Oracle (основана Ларри Эллисоном в 1977 году) — первая коммерческая РСУБД, использующая SQL в качестве основного интерфейса.
- dBase II (Ashton-Tate) — одна из первых РСУБД для персональных компьютеров, хотя и не полностью соответствовавшая реляционной модели.
Эра коммерциализации и стандартизации
В 1986 году язык SQL был принят Американским национальным институтом стандартов (ANSI) в качестве стандарта, что унифицировало разработку приложений. В 1990-х годах на рынке доминировали несколько крупных игроков: Oracle Database, IBM DB2, Microsoft SQL Server (выпущен в 1989 году для OS/2) и Sybase Adaptive Server Enterprise (позже приобретённый SAP). Параллельно развивались открытые системы, самой значимой из которых стала PostgreSQL (начало разработки — 1986 год, под названием Postgres). В 1995 году была выпущена MySQL (изначально под лицензией GPL), которая стала стандартом для веб-приложений.
Современный этап
С начала 2000-х годов наблюдается конкуренция между реляционными СУБД и новыми классами систем (NoSQL, NewSQL), ориентированными на горизонтальное масштабирование и работу с неструктурированными данными. В ответ на это реляционные СУБД активно развивают встроенную поддержку JSON-документов, геопространственных данных, колоночного хранения и облачных сервисов (например, Amazon Aurora, Google Cloud SQL, Yandex Managed Service for PostgreSQL). Крупные российские разработки: Postgres Professional (Postgres Pro Enterprise), Логос (СУБД для госсектора) и RED Database (на базе PostgreSQL).
Основные характеристики
Модель данных
- Отношение (таблица) — набор строк (кортежей) и столбцов (атрибутов). Каждая строка представляет уникальную запись (экземпляр сущности), каждый столбец — определённое свойство.
- Первичный ключ — столбец или набор столбцов, однозначно идентифицирующий каждую строку таблицы (например, ID пользователя).
- Внешний ключ — столбец, ссылающийся на первичный ключ другой таблицы, что обеспечивает связь между таблицами (например, заказ ссылается на ID клиента).
- Целостность данных: поддержание ссылочной, доменной (тип данных, ограничения) и пользовательской целостности (триггеры, хранимые процедуры).
Язык SQL
SQL — это декларативный язык, используемый для управления данными в реляционных СУБД. Основные подмножества:
- 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) — управление транзакциями (COMMIT, ROLLBACK, SAVEPOINT).
Транзакции и ACID
Реляционные СУБД гарантируют надёжность через свойства ACID:
- Atomicity (Атомарность) — каждая транзакция выполняется полностью или не выполняется вовсе (в случае ошибки откатывается).
- Consistency (Согласованность) — после выполнения транзакции все данные остаются в согласованном состоянии (соблюдаются все ограничения целостности).
- Isolation (Изоляция) — параллельные транзакции не влияют друг на друга (управляется уровнями изоляции: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE).
- Durability (Устойчивость) — после успешной фиксации изменения сохраняются даже при сбое (журнал упреждающей записи — WAL).
Индексы и оптимизация запросов
Для ускорения поиска используются различные типы индексов: B-деревья, хеш-индексы, GiST (Generalized Search Tree), GIN (Generalized Inverted Index) и пространственные индексы (R-деревья). Оптимизатор запросов (cost-based или rule-based) выбирает наиболее эффективный план выполнения SQL-запроса, учитывая статистику по данным, наличие индексов и размеры таблиц.
Классификация
По архитектуре различают:
- Традиционные (настольные) — для одного пользователя или малой группы (Microsoft Access, Paradox, LibreOffice Base). Ограничены по масштабируемости и параллельности.
- Клиент-серверные — ядро СУБД работает на центральном сервере, а пользователи подключаются через клиентские приложения (Oracle, MS SQL Server, PostgreSQL, MySQL). Этот тип является доминирующим в корпоративных системах.
- Встраиваемые — библиотека, встраиваемая непосредственно в приложение, не требующая отдельного серверного процесса (SQLite, Firebird Embedded). Применяются в мобильных приложениях, веб-браузерах и встроенных системах.
- Объектно-реляционные — расширяют модель данных поддержкой объектно-ориентированных концепций: пользовательские типы, методы, наследование таблиц (PostgreSQL, Oracle с опциями объекта).
- Распределённые — данные физически хранятся на нескольких узлах, но логически представляют единую базу (CockroachDB, Google Spanner, Greenplum).
По типу лицензирования:
- Проприетарные — Oracle Database, Microsoft SQL Server, IBM DB2.
- Открытые — PostgreSQL, MySQL (имеет двойное лицензирование: GPL и коммерческая от Oracle), MariaDB, Firebird.
Применение
Бизнес и корпоративные системы
Реляционные СУБД широко используются в ERP, CRM, бухгалтерском учёте, управлении складом и персоналом. Примеры: SAP ECC (на DB2), 1С:Предприятие (на MS SQL Server или PostgreSQL), Oracle E-Business Suite.
Веб-приложения и электронная коммерция
Большинство популярных веб-сайтов (включая социальные сети, блоги, интернет-магазины) хранят данные в реляционных СУБД. Например, MySQL является стандартом для многих CMS (WordPress, Joomla, Drupal), а PostgreSQL выбирают для высоконагруженных проектов (Reddit, Instagram, Skype).
Государственные и финансовые системы
В государственных и банковских системах реляционные СУБД (особенно Oracle и MS SQL Server) используются из-за требований к надёжности, стандартизации и аудиту. В России в рамках импортозамещения с 2015 года активно внедряются решения на базе PostgreSQL (например, в Федеральном казначействе, Пенсионном фонде РФ, Федеральной налоговой службе).
Научные и геоинформационные системы
PostgreSQL с расширением PostGIS является одной из самых мощных открытых СУБД для хранения и анализа пространственных данных. Используется в научных проектах (ГИС, астрономия, биология) и в коммерческих картографических сервисах (Яндекс.Карты, 2ГИС).
Примеры реляционных СУБД
| Название | Разработчик | Лицензия | Ключевые особенности |
|---|---|---|---|
| Oracle Database | Oracle Corporation | Проприетарная | Максимальная отказоустойчивость, Real Application Clusters (RAC), многопоточность, шифрование |
| Microsoft SQL Server | Microsoft | Проприетарная | Интеграция с Azure, Power BI, Analysis Services, компонент Database Engine |
| PostgreSQL | PostgreSQL Global Development Group | Открытая (PostgreSQL License) | Объектно-реляционная архитектура, расширяемость (JSON, геоданные, полный текст), поддержка SQL/MED (управление внешними данными) |
| MySQL | Oracle Corporation | Открытая (GPL) / Коммерческая | Скорость чтения, репликация «master-slave», встроенная поддержка в PHP и многих CMS |
| SQLite | D. Richard Hipp | Общественное достояние | Встраиваемая, без серверного процесса, единый файл БД, минимальные системные требования |
| Firebird | Firebird Foundation | Открытая (IPL и IDPL) | Полная поддержка SQL 2008, многопоколенная архитектура (MVCC), низкое потребление памяти |
| Postgres Professional (Postgres Pro) | Postgres Professional (Россия) | Проприетарная / Открытая | Расширения для оптимизации (асинхронный WAL, продвинутое сжатие), соответствие стандартам ФСТЭК, совместимость с PostgreSQL |
| RED Database | RED Soft (Россия) | Проприетарная | Тиражирование, поддержка кластеров, интеграция с 1С, ориентация на промышленное импортозамещение |
Критика и ограничения
Основные недостатки реляционных СУБД:
- Сложность масштабирования — горизонтальное масштабирование (шардинг) требует существенной доработки приложения и не является полностью прозрачным в отличие от многих NoSQL-систем.
- Низкая эффективность для неструктурированных данных — хранение больших бинарных объектов (BLOB) или сложных деревьев (XML/JSON) может приводить к деформализации и снижению производительности.
- Высокие накладные расходы на поддержку ACID — в системах с тысячами одновременных транзакций изоляция может существенно замедлять работу. Для решения используются техники шардинга и асинхронной репликации.
- Сложность настройки — для достижения максимальной производительности требуется глубокое понимание планов выполнения запросов, индексов, блокировок и журналирования.
Источники
- Кодд, Э. Ф. (1970). «A Relational Model of Data for Large Shared Data Banks». Communications of the ACM, 13(6), 377–387.
- Date, C. J. (2013). An Introduction to Database Systems (8-е изд.). Addison-Wesley.
- PostgreSQL Global Development Group. PostgreSQL 16 Documentation. URL: postgresql.org/docs/current/.
- Oracle Corporation. Oracle Database Concepts. Oracle Help Center.
- Microsoft. SQL Server technical documentation. Microsoft Docs.
- Ramakrishnan, R., Gehrke, J. (2002). Database Management Systems (3-е изд.). McGraw-Hill.
- Материалы по СУБД Postgres Pro и RED Database из официальных сайтов разработчиков (Postgres Professional, RED Soft).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →