Структура базы данных¶
База данных — это упорядоченная совокупность данных, организованная и хранимая так, чтобы к ней можно было обращаться и управлять ею с помощью систем управления базами данных (СУБД). База данных состоит из взаимосвязанных элементов: данных, схемы, индексов, журналов и служебных файлов, каждый из которых выполняет определённую функцию в общей архитектуре информационной системы.
¶Основные компоненты
База данных состоит из нескольких ключевых элементов, совокупность которых определяет её функциональность.
¶Данные
Данные — это фактические сведения, сохраняемые в базе: записи таблиц, документы, объекты, изображения, потоки. В реляционных СУБД данные хранятся в виде строк (кортежей) таблиц, в документо-ориентированных — в виде JSON- или BSON-документов, в графовых — в виде узлов и рёбер. Данные разделяются на пользовательские (видимые приложениям) и служебные (служебные таблицы, кэши, метаданные, используемые самой СУБД).
¶Схема
Схема — это логическое описание структуры данных: имена таблиц и полей, типы данных, ограничения целостности, связи между объектами. Схема определяет, как данные организованы и какие операции с ними допустимы. В реляционных СУБД схема описывается с помощью DDL (Data Definition Language) — языка определения данных. Существует трёхуровневая архитектура ANSI/SPARC, разделяющая схему на внешнюю (представления для пользователей), концептуальную (общая логическая структура) и внутреннюю (физическое хранение).
¶Индексы
Индекс — это служебная структура данных, ускоряющая поиск и сортировку. Индексы строятся по полям таблиц и хранят ссылки на строки. Наиболее распространены B-деревья и B+-деревья, а также хеш-индексы. Индексы занимают дополнительное место и замедляют операции записи, поэтому их набор подбирается с учётом профиля нагрузки.
¶Журналы транзакций
Журнал транзакций (журнал повторного воспроизведения, WAL — Write-Ahead Logging) записывает все изменения данных до их применения к основным файлам. Журнал обеспечивает атомарность и долговечность транзакций (свойства ACID) и позволяет восстановить базу после сбоя.
¶Служебные файлы и каталоги
СУБД использует системные файлы: файлы данных, файлы журналов, файлы контрольных точек, словарь данных (каталог), где хранится информация обо всех объектах базы. Каталог (системная таблица) содержит метаданные: описания таблиц, прав доступа, статистику по индексам.
¶Классификация по типам СУБД
Тип данных и способ их хранения зависят от модели СУБД:
| Модель | Основные структуры | Примеры |
|---|---|---|
| Реляционная | Таблицы, строки, столбцы | PostgreSQL, Oracle, Microsoft SQL Server, MySQL, 1С:Предприятие |
| Документо-ориентированная | Документы (JSON, BSON) | MongoDB, CouchDB |
| Графовая | Узлы, рёбра, свойства | Neo4j, OrientDB |
| Ключ-значение | Пары ключ-значение | Redis, Riak |
| Колоночная | Столбцы, колонки | Cassandra, ClickHouse |
¶Физическое хранение
На физическом уровне база данных состоит из файлов на диске или в блочном хранилище. СУБД размещает данные в страницах (блоках) фиксированного размера — обычно от 4 КБ до 64 КБ. Страницы объединяются в сегменты, сегменты — в файлы таблиц. Управление свободным пространством, буферным кэшем и распределением страниц выполняется системой.
¶Целостность и безопасность
База данных состоит не только из данных, но и из механизмов их защиты:
- Ограничения целостности — первичные и внешние ключи, уникальность, проверочные условия;
- Права доступа — гранты и привилегии на уровне таблиц, столбцов и строк;
- Шифрование — на уровне диска, таблицы или отдельных полей;
- Резервное копирование — полные и инкрементальные снимки, журналы.
¶Примеры
Крупнейшие реляционные базы данных включают системы государственных реестров, банковские и телекоммуникационные платформы. В России развитием отечественных СУБД занимаются компании «Постгрес Про», «Ред Софт» (СУБД «Ред База Данных» на базе PostgreSQL), «Лаборатория Касперского» и «Ай Ти Эксперт», а также проекты на базе отечественных СУБД «Элбрус» и «Линтер».
¶См. также
- Система управления базами данных
- Модель данных
- Транзакция (базы данных)
- Нормализация (базы данных)
¶Источники
- Катт, Д. Базы данных. Проектирование и реализация. — М.: Вильямс, 2014.
- Дейт, К. Введение в системы баз данных. — М.: Вильямс, 2015.
- Гарсия-Молина, Х., Ульман, Дж., Видом, Дж. Системы баз данных. Полный курс. — М.: Вильямс, 2013.
- Анненков, В. П. Базы данных. 2-е изд. — М.: БХВ-Петербург, 2016.