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

Система управления базами данных

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

История

Развитие СУБД прошло несколько этапов, тесно связанных с эволюцией вычислительной техники и потребностей бизнеса.

Ранние системы (1960-е — 1970-е)

Первые системы управления данными появились в 1960-х годах для мэйнфреймов. Данные хранились в виде иерархических (IMS от IBM) или сетевых (IDMS) структур. Эти системы были жёстко привязаны к конкретным приложениям, требовали глубоких знаний физического размещения данных и не поддерживали независимость логического и физического уровней. В 1970 году Эдгар Кодд из IBM предложил реляционную модель данных, что стало революцией: данные стали представляться в виде таблиц, а операции над ними — через математическую реляционную алгебру.

Эра реляционных СУБД (1980-е — 1990-е)

В 1980-х годах коммерческие реляционные СУБД (РСУБД) — Oracle, DB2, Ingres, Sybase, Microsoft SQL Server — стали доминировать на рынке. Ключевым достижением стал язык SQL (Structured Query Language), стандартизированный ANSI и ISO. SQL позволил описывать запросы декларативно, не указывая способ выполнения. В этот же период сформировались требования ACID (атомарность, согласованность, изолированность, долговечность), ставшие основой для транзакционных систем. В 1995 году появилась MySQL (открытая СУБД), а в 1996 — PostgreSQL, заложившие основы для массового распространения открытых решений.

Постреляционные и NoSQL-системы (2000-е — настоящее время)

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

  • Документо-ориентированные СУБД (MongoDB, Couchbase) — данные хранятся в виде JSON-документов.
  • Колоночные СУБД (Apache Cassandra, ClickHouse) — оптимизированы для аналитики и агрегаций.
  • Графовые СУБД (Neo4j, ArangoDB) — для работы со связями между сущностями.
  • Ключ-значение (Redis, Amazon DynamoDB) — для кэширования и высоконагруженных сценариев.

Позже появились NewSQL-системы (CockroachDB, Google Spanner), пытающиеся сочетать ACID-гарантии реляционных СУБД с масштабируемостью NoSQL.

Классификация

СУБД классифицируют по нескольким признакам.

По модели данных

  • Реляционные (РСУБД) — данные в таблицах, связи через внешние ключи. Примеры: PostgreSQL, MySQL, Oracle.
  • Иерархические — данные в виде дерева (каталог файлов, IMS).
  • Сетевые — данные в виде графа с множественными связями (IDMS).
  • Объектно-ориентированные — данные как объекты с методами (ObjectDB, db4o).
  • Документо-ориентированные — данные в виде документов (MongoDB).
  • Графовые — данные как вершины и рёбра (Neo4j).
  • Ключ-значение — простейшая модель (Redis).

По способу организации хранения

  • Централизованные — вся БД на одном сервере.
  • Распределённые — данные физически размещены на нескольких узлах, но логически представляют единое целое (Cassandra, Google Spanner).
  • Файловые — данные хранятся в файлах операционной системы (SQLite — встраиваемая СУБД).

По степени доступности

  • Однопользовательские — доступ одного клиента (SQLite, Microsoft Access).
  • Многопользовательские — одновременный доступ множества пользователей с блокировками и управлением транзакциями (Oracle, PostgreSQL).

По типу использования

  • Встраиваемые — встраиваются в приложение (SQLite, Berkeley DB).
  • Клиент-серверные — работают как отдельный процесс, принимающий запросы по сети (MySQL, Microsoft SQL Server).
  • Облачные — предоставляются как сервис (Amazon RDS, Яндекс.Облако, Google Cloud SQL).

Устройство и архитектура

Типичная реляционная СУБД состоит из следующих компонентов:

Ядро СУБД

Отвечает за управление физическим хранением данных, буферизацию, выполнение операций ввода-вывода. Включает менеджер памяти, менеджер дискового пространства и менеджер транзакций.

Менеджер запросов

Обрабатывает SQL-запросы: парсинг, оптимизация (выбор наиболее эффективного плана выполнения), компиляция или интерпретация. Оптимизатор запросов — критически важный компонент, определяющий скорость выполнения.

Менеджер транзакций

Обеспечивает свойства ACID:

  • Атомарность — транзакция выполняется полностью или не выполняется вовсе.
  • Согласованность — транзакция переводит БД из одного корректного состояния в другое.
  • Изолированность — параллельные транзакции не влияют друг на друга (реализуется блокировками или версионированием).
  • Долговечность — результат завершённой транзакции сохраняется даже при сбое.

