Перейти к основному содержимому

Встречайте dbt Core v2: по-прежнему с открытым исходным кодом, теперь на новой основе для будущего

· 8 мин. чтения
Joel Labes
Staff Developer Experience Advocate at dbt Labs
Grace Goheen
Product Manager, dbt Core at dbt Labs

Сегодня мы опубликовали первую альфа-версию dbt Core 2.0, подняв планку того, чего пользователи dbt могут ожидать от своего инструмента трансформации данных. Как и прежде, исходный код dbt Core полностью открыт под лицензией Apache 2.0. Этот выпуск особенно важен потому, что dbt Core 2.0 теперь построен на той же основе, что и движок dbt Fusion: мы впервые открыли исходный код значительной части Fusion.

Выпуск dbt Core 2.0 включает ряд важных функциональных улучшений:

  • Значительное сокращение времени разбора, особенно для самых крупных проектов dbt
  • Строго определённая спецификация языка, которая не позволит случайно задать desciptin вместо description и предоставляет всем, кто создаёт интеграции с экосистемой dbt (включая собственную команду разработки dbt!), стабильный интерфейс для разработки.
  • Новые артефакты в формате Parquet как высокопроизводительная альтернатива большим JSON-файлам, к которым можно напрямую обращаться с запросами через DuckDB или агента на ваш выбор
  • Полностью переработанная локальная документация, которая использует новые артефакты и масштабируется для проектов любого размера.
  • Более простой способ создания новых адаптеров на базе ADBC и экосистемы Arrow
  • Упрощённый процесс установки, избавляющий от необходимости бороться с виртуальными окружениями Python

Если вы начали пользоваться движком dbt Fusion на раннем этапе, эти возможности могут показаться вам знакомыми. Дело в том, что эпоха двух движков подходит к концу: отныне dbt Core и Fusion будут разрабатываться на общей основе. Часть кода (мы называем её средой выполнения), которую мы ранее обещали опубликовать под лицензией ELv2, теперь доступна под лицензией Apache 2.0 как dbt Core. Fusion продолжит расширять эту основу дополнительными возможностями: некоторые из них совершенно бесплатны, а другие премиальные функции становятся доступны после входа в бесплатную учётную запись или указания способа оплаты.

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

Если вы хотите узнать больше о новых возможностях dbt Core и наших дальнейших планах, мы с Джереми и Элиасом (я — Грейс) только что опубликовали ещё одну статью о планах развития — загляните в неё. А подробнее о том, что меняется (и что остаётся прежним) и почему мы это делаем, читайте далее.

Сосредоточим все усилия на одном движке​

В прошлом году, решая, как выпустить движок dbt Fusion, мы столкнулись с рядом строгих требований. Тогда Тристан подробно описал их; они также приведены в таблице ниже. В итоге мы решили разрабатывать новый движок Fusion отдельно от Core и под другой лицензией — ELv2.

На этапе разработки Fusion этот подход работал достаточно хорошо: новые возможности языка, такие как поддержка каталогов Iceberg, --sample и определения UDF, получили аналогичные реализации с открытым исходным кодом в dbt Core v1.10 и v1.11.

Но по мере приближения общедоступного выпуска (GA) Fusion становится ясно, что лежащие в его основе технологии — Rust, ADBC и Parquet — гораздо лучше подходят для дальнейших инноваций. Мы хотим, чтобы именно эти технологии стали основой дальнейшего развития для всех.

Если вернуться к тому же списку целей и добавить ещё одно требование — не разделять движок на две ветви, — получится следующее:

Таблица, сопоставляющая исходные решения по лицензированию 2025 года с новыми решениями для каждой цели: более широкое распространение (в том числе через другие платформы, предоставляющие dbt как сервис), защита коммерческих интересов без запрета на подключение премиальных функций и превращение dbt Core в общую среду выполнения на основе кода движка dbt Fusion.

Более чёткое определение роли dbt Core в экосистеме​

Представляя в прошлом году разные варианты движка dbt Fusion, мы объясняли, что для распространения программы на Python необходимо распространять и её исходный код.

Исторически из-за этого dbt Core также стали отождествлять с «тем, что можно использовать бесплатно» или «тем, что можно использовать на ноутбуке»: единственным способом предоставить бесплатную, локально устанавливаемую версию dbt было полностью открыть её код на Python. В результате большинство пользователей dbt не получали полезных возможностей, детали реализации которых мы не могли раскрыть.

В отличие от Python, проекты на Rust можно распространять в виде бинарных файлов, не раскрывая проприетарный исходный код. Именно поэтому мы можем выпускать несколько бесплатных дистрибутивов движка v2: один под названием Fusion, обеспечивающий наилучший пользовательский опыт в виде бинарного файла с некоторым количеством проприетарного кода, и другой, целиком состоящий из открытого кода репозитория dbt-core под лицензией Apache 2.

Какой дистрибутив v2 выбрать для ваших задач? Почти наверняка Fusion. Иными словами: чтобы получить лучший бесплатный CLI dbt для локальной работы и производственных сред, установите Fusion. Он изначально умеет больше, чем dbt Core, а при желании вы сможете со временем без труда включить дополнительные премиальные функции. Изменения, внесённые в репозиторий dbt-core, будут применяться и в Fusion. Мы также знаем, что есть небольшое число команд, которым сегодня необходимо использовать dbt Core из-за его лицензии или которые создают собственные решения на основе открытого кода. Если вы относитесь к одной из этих групп (вы сами об этом знаете), мы помним о вас, и dbt Core v2.0 создан в том числе для вас.

