Прямой ответ
Каталог данных — справочник о наборах данных: что содержит таблица, кто за неё отвечает, откуда взялись значения и кто их использует. Каталог решает задачу поиска данных без чтения схемы вручную.
| Состав метаданных | Содержание | Назначение |
|---|---|---|
| Технические | Схема, типы, ограничения | Понимание структуры |
| Деловые | Описание, словарь терминов | Понимание смысла значений |
| Организационные | Владелец, ответственный за качество | Адрес обращения |
| Эксплуатационные | Частота обновления, задержка | Оценка пригодности |
-- Технические метаданные доступны из системного каталога
SELECT c.relname, a.attname, format_type(a.atttypid, a.atttypmod) AS type,
a.attnotnull
FROM pg_attribute a
JOIN pg_class c ON c.oid = a.attrelid
WHERE c.relname = 'orders' AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum;
COMMENT ON TABLE dwh.orders IS 'Заказы из учётной системы, обновляется инкрементально';
COMMENT ON COLUMN dwh.orders.amount_minor IS 'Сумма в минорных единицах валюты';
Комментарии к объектам хранятся рядом со схемой, поэтому описание не расходится со структурой при переносе базы.
Деловые метаданные не выводятся из схемы автоматически: описание смысла значения и связь с термином предметной области задаются явно. О слоях, в которых размещаются таблицы, — в статье про слои хранилища.
Владелец данных, происхождение и актуальность описаний
Каталог приносит пользу при трёх условиях, каждое из которых проверяется отдельно.
Назначен владелец. Таблица без ответственного не обновляется при изменении источника, поэтому описание расходится с фактическим содержанием.
Зафиксировано происхождение. Ссылка на источник и правило преобразования позволяет разобрать расхождение без чтения кода; о происхождении — в статье про lineage.
Описание актуально. Устаревшее описание вводит в заблуждение сильнее, чем отсутствие описания, поскольку читатель доверяет указанному смыслу.
Практическое следствие: каталог без владельца и правила обновления превращается в набор устаревших описаний.
Отдельный аспект — способ наполнения. Технические метаданные собираются из системного каталога автоматически, деловые описания вводятся вручную. Автоматический сбор охватывает структуру, но не смысл значений.
Три признака неработающего каталога.
Описания заполнены при создании и не обновляются. Расхождение с фактическим содержанием выявляется при первом же обращении.
Отсутствует связь с использованием. Каталог не показывает, какие отчёты читают таблицу, поэтому влияние изменения не оценивается.
Нет адреса обращения. Пользователь не знает, к кому обратиться с вопросом о значении поля.
Изменения в структуре данных фиксируются отдельно от описаний, чтобы расхождение было обнаружимо; о фиксации изменений — в статье про журнал действий.
Связь с происхождением данных делает каталог полезным при разборе расхождений: цепочка от витрины к источнику показывает, на каком уровне возникло отклонение.
Практика: наполнение и сопровождение каталога
1. Назначьте владельца для каждого набора. Ответственный за таблицу определяет, кто обновляет описание при изменении источника.
2. Собирайте технические метаданные автоматически. Схема, типы и ограничения доступны из системного каталога, поэтому ввод вручную избыточен.
3. Заполняйте деловые описания для полей со специальным смыслом. Поле с суммой в минорных единицах требует пояснения, иначе значение интерпретируется неверно.
4. Фиксируйте происхождение данных. Ссылка на источник и правило преобразования позволяет разобрать расхождение без чтения кода.
5. Указывайте частоту обновления и задержку. Потребитель оценивает пригодность данных для задачи по актуальности.
6. Связывайте таблицы с потребителями. Перечень отчётов, читающих таблицу, позволяет оценить влияние изменения.
7. Проверяйте актуальность описаний. Периодический пересмотр выявляет расхождение описания с фактическим содержанием.
Рекомендации:
- Различайте технические и деловые метаданные. Первые собираются автоматически, вторые вводятся вручную и требуют сопровождения.
- Не описывайте очевидное. Описание поля с понятным именем увеличивает объём каталога без пользы.
- Используйте единый словарь терминов. Разные названия одного показателя в описаниях приводят к расхождению в отчётах.
- Учитывайте стоимость сопровождения. Каталог охватывает наборы, которые используются, а не все таблицы в базе.
- Проверяйте каталог по обращениям. Вопрос пользователя о смысле поля указывает на пробел в описании.
Практический сценарий: показатель считали по-разному в двух отчётах
Контекст: два отчёта показывали разную выручку за период, при этом оба считались корректными авторами.
- Диагностика. Поле «выручка» в одной витрине включало налоги, в другой — нет. Описания полей в каталоге отсутствовали, поэтому расхождение обнаружилось только при сверке отчётов.
- Причина. Деловые метаданные не заполнялись, а название поля не отражало состав значения. Единый словарь терминов отсутствовал, поэтому каждый автор определял показатель самостоятельно.
- Действия. (а) Ввели описание полей с указанием состава значения и единиц измерения; (б) зафиксировали определение показателя в словаре терминов и связали с ним описания; (в) назначили владельца для витрин с показателями; (г) добавили в каталог перечень отчётов, читающих каждую витрину; (д) пересчитали отчёт с явным указанием определения показателя.
- Результат. Определение показателя зафиксировано в одном месте, расхождение между отчётами объясняется и устраняется выбором определения.
Вывод: отсутствие деловых метаданных и единого словаря терминов приводит к различному толкованию одного названия поля. Описание состава значения и владелец набора устраняют расхождение в интерпретации.
FAQ
Что даёт каталог, если схема видна в базе? Схема показывает структуру, но не смысл значений, владельца и происхождение. Каталог отвечает на вопросы, которые не выводятся из типов полей.
Нужно ли описывать каждое поле? Нет, описываются поля со специальным смыслом: единицы измерения, состав значения, допустимые состояния. Очевидные имена не требуют описания.
Как поддерживать актуальность описаний? Назначением владельца набора и проверкой описаний при изменении источника. Автоматический сбор охватывает только технические метаданные.
Связан ли каталог с происхождением данных? Да, происхождение показывает цепочку от витрины к источнику и позволяет определить, на каком уровне возникло расхождение.
Источники: PostgreSQL system catalogs, information functions, dbt — ссылки в шапке.