О governance моделей
dbt поддерживает model governance, чтобы помочь вам контролировать, кто может получать доступ к моделям, какие данные они содержат, как они изменяются со временем и как на них можно ссылаться между проектами. Поддержка model governance доступна в dbt Core и в dbt platform, с некоторыми различиями в доступных возможностях в зависимости от среды и тарифного плана.
- Используйте model governance, чтобы определять структуру моделей и их видимость в dbt Core и dbt platform.
- dbt развивает эти возможности, добавляя такие функции, как cross-project ref, которые позволяют масштабно сотрудничать между несколькими проектами благодаря сервису метаданных и Catalog. Доступно в тарифных планах dbt Enterprise или Enterprise+.
Все перечисленные ниже возможности доступны в dbt Core и dbt platform, за исключением project dependencies, которые доступны только для тарифных планов dbt уровня Enterprise.
- Model access — Помечайте модели как «public» или «private», чтобы отличать зрелые data-продукты от деталей реализации, а также контролировать, кто может вызывать
refдля каждой модели. - Model contracts — Гарантируйте форму модели (имена колонок, типы данных, ограничения) ещё до её сборки, чтобы избежать неожиданных изменений для downstream-потребителей данных.
- Model versions — Когда ломающие изменения неизбежны, предоставляйте более плавный путь обновления и период депрекации для downstream-потребителей данных.
- Model namespaces — Организуйте модели в groups и packages, чтобы обозначить границы ответственности. Модели в разных пакетах могут иметь одинаковые имена, а функция
refможет принимать пространство имён проекта или пакета в качестве первого аргумента. - Project dependencies — Разрешайте ссылки на public-модели в других проектах («cross-project ref») с помощью постоянно работающего stateful-сервиса метаданных, вместо импорта всех моделей из этих проектов в виде пакетов. Каждый проект предоставляет data-продукты (публичные ссылки на модели), при этом управляя собственными деталями реализации, что позволяет реализовать enterprise data mesh. EnterpriseEnterprise +
Соображения
Есть несколько моментов, которые стоит учитывать при использовании возможностей управления моделями:
-
Такие функции управления моделями, как доступ к моделям (model access), контракты (contracts) и версии (versions), повышают уровень доверия и стабильности в вашем проекте dbt. Однако из‑за добавления дополнительной структуры они могут усложнить откат изменений (например, при необходимости убрать ограничения доступа к модели) и увеличить затраты на сопровождение, если внедрить их слишком рано.
Перед тем как добавлять функции управления, стоит оценить, готов ли ваш проект dbt извлечь из них пользу. Внедрение управления на этапе, когда модели все еще активно меняются, может усложнить будущие изменения. -
Функции управления применяются только к моделям. Они не распространяются на другие типы ресурсов, включая snapshots, seeds или sources. Это связано с тем, что такие объекты могут со временем менять свою структуру (например, snapshots фиксируют изменяющиеся исторические данные) и плохо подходят для предоставления гарантий вроде контрактов, управления доступом или версионирования.