Learning Platform
Глоссарий Troubleshooting
Урок 03.05 · 17 мин
Начальный
terminologyschemametadata

Модель данных vs схема vs метаданные

Три термина — модель данных, схема, метаданные — постоянно встречаются рядом, звучат похоже и потому путаются. Эту путаницу важно убрать в самом начале курса: дальше все три слова используются часто, и если для вас они сливаются в одно, вы будете терять смысл предложений. Этот урок даёт каждому термину точное определение и показывает, как они соотносятся.

Заодно разберём слово «схема» отдельно — у него в мире данных есть целых два разных значения, и это отдельный источник путаницы.

Модель данных: определение

Модель данных — это абстрактное, формальное описание структуры данных предметной области: какие сущности существуют, какие у них атрибуты, как они связаны, какие правила целостности действуют.

Ключевое слово — абстрактное. Модель — это идея, замысел, чертёж. Она существует на трёх уровнях (conceptual, logical, physical из соответствующего урока), но даже физическая модель — это всё ещё описание, проект. Модель отвечает на вопрос «как ДОЛЖНЫ быть устроены данные».

Модель данных живёт в ER-диаграммах, в проектной документации, в голове проектировщика. Это интеллектуальный артефакт. Базы данных может ещё не существовать, а модель уже есть.

Схема: определение

Схема (schema) — это конкретная реализация модели в конкретной системе хранения: набор определений таблиц, колонок, типов, ключей и ограничений, который реально создан в базе данных.

Ключевое слово — конкретная реализация. Если модель — это чертёж, то схема — это построенный по чертежу каркас здания. Схема — то, что вы получаете, исполнив DDL-команды (CREATE TABLE, CREATE INDEX). Схема существует внутри конкретной СУБД, ею управляет СУБД, её можно запросить у СУБД.

Схема отвечает на вопрос «как данные устроены ПРЯМО СЕЙЧАС в этой базе».

От модели к схеме: чертёж и постройка
Модель данныхАбстрактное формальное описание структуры: сущности, атрибуты, связи, правила. Чертёж. Живёт в диаграммах и документации.
реализуется через DDL
СхемаКонкретный набор таблиц, колонок, типов и ограничений, реально созданный в СУБД. Постройка по чертежу.

Связь простая: модель реализуется в схему. Одна модель может породить несколько схем — например, в PostgreSQL и в MySQL, или в dev- и prod-окружении. И наоборот, по существующей схеме можно восстановить модель (это называется reverse engineering — обратное проектирование).

Метаданные: определение

Метаданные (metadata) — это «данные о данных»: любая информация, описывающая сами данные, а не являющаяся данными предметной области.

Если данные предметной области — это «клиент Иван, заказ на 3500 рублей», то метаданные — это всё, что описывает эти данные:

  • что колонка total имеет тип NUMERIC(10,2);
  • что таблица orders содержит 1,2 млн строк;
  • что таблица orders была последний раз изменена вчера в 14:30;
  • что колонка email означает «электронная почта клиента для уведомлений»;
  • что данные в raw.payments приходят из Stripe;
  • кто имеет доступ на чтение таблицы customers.

Метаданные — широкое понятие. Их принято делить на виды:

  • Технические метаданные — типы колонок, размеры таблиц, индексы, расписания загрузок. По сути, схема — это разновидность технических метаданных.
  • Бизнес-метаданные — человеческие описания: что означает сущность, как считается метрика, кто владелец данных.
  • Операционные метаданные — информация о процессах: когда таблица обновлялась, сколько строк загрузилось, не было ли ошибок.
Метаданные подробно: типы, каталог данных, lineage
Данные и три вида метаданных
Сами данныеДанные предметной области: конкретные клиенты, заказы, суммы. То, ради чего база существует.
описываются метаданными
Технические метаданныеТипы колонок, размеры таблиц, индексы, расписания. Схема — это разновидность технических метаданных.
Бизнес-метаданныеЧеловеческие описания: что означает сущность, как считается метрика, кто владелец данных.
Операционные метаданныеИнформация о процессах: когда таблица обновлялась, сколько строк загрузилось, были ли ошибки.

