Открыть сервис

Реляционные СУБД

Реляционная СУБД (реляционная система управления базами данных) — это тип программного обеспечения, предназначенный для создания, ведения и использования реляционных баз данных. В основе реляционной модели данных лежит понятие отношения (relation), представляющего собой двумерную таблицу. Данные в такой СУБД организуются в виде совокупности таблиц, связанных между собой с помощью ключей, что обеспечивает целостность и непротиворечивость информации. Основным языком взаимодействия с реляционными СУБД является язык структурированных запросов (SQL).

История

Концепция реляционной модели данных была предложена английским математиком Эдгаром Франком Коддом в 1970 году в статье «A Relational Model of Data for Large Shared Data Banks». Кодд работал в исследовательской лаборатории IBM в Сан-Хосе (Калифорния). Его идея заключалась в том, чтобы заменить сложные иерархические и сетевые модели баз данных, существовавшие на тот момент, более простой и математически строгой моделью, основанной на теории множеств и предикатов.

Первые реализации реляционных СУБД появились в конце 1970-х годов. В 1977 году была основана компания Relational Software, Inc. (позднее переименованная в Oracle Corporation), которая в 1979 году выпустила Oracle V2 — первую коммерчески доступную реляционную СУБД, поддерживающую SQL. В том же году IBM начала разработку своей СУБД System R, которая стала прототипом для многих последующих коммерческих продуктов, включая IBM DB2.

В 1980-х годах реляционные СУБД стали доминирующим типом систем управления базами данных. Появились такие продукты, как dBase, Paradox, R:BASE, а также первые версии Microsoft SQL Server (1989) и PostgreSQL (1986, как проект Ingres). В 1995 году был выпущен MySQL, ставший одной из самых популярных СУБД с открытым исходным кодом. К началу 2000-х годов реляционные СУБД прочно заняли позиции в корпоративном секторе, финансовой сфере, государственном управлении и веб-разработке.

Основные принципы и свойства

Реляционная модель базируется на нескольких фундаментальных концепциях, сформулированных Коддом.

Отношения и таблицы

Основным элементом является отношение, которое в физической реализации представляется в виде таблицы. Каждая таблица имеет уникальное имя и состоит из строк (кортежей) и столбцов (атрибутов). Каждый столбец имеет имя и определённый тип данных (например, целое число, строка, дата). Порядок строк в таблице не имеет значения, а порядок столбцов фиксирован при создании таблицы.

Ключи

Для обеспечения целостности данных используются ключи:

  • Первичный ключ (Primary Key)уникальный идентификатор каждой строки в таблице. Он не может содержать NULL-значений и должен быть уникальным для всех строк.
  • Внешний ключ (Foreign Key) — столбец или набор столбцов в одной таблице, который ссылается на первичный ключ другой таблицы. Внешние ключи обеспечивают ссылочную целостность, гарантируя, что значения в связанных таблицах согласованы.
  • Кандидатный ключ (Candidate Key) — любой столбец или набор столбцов, который может быть выбран в качестве первичного ключа.

Нормализация

Нормализация — это процесс организации данных в таблицах для минимизации избыточности и устранения аномалий при вставке, обновлении и удалении. Выделяют несколько нормальных форм (1НФ, 2НФ, 3НФ, НФБК и др.), каждая из которых накладывает определённые ограничения на структуру таблиц. В большинстве практических случаев базы данных нормализуются до третьей нормальной формы (3НФ).

Язык 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 (Атомарность)транзакция выполняется как единое целое; если какая-то её часть не может быть выполнена, вся транзакция откатывается.
  • Consistency (Согласованность) — после завершения транзакции база данных переходит из одного согласованного состояния в другое, соблюдая все ограничения целостности.
  • Isolation (Изолированность) — параллельно выполняющиеся транзакции не должны влиять друг на друга; результаты их выполнения должны быть такими же, как если бы они выполнялись последовательно.
  • Durability (Долговечность) — после успешного завершения транзакции её результаты сохраняются даже в случае сбоя системы.

Классификация реляционных СУБД

Реляционные СУБД можно классифицировать по нескольким критериям.

По лицензированию

  • Проприетарные (коммерческие) — требуют покупки лицензии. Примеры: Oracle Database, Microsoft SQL Server, IBM Db2, SAP HANA.
  • Свободные (с открытым исходным кодом) — распространяются бесплатно, часто с возможностью коммерческой поддержки. Примеры: PostgreSQL, MySQL (с 2010 года принадлежит Oracle Corporation, но остаётся под двойной лицензией), MariaDB (форк MySQL), SQLite.

По архитектуре

  • Клиент-серверные — СУБД работает как сервер, принимающий запросы от клиентских приложений по сети. Примеры: Oracle, PostgreSQL, MySQL.
  • Встраиваемые (embedded) — библиотека, которая встраивается непосредственно в приложение, не требуя отдельного серверного процесса. Пример: SQLite.

