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

Знакомьтесь с dbt Fusion Engine: новый индустриальный движок для dbt на Rust

· 9 мин. чтения
Jason Ganz
Developer Experience at dbt Labs

TL;DR: что нужно знать

  • Привычный слой авторинга dbt остаётся без изменений, но движок исполнения под ним полностью новый.
  • Новый движок называется dbt Fusion engine — он переписан с нуля на Rust на основе технологий из SDF. dbt Fusion engine существенно быстрее dbt Core и содержит встроенную технологию понимания SQL, которая станет основой следующего поколения рабочих процессов аналитической инженерии.
  • dbt Fusion engine сейчас находится в бете. Вы уже можете попробовать его сегодня, если используете Snowflake — другие адаптеры начнут появляться с начала июня. Ознакомьтесь с нашим планом выхода в general availability (GA) и попробуйте quickstart.
  • Чтобы использовать Fusion, не обязательно быть клиентом dbt Labs — пользователи dbt Core могут бесплатно использовать dbt Fusion engine уже сегодня в локальной среде.
  • Fusion можно использовать с новым расширением dbt для VS Code, напрямую через CLI или через dbt Studio.
  • Это начало новой эпохи аналитической инженерии. Чтобы увидеть, что Fusion engine позволит реализовать в течение ближайших 1–2 лет, прочитайте этот пост.

С момента своего появления в 2016 году dbt проложил путь революции аналитической инженерии. Команды по всему миру перешли от разрозненных процессов с кастомными SQL‑скриптами к зрелым аналитическим workflows, основанным на подходе dbt. dbt позволяет специалистам по данным работать как инженеры-программисты, создавая аналитический код как актив и быстрее поставляя надёжные data‑продукты.

dbt стал олицетворять сразу несколько вещей:

  • Подход к тому, как должна выполняться аналитика
  • Workflow, в рамках которого специалисты по данным могли применять этот подход на практике
  • Фреймворк — dbt Core — который обеспечивал этот workflow и включал:
    • Слой авторинга: схемы, спецификации и определения dbt‑проекта, написанные на SQL, YML и Jinja
    • Движок: инструменты, с помощью которых слой авторинга собирался и выполнялся на платформе данных, включая рендеринг шаблонного кода в исполняемый SQL, построение графа зависимостей и многое другое
dbt состоит из двух частей: слоя авторинга и движка.dbt состоит из двух частей: слоя авторинга и движка.

Хотя слой авторинга продолжал успешно развиваться и предоставлять разработчикам dbt всё больше возможностей, сам движок — dbt Core — по‑прежнему построен на тех же технологиях и использует те же ключевые архитектурные принципы, что и в 2016 году. Это приводит к двум фундаментальным проблемам, которые невозможно решить итеративно:

  1. dbt Core может быть медленным. Он написан на Python, и для крупных dbt‑проектов это становится непрактичным. Даже для небольших проектов, чтобы обеспечить действительно хороший developer experience, требовался скачок производительности.
  2. Движок dbt рендерит SQL, но не понимает SQL. Это означает, что любая функциональность, зависящая от семантики SQL‑кода, была невозможна для реализации внутри dbt.

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

  • Движок, ориентированный на скорость
  • Движок, который понимает ваш код
  • Движок, который станет основой следующего поколения developer experience

И этим движком стал Fusion.

Что такое Fusion?

Fusion — это новый движок для dbt.

Если слой авторинга — это «что» должен делать ваш dbt‑проект, то движок — это «как». В частности, он отвечает за:

  • Рендеринг Jinja
  • Построение графов зависимостей
  • Создание artifact‑файлов
  • Взаимодействие с базами данных

На первый взгляд Fusion очень похож на dbt Core. Ваши проекты по‑прежнему создаются с использованием привычного слоя авторинга dbt. Вы всё так же пишете SQL и Jinja. Вы всё так же вводите dbt run. (Чтобы упростить знакомство с Fusion, мы также добавили опциональный алиас dbtf, поскольку у многих пользователей уже занят namespace dbt.)

Но под капотом появился уровень технической глубины и строгости, которого в dbt раньше не было — и всё это происходит на уровне движка.

Fusion:

  • Полностью переписан на Rust, что обеспечивает драматически более быстрый опыт работы с dbt. Fusion вообще не зависит от Python. Более того, за исключением макросов адаптеров, между dbt Core и dbt Fusion engine не разделяется ни одной строки кода. (Для тех, кто глубоко изучает внутренности dbt, мы описали новую структуру в отдельном посте.)
  • Понимает ваш SQL‑код. Это полноценный SQL‑компилятор, который даёт dbt полное представление о том, что означает код вашего проекта и как он распространяется по всей цепочке lineage данных.

Основанный на технологиях из SDF, Fusion представляет собой качественный скачок в технических возможностях dbt.

Привычный слой авторинга, мощный новый движок.Привычный слой авторинга, мощный новый движок.

Благодаря этим возможностям Fusion может предоставлять совершенно новые сценарии работы. Некоторые из них мы выпускаем уже сегодня — например, обнаружение ошибок в реальном времени в VS Code и существенное снижение затрат при выполнении проектов. dbt теперь действительно знает ваш код!

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


Ближайшие преимущества использования Fusion

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

Функциональность, реализованная движком dbt Fusion и его компонентамиФункциональность, реализованная движком dbt Fusion и его компонентами