Как все три соотносятся

Соберём картину. Модель — это абстрактный замысел структуры. Схема — конкретная реализация этого замысла в СУБД. Метаданные — это вся информация о данных, и схема входит в метаданные как их техническая часть.

ТерминЧто этоУровеньГде живётОтвечает на вопрос
Модель данныхАбстрактное описание структурыЗамыселДиаграммы, документацияКак данные ДОЛЖНЫ быть устроены
СхемаКонкретная реализация моделиРеализацияВнутри СУБДКак данные устроены СЕЙЧАС в этой базе
МетаданныеЛюбая информация о данныхОписаниеКаталог данных, СУБД, документацияЧто мы знаем о данных и об их структуре

Аналогия для запоминания. Модель данных — архитектурный проект дома. Схема — построенный дом, конкретное здание по этому проекту. Метаданные — это паспорт здания плюс вся документация: площадь, год постройки, материалы, дата последнего ремонта, владелец, чертежи. Проект (модель) входит в документацию (метаданные), реальное здание (схему) тоже описывает документация.

Слово «схема»: два значения

Отдельная ловушка: слово «схема» (schema) в мире данных имеет два разных значения, и из контекста надо понимать, какое имеется в виду.

Значение 1: схема как структура. То, о чём весь этот урок: набор определений таблиц, колонок, ключей — реализация модели. «У этой таблицы такая-то схема», «изменение схемы», «schema migration» — здесь «схема» означает структуру.

Значение 2: схема как пространство имён. В PostgreSQL и некоторых других СУБД SCHEMA — это именованный контейнер, группирующий таблицы внутри базы данных, аналог папки. Команда CREATE SCHEMA analytics; создаёт пространство имён, а analytics.orders — это таблица orders внутри схемы-контейнера analytics.

-- Здесь "схема" — это пространство имён (контейнер, аналог папки):
CREATE SCHEMA staging;
CREATE TABLE staging.raw_orders (id BIGINT, payload TEXT);

-- А "схема" таблицы raw_orders как структура — это вот это:
-- две колонки: id типа BIGINT и payload типа TEXT.

Одно и то же слово, два смысла. Когда говорят «схема staging» — это контейнер. Когда «схема таблицы orders» или «миграция схемы» — это структура.

WARNING

Не путайте два значения «схемы». Если в тексте или разговоре слово «схема» сбивает с толку — подставьте вместо него: для значения 1 — «структура таблиц», для значения 2 — «пространство имён» или «контейнер». Сразу станет ясно, о чём речь. В этом курсе «схема» по умолчанию означает структуру (значение 1), если явно не сказано иное.

Почему различать термины важно практически

Это не педантизм ради педантизма. Различие напрямую влияет на работу.

  • «Модель надо пересмотреть» и «схему надо мигрировать» — разные задачи. Первая — про чертёж, может не затрагивать существующую базу. Вторая — про изменение реальной структуры в работающей СУБД с данными.
  • «Метаданные потеряны» не означает «данные потеряны». Можно иметь все данные, но не знать, что означает колонка flag_7 — это потеря бизнес-метаданных, и она тоже дорого обходится.
  • Современные каталоги данных (data catalog) — это инструменты для управления именно метаданными: они собирают технические, бизнес- и операционные метаданные всех таблиц компании, чтобы можно было найти нужные данные и понять их.
NOTE

Чем больше становится данных в компании, тем важнее метаданные. В хранилище на тысячи таблиц без хороших метаданных невозможно понять, какие данные есть, что они означают и можно ли им доверять. Поэтому управление метаданными (data catalog, документация, lineage) — серьёзная инженерная дисциплина, а не «бумажная» работа.

Ещё несколько близких терминов

