За годы работы с данными я усвоил одну вещь: таблица без контекста — это просто набор колонок. Кто её владелец? Что значит pd_score? Когда данные последний раз обновлялись и можно ли им верить? Больно не тогда, когда данных нет. Больно, когда они есть, но никто не помнит, что они значат.

Так в песочнице появился раздел Data Governance.

Почему не поставил OpenMetadata сразу

Первая мысль была очевидной: взять OpenMetadata и не изобретать велосипед. Он отличный. Но его полный стек — сервер, PostgreSQL, Elasticsearch — это несколько гигабайт и памяти, и на моём небольшом сервере он бы жил в ущерб остальному.

Поэтому я сделал иначе: построил свой лёгкий каталог по спецификации OpenMetadata. Сущности те же — assets, owners, classifications, glossary, contracts, quality rules, lineage. Если однажды мне понадобится полноценный сервер, я просто переключу источник: модель уже совместима, переписывать ничего не придётся.

Полный стек, кстати, никуда не делся — он в отдельном Docker-профиле и включается одной командой, когда действительно нужен:

docker compose --profile openmetadata up -d

Что каталог умеет сейчас

В демо-каталоге восемь активов: пять датасетов, дашборд, пайплайн и ML-модель. Есть владельцы, глоссарий, восемь правил качества (три не проходят порог), четыре контракта данных. Средняя оценка качества — 90.9%.

Но самое полезное — это findings. Каталог сам находит проблемы:

  • у актива нет владельца;
  • в датасете есть PII-колонки, но он не помечен как персональные данные;
  • Tier-1 актив живёт без контракта;
  • свежесть данных превышает SLA;
  • правило качества провалено.

Каждой находке присваивается уровень важности, а из них складывается общий compliance score. Я не люблю дашборды ради дашбордов, но этот реально показывает, где горит.

Ещё есть lineage — граф связей. Например, transactions питает revenue_daily, который питается в дашборд. Когда что-то ломается, видно, чей это след.

Что оказалось неочевидным

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

Дальше напишу про движок, на котором вы читаете этот текст.