# О dbt Mesh

Организации любого масштаба используют dbt для управления трансформациями данных — от небольших стартапов до крупных корпораций. По мере роста может становиться сложно координировать все организационные и технические требования заинтересованных сторон в рамках одного dbt‑проекта.

До недавнего времени также не существовало полноценного, «первоклассного» способа эффективно управлять зависимостями, управлением (governance) и рабочими процессами между несколькими dbt‑проектами.

Именно здесь появляется **Mesh** — он дает возможность командам по работе с данными работать *независимо и совместно*; делиться данными, кодом и лучшими практиками, не жертвуя безопасностью или автономностью.

Mesh — это не отдельный продукт, а паттерн, который становится возможным благодаря сочетанию нескольких возможностей dbt:

* **[Межпроектные ссылки](https://docs.getdbt.tech/docs/mesh/govern/project-dependencies.md#how-to-write-cross-project-ref)** - это базовая возможность, которая позволяет развертывать несколько проектов. Вызовы `{{ ref() }}` теперь работают между проектами dbt на тарифных планах Enterprise и Enterprise+.

* **[Catalog](https://docs.getdbt.tech/docs/explore/explore-projects.md)** - платформа документации dbt на основе метаданных с полной поддержкой отслеживания происхождения данных между проектами.

* **Управление** - возможности управления dbt позволяют контролировать доступ к моделям dbt как внутри проектов, так и между ними.

  * **[Группы](https://docs.getdbt.tech/docs/mesh/govern/model-access.md#groups)** - с помощью групп можно объединять узлы DAG в dbt, имеющие логическую связь (например, по функциональной области), и назначать владельца всей группы.
  * **[Доступ](https://docs.getdbt.tech/docs/mesh/govern/model-access.md#access-modifiers)** - настройки доступа позволяют контролировать, кто может ссылаться на модели.
  * **[Версии моделей](https://docs.getdbt.tech/docs/mesh/govern/model-versions.md)** - при координации работы между проектами и командами мы рекомендуем рассматривать модели данных как стабильные API. Версионирование моделей — это механизм, позволяющий плавно внедрять новые версии моделей и выводить устаревшие из использования по мере их развития.
  * **[Контракты моделей](https://docs.getdbt.tech/docs/mesh/govern/model-contracts.md)** - контракты данных задают явные требования к структуре данных, чтобы изменения данных в источниках, предшествующих dbt, или в логике проекта не нарушали работу продуктов данных у нижестоящих потребителей.

## Когда стоит использовать dbt Mesh?

Мультипроектная архитектура помогает организациям со зрелыми и сложными процессами трансформации в dbt повысить гибкость и производительность своих dbt‑проектов. Если вы уже используете dbt и ваш проект начал сталкиваться с одним или несколькими из следующих признаков, вероятно, вы готовы начать изучение этого подхода:

* **Количество моделей** в проекте начинает ухудшать производительность и замедлять разработку.
* Команды разработали **отдельные рабочие процессы** и нуждаются в разделении (decoupling) разработки между собой.
* Команды сталкиваются с **проблемами коммуникации**, и надежность некоторых ваших дата‑продуктов начинает снижаться.
* Требования к **безопасности и управлению** растут и выиграли бы от более строгой изоляции.

dbt предназначен для согласованного использования перечисленных выше возможностей и упрощения решения этих задач.

Если вы только начинаете работать с dbt, не беспокойтесь о том, чтобы сразу строить многопроектную архитектуру. Вы можете *постепенно* внедрять эти возможности по мере масштабирования. Этот набор функций эффективно работает и как независимые инструменты. Ознакомление с инструментарием и возможностями, из которых состоит многопроектная архитектура, а также понимание того, как они могут быть применены в вашей организации, помогут вам принимать более взвешенные решения по мере роста.

Для получения дополнительной информации см. [FAQ по Mesh](https://docs.getdbt.tech/best-practices/how-we-mesh/mesh-5-faqs.md).