Раз уж урок наводит порядок в терминологии, упомянем ещё несколько слов, которые встречаются рядом и тоже путаются.

Структура данных (data structure) в контексте баз — то же, что схема в первом значении: организация данных. Но осторожно: в программировании «структура данных» означает совсем другое (массив, список, дерево как способ хранения в памяти). Из контекста обычно ясно, идёт речь о базе или о коде.

Словарь данных (data dictionary) — документ или хранимая структура, описывающая все элементы данных: список таблиц, колонок, их типов, смыслов, правил. По сути, словарь данных — это организованная часть метаданных, ориентированная на людей. В крупных компаниях data modeler ведёт корпоративный словарь данных.

DDL (Data Definition Language) — подмножество SQL для определения структуры: команды CREATE, ALTER, DROP. DDL — это инструмент, которым схему создают и меняют. Когда вы исполняете DDL-скрипт, вы материализуете модель в схему.

Каталог данных (data catalog) — современный инструмент, который автоматически собирает метаданные всех таблиц компании в одном месте, чтобы данные можно было найти, понять их смысл и происхождение. Каталог данных — это «поисковик по данным компании».

ТерминКороткоСвязь с уроком
Структура данныхОрганизация данных (в БД = схема)Синоним схемы в значении 1
Словарь данныхОписание всех элементов данныхОрганизованная часть метаданных
DDLSQL для определения структурыИнструмент создания схемы из модели
Каталог данныхИнструмент сбора метаданныхУправление метаданными в масштабе
TIP

Не пугайтесь обилия терминов. Все они вращаются вокруг трёх главных понятий урока: модель (замысел), схема (реализация), метаданные (информация о данных). Словарь данных и каталог данных — про метаданные; DDL — про переход от модели к схеме; структура данных — синоним схемы. Удержав три главных понятия, остальное легко расставить по местам.

Попробуй сам

Возьмите любую таблицу из своей учебной базы (можно staff из урока про аномалии) и выпишите для неё все три вещи раздельно. Модель: словами опишите, какую сущность таблица представляет и какие у неё свойства и правила — это абстрактный замысел. Схема: выполните в своей СУБД команду, показывающую структуру таблицы (в PostgreSQL это \d staff в psql, в SQLite — .schema staff), и посмотрите на конкретные определения колонок и типов. Метаданные: выпишите хотя бы по одному примеру технических (тип колонки), бизнес- (что означает каждая колонка человеческими словами) и операционных метаданных (когда таблица создана/менялась). Затем проговорите, почему схема — это одновременно и реализация модели, и часть метаданных.


Проверка знанийKnowledge check
Чем модель данных отличается от схемы, и почему схему можно одновременно назвать и реализацией модели, и частью метаданных?
ОтветAnswer
Модель данных — это абстрактное, формальное описание структуры: какие сущности есть, какие у них атрибуты, как они связаны, какие действуют правила целостности. Это замысел, чертёж; модель живёт в ER-диаграммах и проектной документации и отвечает на вопрос «как данные ДОЛЖНЫ быть устроены». Схема — это конкретная реализация модели в конкретной СУБД: реально созданный набор определений таблиц, колонок, типов, ключей и ограничений; схема существует внутри СУБД и отвечает на вопрос «как данные устроены прямо сейчас в этой базе». Если модель — чертёж, то схема — построенное по чертежу здание. Схему можно назвать реализацией модели, потому что она получается исполнением DDL по замыслу модели — одна модель может породить несколько схем (в разных СУБД, в dev и prod). И одновременно схема — часть метаданных, потому что метаданные это любая информация о данных, а схема (типы колонок, ключи, ограничения) — это и есть техническая информация, описывающая данные; технические метаданные включают схему как свою составляющую. Дополнительно: слово «схема» имеет и второе значение — пространство имён, контейнер для таблиц в СУБД, и эти два смысла нельзя путать.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 4. Чем модель данных отличается от схемы согласно точным определениям урока?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 5