Какой бы дистрибутив вы ни выбрали, это по-прежнему единый фреймворк с единой спецификацией языка. Ваша критически важная бизнес-логика переносима в обоих направлениях.

Кому полезны эти изменения?​

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

  • Мы открываем исходный код огромного объёма наших интеллектуальных разработок, чтобы каждый мог использовать их по своему усмотрению.
  • Расширенный бинарный файл Fusion теперь можно использовать где угодно (в том числе как основу продуктов, конкурирующих с Fivetran + dbt Labs) благодаря лицензии с меньшими ограничениями.
  • Чёткий план развития способствует широкому внедрению v2 фреймворка dbt, что, в свою очередь, упрощает создание интеграций на основе общего набора возможностей.
  • Общая среда выполнения для открытого и проприетарного дистрибутивов dbt гарантирует, что пользователи версии с открытым исходным кодом напрямую получают пользу от наших постоянных инвестиций в dbt, а не вынуждены полагаться на регулярный перенос возможностей с Rust на Python.

Подведём итоги: что меняется, а что остаётся прежним​

Анимированное сравнение трёх репозиториев GitHub: dbt-core (Apache 2.0, Python), dbt-fusion (ELv2, Rust) и dbt-fusion-private (проприетарный, Rust). Крупные части кода перемещаются из закрытого репозитория в репозиторий dbt-fusion, где их лицензия меняется на Apache 2.0, а затем — в репозиторий dbt-core. Репозиторий dbt-fusion исчезает, что обозначает его архивацию.Обзорная визуализация прежней и нынешней структуры репозиториев GitHub.

Что нового:

  • Мы открыли весь исходный код, необходимый для реализации v2.0 фреймворка dbt на Rust. Часть кода уже находилась в репозитории dbt-fusion под лицензией ELv2. Другие части мы ещё не успели перенести, поскольку продолжали активно их дорабатывать. Теперь весь этот код находится в репозитории dbt-core под лицензией Apache 2.0.
  • Этот код и есть новый dbt Core v2.0. Использование высокопроизводительной реализации dbt на Rust в качестве основы для всех пользователей снижает сложность и упрощает дальнейшее развитие фреймворка dbt. Сегодня он доступен в альфа-версии, и на пути к общедоступному выпуску нам нужна ваша помощь, чтобы убедиться, что он работает для всех. Попробуйте!
  • Теперь сторонние компании могут предоставлять расширенный, предварительно скомпилированный бинарный файл Fusion как управляемый сервис. Мы изменили лицензию бинарного файла Fusion на менее ограничительную, чем ELv2. Как и прежде, некоторые функции работают только после аутентификации — с бесплатной учётной записью или платной учётной записью платформы dbt. Компании, предоставляющие Fusion как управляемый сервис, должны разрешать конечным пользователям включать эти премиальные функции.

Что остаётся прежним:

  • Существующий код на Python по-прежнему доступен. Мы только что выпустили новую бета-версию dbt Core v1.12.0, а все старые версии по-прежнему доступны на PyPI и GitHub. Вам не обязательно переходить на v2.x сегодня, завтра или вообще когда-либо. Но, как и при переходе с v0 на v1.x в 2021 году, со временем появятся возможности, для доступа к которым потребуется обновление.
  • Вы по-прежнему можете пользоваться расширенным, предварительно скомпилированным бинарным файлом Fusion совершенно бесплатно. Мы считаем, что это лучший способ использовать dbt. Он содержит больше возможностей, включая встроенный высокопроизводительный SQL-линтер, чем вы получите при самостоятельной сборке кодовой базы под лицензией Apache, даже если вы никогда не создадите учётную запись dbt.
  • Разработка dbt остаётся командной работой. Вы можете и дальше создавать issues и отправлять PR в репозиторий dbt-core, как это делали около 300 участников сообщества в репозитории dbt-fusion (теперь архивированном) на этапах предварительного доступа и бета-тестирования и ещё примерно 1200 участников в репозитории dbt-core за время существования версий 1.x.

Что дальше?​

На какой бы дистрибутив v2.0 вы ни переходили, это смена основной версии, а такие переходы сопряжены с некоторыми трудностями: мы отказываемся от части прежних подходов, чтобы подготовиться к будущему. Судя по росту числа пользователей dbt за последние пять лет, большинство читателей этой статьи не участвовали в переходе с dbt v0 на v1.0, поэтому для вас это может быть первый подобный опыт.

На этот раз всё проще: пакет dbt-autofix и наш навык для агента для обновления версий помогут быстро проделать значительную часть работы. Лучший способ подготовиться к миграции — сначала обновиться до dbt v1.12 (или перейти на канал выпусков «Latest» на платформе dbt).

В этой версии уже обязательно применение многих изменений поведения, для которых в v2.0 фреймворка полностью удалена поддержка прежнего поведения. Кроме того, она поставляется с парсером проектов на базе Fusion, чтобы вы могли проверить, корректно ли разбирается ваш проект. Выполните dbt parse --use-v2-parser, чтобы попробовать его. Если разбор проекта завершится успешно, вы готовы к переходу — обратитесь к руководству по установке.

Если у вас остались вопросы, 25 июня 2026 года руководители недавно объединённой команды Fivetran + dbt Labs проведут неформальную беседу. Зарегистрируйтесь на встречу здесь. Её проведут Тристан Хэнди (сооснователь и президент) и Тейлор Браун (сооснователь и операционный директор).