Перейти к основному содержимому

Роль базы данных в организации

Разработчику Аналитику Архитектору Инженеру

Вступление

База данных в учебнике часто выглядит как набор таблиц и упражнений на JOIN. В компании — это инфраструктурный актив: через неё проходят заказы, зарплаты, медицинские карты, логи, отчёты для регулятора. От качества схемы и дисциплины эксплуатации зависят скорость сайта и доверие к цифрам в решениях руководства.

Эта глава связывает технические темы раздела Основы баз данных с организационным контекстом:

  • зачем компании одна управляемая СУБД вместо десятка Excel-файлов;
  • как схема данных растёт вместе с продуктом (от идеи до эксплуатации);
  • кто принимает решения про поля, бэкапы и доступ;
  • где чаще ломается процесс, даже при исправном PostgreSQL.

Что вы унесёте после чтения: сможете объяснить коллеге разницу между аналитиком и DBA, назвать артефакты этапа «логическая модель», понять, зачем бизнесу цифры RPO/RTO, и увидеть типичные человеческие ошибки (DELETE без WHERE в prod).

Подробное проектирование схем — в Проектировании баз данных. Корпоративные правила владения данными — в Data Governance.

Термины, которые встретятся в главе

ТерминПростыми словами
СУБДПрограмма-сервер (PostgreSQL, MySQL…), которая хранит данные, принимает SQL, гарантирует транзакции.
СхемаОписание таблиц, столбцов, ключей и ограничений — «чертёж» данных.
МиграцияВерсионируемое изменение схемы (ALTER TABLE, новые индексы) — как коммит в git, но для БД.
DDLКоманды определения структуры: CREATE, ALTER, DROP.
ETLExtract–Transform–Load: выгрузить из старой системы, преобразовать, загрузить в новую.
SLAДоговорённость об уровне сервиса: uptime, время восстановления.
GovernanceПравила «чьи данные, кто может, сколько хранить» — см. 111.

Центральная БД организации - единый источник данных

Одно место правды

Без СУБД каждое приложение копирует «свой» Excel, JSON или файл. Возникают расхождения: в CRM одна выручка, в бухгалтерии — другая, в отчёте директора — третья.

Пример из жизни. Отдел продаж ведёт клиентов в CRM. Склад списывает остатки в отдельной таблице Excel. Бухгалтерия считает выручку в 1С. Вопрос «сколько мы продали вчера?» превращается в три совещания. Центральная БД (или согласованный data warehouse) задаёт ответ один раз: таблица orders с первичным ключом, суммой, датой, статусом; отчёты читают её (или витрину, построенную из неё).

Реляционная БД даёт общий контракт:

  • сущности — таблицы customers, orders;
  • ключиid, внешние связи order.customer_id → customers.id;
  • ограничения — «сумма заказа ≥ 0», «статус только из справочника»;
  • транзакции — списание со склада и создание заказа либо оба успешны, либо оба откатываются.

Одновременный доступ без «каши в файлах»

См. Знакомство с базами данных: транзакции, блокировки, MVCC — Конкурентный доступ. Файловое хранение этого не гарантирует — Эволюция хранения.

Безопасность и аудит

Кто что читал и менял — через учётные записи, роли, журналы. В администрировании разобраны сеть, привилегии и аудит.

Долговечность

Данные переживают перезапуск приложения и сервера — при правильных WAL и бэкапах: Восстановление после сбоя, резервное копирование.


Роли вокруг данных (кто за что)

РольФокусТипичные задачи
Владелец данных (Data Owner)Бизнес-смысл, допустимость использования«Можно ли хранить это поле?», срок хранения, GDPR/ФЗ‑152
Аналитик / бизнес-аналитикТребования, ER на уровне предметной областиСущности, связи, отчёты — ER
РазработчикПриложение + схема в коде (миграции)SQL, ORM, API
АрхитекторВыбор СУБД, границы сервисов, нагрузкаSQL vs NoSQL, шардирование, design/116
DBA / инженер данныхЭксплуатация сервера БДУстановка, бэкапы, мониторинг, 3-08
Специалист по безопасностиДоступ, шифрование, реагированиеСовместно с DBA

Разбор ролей на одном примере — поле orders.status:

РольВопрос, который задаётТипичное решение
Владелец данных«Можно ли статус cancelled через год после доставки?»Бизнес-правило + политика хранения
Аналитик«Какие статусы бывают и как связаны с оплатой?»ER, глоссарий в Confluence
Разработчик«Как хранить в БД: enum, справочник order_statusesМиграция, FK на справочник
DBA«Нужен ли индекс по (status, created_at) для отчётов?»CREATE INDEX, мониторинг
Безопасность«Кто видит статусы с персональными данными?»Роль readonly_analyst без PII