По масштабу

  • Настольные (desktop) — ориентированы на одного пользователя или небольшую группу. Пример: Microsoft Access (файл-серверная архитектура).
  • Корпоративные (enterprise) — поддерживают сотни и тысячи одновременных пользователей, высокую доступность, репликацию, кластеризацию. Примеры: Oracle, Microsoft SQL Server Enterprise, PostgreSQL с расширениями.

Типовые характеристики и возможности

Современные реляционные СУБД обладают рядом общих характеристик:

  • Поддержка SQL — реализация стандарта SQL (обычно с расширениями).
  • Индексы — структуры, ускоряющие поиск данных (B-деревья, хеш-индексы, полнотекстовые индексы).
  • Представления (Views) — виртуальные таблицы, формируемые на основе запросов.
  • Хранимые процедуры и триггеры — программы, хранящиеся на сервере базы данных и выполняемые при определённых событиях.
  • Резервное копирование и восстановление — механизмы для защиты данных от потери.
  • Безопасность — управление пользователями, ролями, правами доступа на уровне таблиц, столбцов и строк.
  • Репликация — синхронизация данных между несколькими серверами для повышения отказоустойчивости и производительности чтения.
  • Кластеризация — объединение нескольких серверов в единую систему для обеспечения высокой доступности и масштабирования.

Применение

Реляционные СУБД являются основой для большинства информационных систем, где требуется надёжное хранение структурированных данных и сложные запросы. Основные области применения:

  • Корпоративные системы — ERP (SAP, 1С:Предприятие), CRM (Salesforce, Microsoft Dynamics), системы управления складом и логистикой.
  • Финансовый сектор — банковские системы, биржевые платформы, системы учёта ценных бумаг.
  • Электронная коммерция — интернет-магазины, платёжные шлюзы, системы управления заказами.
  • Государственные информационные системы — реестры, кадастры, базы данных налоговой службы и пенсионного фонда.
  • Веб-приложения — CMS (WordPress, Joomla), форумы, социальные сети (частично, в сочетании с NoSQL-решениями).
  • Научные исследования — хранение и анализ экспериментальных данных, геномные базы данных.

Критика и ограничения

Несмотря на широкое распространение, реляционные СУБД имеют ряд ограничений:

  • Сложность масштабирования — горизонтальное масштабирование (добавление новых серверов) для реляционных СУБД сложнее, чем для NoSQL-систем, из-за необходимости поддержания согласованности данных.
  • Производительность при больших объёмах данных — при работе с очень большими таблицами (миллиарды строк) и сложными запросами с множественными соединениями (JOIN) производительность может снижаться.
  • Негибкость схемы — изменение схемы базы данных (добавление столбцов, изменение типов) требует миграции и может быть трудоёмким для больших систем.
  • Ограниченная поддержка неструктурированных данных — реляционные СУБД плохо подходят для хранения документов, изображений, видео и других неструктурированных данных, хотя некоторые СУБД (например, PostgreSQL) поддерживают типы JSON и BLOB.

В ответ на эти ограничения в 2000-х годах появились NoSQL-системы (документо-ориентированные, графовые, ключ-значение), которые предлагают другую модель данных и более простую масштабируемость. Однако реляционные СУБД остаются стандартом для задач, где критична целостность данных, поддержка транзакций и сложные аналитические запросы.

Известные примеры реляционных СУБД

  • Oracle Database — коммерческая СУБД, одна из самых популярных в корпоративном секторе.
  • Microsoft SQL Server — коммерческая СУБД от Microsoft, тесно интегрированная с экосистемой Windows.
  • PostgreSQL — свободная объектно-реляционная СУБД, известная своей расширяемостью и соответствием стандартам.
  • MySQL — свободная реляционная СУБД, широко используется в веб-разработке (особенно в связке с PHP).
  • MariaDB — форк MySQL, созданный после приобретения MySQL компанией Oracle.
  • SQLite — встраиваемая реляционная СУБД, используемая в мобильных приложениях и браузерах.
  • IBM Db2 — коммерческая СУБД от IBM, исторически одна из первых реляционных систем.

Источники

  • Кодд, Э. Ф. «A Relational Model of Data for Large Shared Data Banks». Communications of the ACM, 1970.
  • Дейт, К. Дж. «Введение в системы баз данных». 8-е издание, 2005.
  • Рамakrishnan, R., Gehrke, J. «Database Management Systems». 3rd edition, 2003.
  • Документация PostgreSQL, MySQL, Oracle Database, Microsoft SQL Server.
  • Стандарт ISO/IEC 9075:2016 (SQL).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →