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

СУБД

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

История развития

Предпосылки и ранние системы (1960-е — 1970-е)

До появления СУБД данные хранились в файловых системах, что приводило к избыточности, противоречивости и сложности совместного доступа. Первые СУБД появились в конце 1960-х годов. В 1968 году компания IBM разработала систему IMS (Information Management System), основанную на иерархической модели данных. В 1969 году Консорциум по языкам систем обработки данных (CODASYL) предложил сетевую модель данных, которая была реализована в таких СУБД, как IDMS компании Cullinet.

Реляционная революция (1970-е — 1980-е)

В 1970 году Эдгар Кодд, сотрудник IBM, опубликовал статью «Реляционная модель данных для больших совместных банков данных», заложившую теоретическую основу реляционных СУБД. В 1974 году в исследовательской лаборатории IBM в Сан-Хосе началась разработка системы System R, которая позже стала прототипом коммерческой СУБД SQL/DS (1981) и DB2 (1983). В 1977 году Ларри Эллисон, Боб Майнер и Эд Оутс основали компанию Software Development Laboratories, которая в 1979 году выпустила Oracle V2 — первую коммерческую реляционную СУБД, поддерживающую язык SQL.

Эра персональных компьютеров и клиент-серверных систем (1980-е — 1990-е)

С распространением персональных компьютеров появились настольные СУБД: dBase (1980), Paradox (1985), Microsoft Access (1992). В 1986 году компания Sybase выпустила первую высокопроизводительную клиент-серверную СУБД. В 1995 году была основана компания MySQL AB, выпустившая одноимённую свободную СУБД. В 1996 году появилась PostgreSQL, развивающаяся из проекта POSTGRES Калифорнийского университета в Беркли.

Современный этап (2000-е — настоящее время)

С начала 2000-х годов, с ростом объёмов данных и требований к масштабируемости, появились NoSQL-системы (например, MongoDB, Cassandra, Redis), отказавшиеся от реляционной модели в пользу гибких схем и горизонтального масштабирования. В 2010-е годы набрали популярность NewSQL-системы (Google Spanner, CockroachDB), сочетающие ACID-транзакции реляционных СУБД с горизонтальной масштабируемостью NoSQL. В России активно разрабатываются собственные СУБД, такие как «Postgres Professional» (на базе PostgreSQL) и «СУБД ЛИНТЕР» (производства АО «НИИ «Квант»).

Классификация СУБД

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

  • Иерархические — данные организованы в виде дерева (IMS, Windows Registry).
  • Сетевые — данные представлены в виде графа (IDMS, Integrated Data Store).
  • Реляционные — данные хранятся в таблицах, связанных между собой ключами (Oracle, MySQL, PostgreSQL, Microsoft SQL Server).
  • Объектно-ориентированные — данные представлены как объекты (ObjectStore, db4o).
  • Объектно-реляционные — расширение реляционной модели объектными возможностями (PostgreSQL, Oracle с объектными расширениями).
  • NoSQL — системы, не использующие реляционную модель:
  • Документоориентированные (MongoDB, CouchDB)
  • Колоночные (Apache Cassandra, HBase)
  • Ключ-значение (Redis, Amazon DynamoDB)
  • Графовые (Neo4j, Amazon Neptune)

По способу доступа

  • Локальные — устанавливаются на одном компьютере (Microsoft Access, SQLite).
  • Клиент-серверныесервер БД и клиентские приложения работают на разных узлах сети (Oracle, MySQL, PostgreSQL).
  • Встраиваемые — встраиваются непосредственно в приложение (SQLite, Berkeley DB).

По степени распространения

  • Проприетарные — с закрытым исходным кодом (Oracle Database, Microsoft SQL Server, IBM Db2).
  • Свободные (Open Source) — с открытым исходным кодом (MySQL, PostgreSQL, MariaDB, SQLite).

Архитектура и основные компоненты

Ядро СУБД

Центральный компонент, управляющий памятью, процессами и транзакциями. Ядро обеспечивает выполнение запросов, оптимизацию доступа к данным и синхронизацию параллельных операций.

Подсистема управления транзакциями

Обеспечивает свойства ACID (атомарность, согласованность, изолированность, долговечность). Транзакция — последовательность операций, которая выполняется как единое целое. Механизмы блокировок и журналирования предотвращают потерю данных при сбоях.

Подсистема управления памятью

Управляет буферным кешем, где временно хранятся данные из дисковых файлов. Использует алгоритмы замещения страниц (LRU, Clock). Разделяет оперативную память между кешем данных, кешем запросов и служебными структурами.

Подсистема хранения данных

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

Подсистема безопасности

Реализует аутентификацию пользователей, разграничение прав доступа (роли, привилегии), аудит действий и шифрование соединений (SSL/TLS). В реляционных СУБД используется язык управления данными (DCL) SQL.

Язык SQL

Структурированный язык запросов (SQL) является стандартным средством взаимодействия с реляционными СУБД. Разделяется на несколько подъязыков:

  • DDL (Data Definition Language) — создание, изменение и удаление объектов БД (CREATE, ALTER, DROP).
  • DML (Data Manipulation Language) — вставка, обновление, удаление и выборка данных (INSERT, UPDATE, DELETE, SELECT).
  • DCL (Data Control Language) — управление доступом (GRANT, REVOKE).
  • TCL (Transaction Control Language) — управление транзакциями (COMMIT, ROLLBACK, SAVEPOINT).

Стандарт SQL периодически обновляется (SQL:2016, SQL:2023), но большинство СУБД имеют собственные диалекты и расширения (PL/SQL в Oracle, T-SQL в Microsoft SQL Server).

Применение

Корпоративные системы

Реляционные СУБД (Oracle, DB2, Microsoft SQL Server) используются в банковском деле, бухгалтерском учёте, управлении персоналом и ERP-системах. Обеспечивают высокую надёжность, поддержку ACID и соответствие регуляторным требованиям.

Веб-приложения

MySQL, PostgreSQL и MariaDB являются стандартом для веб-разработки (CMS, интернет-магазины, социальные сети). В сочетании с PHP, Python или Java обеспечивают хранение пользовательских данных, контента и сессий.

Big Data и аналитика

Колоночные СУБД (ClickHouse, Apache Druid) и распределённые системы (Apache Hadoop Hive, Apache Spark SQL) применяются для обработки больших объёмов данных и построения аналитических отчётов.

Мобильные и встраиваемые системы

SQLite используется в мобильных приложениях (Android, iOS), браузерах и IoT-устройствах благодаря компактности и отсутствию отдельного серверного процесса.

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

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

Источники

  • Кодд, Э. Ф. «Реляционная модель данных для больших совместных банков данных» (1970)
  • Дейт, К. Дж. «Введение в системы баз данных» (8-е издание, 2003)
  • Гарсиа-Молина, Г., Ульман, Дж., Уидом, Дж. «Системы баз данных. Полный курс» (2003)
  • Стандарт ISO/IEC 9075:2016 «Information technology — Database languages — SQL»
  • Документация Oracle Database, PostgreSQL, MySQL, Microsoft SQL Server

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

На главную BFOmetr →