Владелец данных отвечает за смысл («что такое активный клиент»). DBA — за доступность сервера (диск, бэкап, патч). Это разные люди с разными KPI; путать их — частая организационная ошибка.

В маленькой команде один человек совмещает три шляпы — конфликты интересов остаются: разработчик хочет быструю фичу, DBA — стабильную ночь без аварий. Governance (111) задаёт явные правила: кто утверждает ALTER в пятницу вечером.


Жизненный цикл информационной системы и базы данных

Жизненный цикл ПО (планирование → анализ → проектирование → реализация → тестирование → внедрение → эксплуатация → вывод из эксплуатации) накладывается на жизненный цикл модели данных.

Концептуальный уровень

Что: сущности и связи предметной области без PostgreSQL/MongoDB. Инструмент — ER / IDEF1X.
Кто: аналитик, архитектор, бизнес.
Артефакт: ER-диаграмма, глоссарий.
В энциклопедии: Entity Relationship, раздел «Уровни моделирования» в design/116.

Логический уровень

Что: таблицы, ключи, нормальные формы, ограничения — ещё можно перенести в другую СУБД.
Артефакт: логическая схема, DDL-черновик.
В энциклопедии: Реляционная модель, Нормализация.

Физический уровень

Что: индексы, партиции, типы, размещение на диске, параметры сервера.
Артефакт: миграции, runbook DBA.
В энциклопедии: 3.md, 4.md, 881.

Эксплуатация и эволюция

Схема не замораживается: новые поля, справочники, отчётные витрины. Стратегии:

  • миграции (Flyway, Liquibase, Alembic) — версионируемый DDL;
  • Expand–Contract — сначала добавить столбец, потом переключить приложение, потом убрать старое;
  • денормализация под отчёты — осознанно, см. 104.

Чек-лист перед CREATE TABLE — в design/116.

Артефакты по этапам (что должно появиться на выходе)

Этап ИС / данныхАртефактКто владелецПроверка качества
Анализ требованийГлоссарий терминов, бизнес-правилаАналитик + владелец данныхНет синонимов «клиент/покупатель/user»
Концептуальная модельER-диаграмма, кардинальностиАналитикКаждая сущность — существительное
Логическая модельТаблицы, PK/FK, 3НФ-обоснованиеАрхитектор / ведущий разработчикНет транзитивных дублей
Физическая модельDDL-миграции, индексы, партицииРазработчик + DBA reviewПлан EXPLAIN на горячие запросы
ВнедрениеRunbook: бэкап, restore drill, мониторингDBAУспешный тест восстановления
ЭксплуатацияРегламент изменения схемы (change window)DBA + релиз-менеджерМиграция откатывается

Без артефакта этап «формально есть», а риски (два разных справочника статусов, «временная» таблица на годы) остаются.


Пример сквозного потока — интернет-магазин

  1. Бизнес: «Нужен учёт заказов и остатков на складе».
  2. Концепт: сущности Покупатель, Заказ, Строка заказа, Товар, Склад.
  3. Логика: customers, orders, order_items, products, inventory с FK и CHECK (quantity > 0).
  4. Физика: индекс на orders(customer_id, created_at), партиционирование архива заказов по году.
  5. Приложение: API + миграции Flyway; списание склада в транзакции — см. Конкурентный доступ.
  6. Эксплуатация: nightly snapshot, PITR 7 дней, алерт на replication lag и disk 85%.

Так связь «учебник → продакшен» становится видимой, а не только набором отдельных статей.


RACI — кто за что отвечает (упрощённо)

ДействиеВладелец данныхАналитикРазработчикDBAБезопасность
Утвердить смысл поля «статус заказа»ARCII
Спроектировать ERIA/RCCI
Написать миграцию DDLICA/RCI
Выбрать размер инстанса / HAIICA/RC
Открыть порт БД в интернетIIICA

A — accountable (отвечает за результат), R — responsible (делает руками), C/I — consult / inform.


Внедрение базы данных в организации

