Сведения, зафиксированные на материальном носителе в формализованном виде, обеспечивающем возможность их сохранения, передачи и автоматической обработки вычислительной техникой. Сами по себе данные лишены смысловой интерпретации (например, массив чисел [24, 760, 4]).
Результат смысловой интерпретации данных в контексте решаемой прикладной задачи, уменьшающий степень неопределенности знаний об окружающем мире (например: «Температура 24 °C, атмосферное давление 760 мм рт. ст., скорость ветра 4 м/с — метеорологическая норма для взлета самолета»).
Организованная в соответствии с определенными правилами, поименованная совокупность взаимосвязанных данных, отображающая состояние объектов предметной области и их отношений, хранящаяся на машинных носителях независимо от прикладных программ.
Специализированный комплекс программных и лингвистических средств общего назначения, обеспечивающий пользователям и прикладным программам централизованное создание, модификацию, поддержание целостности, защиту и эффективный параллельный доступ к данным.
На заре вычислительной техники данные хранились в обычных текстовых или бинарных файлах операционной системы (и сегодня неопытные разработчики часто пытаются использовать Excel или CSV в качестве хранилища). Рассмотрим фундаментальные различия подходов:
| Критерий сравнения | Файловая система (Файлы / Таблицы Excel) | Промышленная СУБД (PostgreSQL / Oracle) |
|---|---|---|
| Избыточность и дублирование | Высокая. Каждая программа хранит копии нужных полей. При изменении адреса клиента данные обновляются в одном файле и «забываются» в другом. | Минимальная. За счет нормализации данные хранятся строго в одном месте, исключая аномалии рассогласования. |
| Зависимость данных от программ | Абсолютная (сильная сцепленность). Изменение формата бинарного файла требует перекомпиляции всех приложений, работающих с ним. | Независимость. Приложения обращаются через декларативный язык запросов (SQL). Физическая структура скрыта от клиентского кода. |
| Многопользовательский доступ | Примитивный. Блокируется весь файл целиком («Файл заблокирован для редактирования другим пользователем»), либо возникает потеря чужих правок (Lost Update). | Высокопроизводительный конкурентный доступ. Блокировки на уровне отдельных строк, чтение никогда не блокирует запись благодаря MVCC. |
| Контроль целостности | Отсутствует. Программист обязан в коде каждого приложения проверять корректность связей. При ошибке в одном скрипте файл разрушается. | Декларативный на уровне СУБД. База физически отвергнет операцию, нарушающую внешний ключ (Foreign Key) или формат поля. |
| Отказоустойчивость и сбои питания | Низкая. При аварийном отключении питания во время записи файл часто оказывается поврежденным и не подлежит восстановлению. | Гарантированная (ACID). Журнал транзакций (WAL) позволяет накатить зафиксированные изменения и откатить незавершенные при перезагрузке. |
| Безопасность и аудит | Файл можно целиком скопировать на флешку или удалить, если есть доступ к папке. | Централизованный серверный контроль. Пользователь не имеет доступа к файлу на диске; доступ дается только к разрешенным строкам и колонкам. |
В 1975 году Комитет по планированию стандартов и требований Американского национального института стандартов (ANSI/X3/SPARC) предложил трехуровневую архитектуру СУБД, ставшую классической основой теории баз данных. Главная цель архитектуры — обеспечение независимости данных.
Описывает ту часть базы данных, которая релевантна конкретной группе пользователей или приложению. Скрывает конфиденциальные или избыточные данные.
Обобщенное логическое представление ВСЕЙ базы данных администратором и разработчиком. Описывает сущности, атрибуты, связи между ними и ограничения целостности, абстрагируясь от того, как байты лежат на физических дисках.
Таблицы: Patients, Doctors, Appointments, Diagnoses | Связи: 1:M, M:M | Ограничения: PK, FK, CHECK
Определяет непосредственное размещение данных на физических носителях: разметку дисковых страниц (по 8 КБ), распределение табличных пространств (Tablespaces), алгоритмы сжатия данных, физическую структуру индексов (B-Tree, Hash, GiST, GIN).
Файлы: /var/lib/postgresql/data/base/16384/* | Индексы: btree(snils_idx) | Сжатие: pglz/lz4
В зависимости от структуры хранения и способа моделирования взаимосвязей выделяют четыре фундаментальных класса систем:
Основаны на реляционной алгебре Эдгара Кодда (1970 г.). Данные представлены в виде двумерных таблиц (отношений), связанных через первичные и внешние ключи. Строгая схема (Schema-on-write), поддержка языка SQL, соблюдение принципов ACID.
Данные хранятся в виде структурированных текстовых или бинарных документов (JSON, BSON, XML). Каждый документ может иметь уникальный набор полей (Schema-on-read). Отлично подходят для каталогов с вариативными атрибутами и быстро меняющихся структур.
Простейшая модель: хранение пар «ключ — значение». Чрезвычайно высокая скорость операций по чтению и записи, часто хранят данные прямо в ОЗУ. Используются для кэширования, хранения сессий, списков онлайн-пользователей.
Представляют данные в виде узлов (вершин) и направленных связей (ребер). Оптимизированы для запросов по обходу графов любой глубины без тяжелых реляционных JOIN-операций. Идеальны для соцсетей, борьбы с мошенничеством, логистики.
Database Administrator (DBA) — специалист, несущий персональную ответственность за работоспособность, целостность, доступность и быстродействие баз данных предприятия.