Система управления базами данных
Систе́ма управле́ния ба́зами да́нных (СУБД; англ. Database Management System), комплекс программ, позволяющих создать базу данных (БД) и манипулировать данными (вставлять, обновлять, удалять и выбирать). Обеспечивает безопасность, надёжность хранения и целостность данных, а также предоставляет средства для администрирования БД.
СУБД с помощью компилятора языка запросов обрабатывает обращения к БД от пользователей, проверяет корректность поступающих операторов и на основе метаданных (сведений о составе данных) формирует одно или несколько процедурных представлений оператора (планов выполнения). Наиболее эффективный план исполняется в СУБД при помощи внутренней подсистемы (ядра СУБД), поддерживающей интерфейс доступа к данным на уровне их отдельных элементов (записей). Ядро СУБД обеспечивает буферизацию данных – кэширование, синхронизацию доступа к данным и управление транзакциями (короткий во времени цикл взаимодействия объектов, включающий запрос – выполнение задания – ответ), а также журнализацию изменений БД (сохранение истории). Каждая СУБД основывается на некоторой модели данных (например, реляционной). В большинстве современных СУБД внешний интерфейс обычно основывается на использовании специального языка (например, SQL) – стандартный язык запросов, язык определения структур и манипулирования данными), в котором отражаются основные черты модели данных.
СУБД классифицируют: на сетевые, иерархические, реляционные (и SQL-ориентированные), объектно ориентированные, XML-ориентированные (англ. eXtensible Markup Language – расширяемый язык разметки) и другие, т. е. по модели данных; универсальные и специализированные, которые ориентированы на эффективную поддержку одного класса информационных систем (например, транзакционных или аналитических); файл-серверные (БД хранятся в файлах специализированного файлового сервера), клиент-серверные (все основные компоненты СУБД выполняются на отдельном сервере, на котором хранится и БД, а на клиентской части выполняется код приложения), встраиваемые (СУБД тесно связана с прикладной программой и полностью выполняется на том же компьютере, не требуя профессионального администрирования); однопроцессорные (не используют аппаратные возможности параллелизма, были распространены до появления многоядерных процессоров), параллельные с общей памятью (обеспечивают межзапросный или внутризапросный параллелизм с использованием нескольких ядер), параллельные с общими дисками (несколько экземпляров СУБД работают в разных узлах вычислительного кластера, но обращаются к общей дисковой подсистеме, в которой хранится БД) и параллельные без использования общих ресурсов СУБД (несколько СУБД работают в разных узлах кластера, каждый со своим разделом БД, что обеспечивает горизонтальное масштабирование при росте объёма данных).
Первые СУБД (начало 1960-х гг.) были основаны на иерархической, сетевой и других ранних моделях данных. В начале 1970-х гг. Э. Кодд (США) предложил новый – реляционный – подход к организации БД и СУБД, на основе которого в 1970-е гг. выполнены экспериментальные проекты System R (IBM) и Ingres (Калифорнийский университет в Беркли) и заложены основы будущих технологий (язык SQL, принципы оптимизации запросов, методы управления транзакциями и др.). В 1980-е гг. разработаны объектно ориентированные, объектно реляционные и первые коммерческие реляционные СУБД. В 1990-е гг. появился ряд развитых универсальных SQL-ориентированных СУБД с объектно реляционными возможностями (Informix Universal Server, Oracle8, DB2, Universal Database). Принят стандарт SQL:1999, в котором эти возможности, а также все основные средства SQL-ориентированных СУБД были окончательно согласованы и утверждены. Одновременно развивались объектно ориентированные СУБД. В начале 21 в. М. Стоунбрейкер (США) обосновал конец эпохи универсальных СУБД и переход к специализированным, ориентированным на поддержку отдельных классов информационных систем – XML-ориентированные (например, Tamino, Sedna), потоковые (Streambase), аналитические (Vertica, Greenplum), транзакционные СУБД (VoltDB). Из-за взрывообразного роста данных (т. н. большие данные, англ. Big Data) стала актуальной возможность горизонтального масштабирования; в результате практически все современные СУБД являются массивно-параллельными. Проблема Big Data привела к появлению ряда систем категории NoSQL, разработчики которых опираются на опыт в области распределённых систем (совокупность логически взаимосвязанных баз данных, распределённых по узлам компьютерной сети) и не следуют канонам традиционных СУБД. В СССР и РФ разрабатывали СУБД ИНЕС и НИКА (1980-е гг., Институт системного анализа РАН), ЛИНТЕР (компания РЕЛЭКС, Воронеж, с кон. 1980-х гг.), Sedna (2000-е гг., Институт системного программирования РАН).