Внедрение — не только apt install postgresql. Обычно включает:

  1. Выбор платформы — on-prem, VM, Kubernetes, managed cloud — Администрирование в облаке.
  2. Окружения — dev / test / staging / prod с изоляцией и разными секретами.
  3. Миграция данных — из legacy (Excel, старая СУБД, 1С): ETL, сверка, параллельный период.
  4. Обучение — разработчики не пишут DELETE без WHERE в prod; аналитики знают, где «официальная» витрина.
  5. Регламенты — бэкап, восстановление (учебные drill), окно обслуживания, эскалация при инциденте.

Критерий успеха: бизнес доверяет цифрам и знает, кого звать при потере данных.

Миграция с legacy — типовые стратегии

СтратегияСутьКогда подходит
Big bangВ выходные переключили всё на новую БДМалый объём, короткое окно простоя
Параллельный периодСтарая и новая система пишутся; сверка отчётамиНельзя долго «заморозить» бизнес
Постепенный срезПо доменам: сначала справочники, потом заказыКрупный монолит, микросервисы по очереди
Read replica / CDCПоток изменений в новое хранилище (Debezium и т.д.)Минимизировать ручной ETL

На этапе миграции особенно важны сверка (суммы, количества строк, контрольные hash) и откатный план — не только «как накатить вперёд».

RPO и RTO — язык для разговора с бизнесом

Два английских термина, которые переводят «технику бэкапов» на язык денег и риска:

ТерминРасшифровкаВопрос бизнесаПример ответа
RPORecovery Point ObjectiveСколько последних данных можно потерять?«Не больше 15 минут заказов» → частый snapshot + архив WAL
RTORecovery Time ObjectiveСколько простоя допустимо?«Магазин снова принимает заказы за 2 часа» → отработанный runbook, standby

Сценарий для новичка. В 14:00 упал дата-центр. Последний успешный бэкап — 13:50. RPO = 10 минут формально нарушен (потеряли 10 минут заказов). Команда поднимает standby к 15:30 — RTO = 1,5 часа. Бизнес заранее согласовал: потеря 10 минут заказов — терпимо, простой больше 4 часов — катастрофа. Отсюда выбор: multi-AZ, PITR, drill раз в квартал.

Цепочка в энциклопедии: восстановление после сбоя (как СУБД переживает падение процесса) → бэкапы (как вернуть удалённую таблицу) → облако (кто крутит snapshot в RDS).

Expand–Contract — смена схемы без «ломаем всех сразу»

Когда меняется структура, а старые сервисы ещё работают, используют Expand–Contract (расширить → сжать):

  1. Expand: добавить новый столбец first_name, не трогая старый full_name.
  2. Переключение: новые сервисы пишут в оба поля или только в новые; старые читают VIEW с full_name (см. правило 9 в главе про Кодда).
  3. Contract: удалить full_name, когда последний клиент обновлён.

Так снижают риск «вышли в prod с ALTER DROP COLUMN — упали пять микросервисов».


Человеческий фактор в среде БД

Техника редко падает «сама» — чаще цепочка решений людей.

РискПримерПрофилактика
Ошибка в prodUPDATE users SET role='admin' без WHEREОтдельные роли, запрет DDL в prod из IDE, review миграций
Обход СУБДПравка файлов данных на дискеПравило 12 Кодда, только штатные утилиты
«Временная» денормализацияДубли без синхронизацииДокументировать, триггеры/ETL, срок жизни
Секреты в репозиторииpostgres://user:pass@prod в .env в gitVault, CI-секреты
Нет проверки бэкапаБэкап есть, восстановление никогда не пробовалиЕжеквартальный drill — 3-08/1
Конфликт командDBA не в курсе релиза с тяжёлой миграциейChange management, окно, откат

В управлении РСУБД прямо перечислены угрозы вроде человеческой ошибки и DROP DATABASE — это типовой инцидент.


Связь с критериями «хорошей» реляционной СУБД

Когда организация требует от поставщика «реляционную СУБД», имеется в виду не только SQL, но и независимость, каталог, целостность — см. Двенадцать правил Кодда. Это аргументы для архитектурных комитетов и тендеров, не только для экзамена.


Контрольные вопросы

  1. Чем владелец данных отличается от DBA?
  2. На каком уровне моделирования появляется ER-диаграмма — концептуальном, логическом или физическом?
  3. Почему внедрение БД не заканчивается установкой сервера?
  4. Приведите два примера человеческого фактора, которые не исправляет индекс.
  5. Чем концептуальная модель отличается от логической на выходных артефактах?
  6. Что такое RPO и RTO — и кто их должен согласовать с бизнесом?
  7. Назовите одну стратегию миграции с legacy без «big bang».

См. также


См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).