Менеджер целостности

Контролирует соблюдение ограничений (первичные ключи, внешние ключи, уникальность, проверочные условия).

Словарь данных (метаданные)

Хранит информацию о структуре БД: таблицы, столбцы, индексы, права доступа.

Применение

СУБД используются практически во всех областях, где требуется долговременное хранение и обработка структурированных данных:

  • Банковское дело и финансы — транзакционные системы (Oracle, DB2) для обработки платежей, кредитов, счетов.
  • Электронная коммерция — каталоги товаров, корзины, заказы (MySQL, PostgreSQL).
  • Социальные сети и мессенджеры — профили пользователей, сообщения, ленты новостей (Cassandra, MongoDB, Redis).
  • Наука и аналитика — хранение результатов экспериментов, временных рядов (ClickHouse, InfluxDB).
  • Государственные информационные системы — реестры, базы данных граждан (PostgreSQL, Oracle).
  • Встраиваемые системы и мобильные приложения — SQLite в Android, iOS, браузерах.

Примеры популярных СУБД

Реляционные

  • PostgreSQL — открытая, поддерживает расширенные типы данных, JSON, полнотекстовый поиск, транзакции ACID.
  • MySQL — широко используется в веб-разработке (LAMP-стек), доступна в версиях Community и Enterprise.
  • Oracle Database — коммерческая СУБД для корпоративного сектора, высокая производительность и надёжность.
  • Microsoft SQL Server — интегрирована с экосистемой .NET, поддерживает T-SQL, Analysis Services.
  • SQLite — встраиваемая, файловая, не требует отдельного сервера.

NoSQL

  • MongoDB — документо-ориентированная, гибкая схема, горизонтальное масштабирование.
  • Redis — in-memory, ключ-значение, используется для кэширования, очередей, сессий.
  • Apache Cassandra — колоночная, децентрализованная, отказоустойчивая, для Big Data.
  • Neo4j — графовая, оптимизирована для анализа связей (рекомендательные системы, соцсети).

Облачные

  • Amazon RDS — управляемые реляционные СУБД (MySQL, PostgreSQL, Oracle, SQL Server).
  • Google Cloud SQL — PostgreSQL, MySQL, SQL Server в облаке Google.
  • Yandex Database (YDB) — NewSQL-система от Яндекса, совместимая с PostgreSQL.

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

Несмотря на широкое распространение, СУБД имеют ряд недостатков:

  • Сложность администрирования — настройка производительности, резервное копирование, репликация требуют квалифицированного персонала.
  • Оверхед — СУБД добавляет накладные расходы по сравнению с прямым файловым вводом-выводом, что критично для некоторых встраиваемых систем.
  • Горизонтальное масштабирование — реляционные СУБД традиционно плохо масштабируются на множество узлов (проблема распределённых транзакций). NoSQL-системы решают эту проблему, но часто жертвуют ACID-гарантиями.
  • Стоимость — коммерческие СУБД (Oracle, Microsoft SQL Server) требуют лицензионных отчислений, что может быть существенно для крупных проектов.

Интересные факты

  • Первая коммерческая реляционная СУБД — Oracle (1979), хотя IBM выпустила DB2 только в 1983 году.
  • SQLite — самая распространённая СУБД в мире по количеству установок (используется в каждом смартфоне, браузере, многих IoT-устройствах).
  • В 2012 году компания Google выпустила Spanner — глобально распределённую реляционную СУБД с синхронизацией времени через атомные часы и GPS.
  • PostgreSQL имеет более 30 лет активной разработки и поддерживает расширения, такие как PostGIS (геопространственные данные) и TimescaleDB (временные ряды).

Источники

  1. Кодд Э. Ф. «Реляционная модель данных для больших совместно используемых банков данных» (1970).
  2. Дейт К. Дж. «Введение в системы баз данных» (8-е издание, 2003).
  3. Гарсиа-Молина Г., Ульман Дж., Уидом Дж. «Системы баз данных: полный курс» (2002).
  4. Документация PostgreSQL, MySQL, MongoDB, Redis (официальные сайты).
  5. Стандарт ISO/IEC 9075:2016 (SQL).
  6. Чен П. «Модель „сущность-связь“ — шаг к единому представлению данных» (1976).

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

На главную BFOmetr →