Итак, зачем и как стоит использовать Fusion в вашем dbt‑проекте?

Только новый dbt CLI на базе Fusion

  • Существенный прирост производительности: до 30× более быстрый парсинг и в 2 раза более быстрая компиляция всего проекта, а также почти мгновенная перекомпиляция отдельных файлов в расширении VS Code. Мы ожидаем дальнейших улучшений производительности по мере движения к GA.

Новый dbt Fusion CLI + расширение VS Code

Но настоящая ценность Fusion заключается не только в самом CLI — она в возможности создавать принципиально новые продуктовые сценарии, использующие возможности Fusion. Первый из них, представленный сегодня, — это расширение для VS Code, работающее на базе SQL Comprehension в dbt Fusion. Это расширение могло быть создано только на Fusion:

  • Оно быстрое — расширение VS Code перекомпилирует весь dbt‑проект в фоне каждый раз, когда вы сохраняете любой файл, и мгновенно показывает ошибки в активном файле. Чтобы это было практично, всё должно работать очень быстро.
  • Оно понимает SQL и работает как компилятор — знает, какие колонки существуют в проекте, какие функции используются, а также их сигнатуры и типы возвращаемых значений.

В расширении VS Code реализовано множество возможностей. Среди самых популярных:

  • Пишите код уверенно — обнаружение ошибок в реальном времени и автодополнение функций.

    • Сколько раз вы запускали dbt run, чтобы обнаружить, что написали select * frmo, опечатались в названии колонки или попытались сложить то, что нельзя суммировать? Теперь с этим покончено! С LSP‑расширением для VS Code вы сразу видите ошибки, как только они появляются в коде.

      Вы же не будете суммировать datetime.Вы же не будете суммировать datetime.
    • Аналогично — это dateadd или date_add? И в каком порядке идут аргументы? Просто начните печатать, и вы увидите контекстные подсказки и автодополнение.

  • Отслеживайте, как написанный вами код пошагово превращается в итоговые данные: предпросмотр CTE и просмотр скомпилированного кода

    • Поскольку расширение VS Code компилирует код при каждом сохранении, вы можете в реальном времени видеть скомпилированный код проекта по мере внесения изменений. Это особенно полезно при работе со сложными макросами.
    • Использование CTE позволяет модульно разбивать логику модели. Больше не нужно подменять final CTE на имя CTE, который вы отлаживаете — теперь достаточно одного клика.
  • Навигация по проекту: переход к определениям и встроенный lineage

    • Нужно понять, как определена upstream‑модель? Или откуда приходят все входные данные для текущей модели? Возможность перехода к моделям и колонкам и просмотра lineage на уровне моделей и колонок — это действительно разница «день и ночь».

Я мог бы продолжать ещё очень долго — здесь действительно много всего.

По отдельности это либо улучшения качества жизни, либо серьёзные изменения.

Но вместе они кардинально меняют сам опыт написания dbt‑кода. Раньше было слишком много вещей, которые приходилось постоянно держать в голове — теперь это берёт на себя расширение. Совокупный эффект от этих изменений… выдающийся. Я уже не представляю, как можно работать без этого.

Конечно, есть ещё одна технология, меняющая опыт написания dbt‑кода (и любого кода) — это AI. Возможности, которые даёт Fusion, идеально сочетаются с AI‑ассистированным программированием, поскольку позволяют проще проверять, валидировать и понимать код, сгенерированный AI. В будущем ожидайте ещё более тесной интеграции Fusion и AI‑помощников — скорость и строгость Fusion помогут получать более качественный AI‑сгенерированный код.

Расширение VS Code — один из первых продуктовых сценариев, полностью основанных на движке dbt Fusion. Расширение зависит от Language Server, а Language Server — от возможностей SQL Comprehension в Fusion. Мы приняли решение не поддерживать dbt Core в расширении VS Code, поскольку существующие community‑расширения уже реализовали всё, что возможно на базе dbt Core. Чтобы выйти на следующий уровень, нам понадобился Fusion.


Как начать работать с Fusion

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

Даже если вы пока не можете перевести существующий проект на Fusion, вы можете попробовать расширение VS Code через quickstart, чтобы почувствовать, что нас ждёт впереди.

  • Клиенты dbt: в ближайшие недели в проектах, подходящих для использования Fusion, вы увидите переключатель в аккаунте или получите сообщение от вашей account‑команды. После этого вы сможете активировать Fusion для своих окружений.
  • Чтобы использовать расширение VS Code: установите расширение «dbt» напрямую из marketplace для автоматической настройки и переходите к quickstart. Это также автоматически установит CLI на базе Fusion.
  • Чтобы использовать dbt CLI на базе Fusion: просто установите Fusion

Если вы планируете миграцию существующего проекта на Fusion, ознакомьтесь с руководством по миграции, а также с утилитой dbt-autofix, которая автоматически вносит многие изменения, необходимые для перехода на Fusion.


Что дальше?

Сегодняшний релиз — это только начало. В краткосрочной и долгосрочной перспективе нам предстоит сделать ещё очень многое.

Двигаясь вперёд, мы создаём новые продукты и развиваем существующие таким образом, который был бы невозможен в мире до Fusion. Это будет особенно важно для AI‑workflow — как для помощи в создании высококачественных dbt‑проектов, так и для предоставления AI‑агентам надёжного интерфейса к структурированным данным.

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

Так что присоединяйтесь!

Comments

Loading