Trino vs dbt: что и когда использовать

Trino курсы примеры обучение, Trino для разработчика, Trino примеры курсы обучение дата-инженеров, Школа Больших Данных Учебный Центр Коммерсант

Что общего между Trino и dbt, чем они отличаются и в каких случаях выбирать тот или иной инструмент для инженерии и анализа данных. Краткий ликбез для начинающего дата-инженера и аналитика.

Сходства и отличия Trino и dbt

Trino и dbt (Data Build Tool) — это два популярных инструмента с открытым исходным кодом для задач инженерии и анализа данных. Несмотря на некоторые сходства, они применяются в разных сценариях. В частности, Trino — это распределённый движок  с массово-параллельной архитектурой для выполнения SQL-запросов к разным, в. т.ч. нереляционным, источникам. Благодаря подключению к источникам с помощью коннекторов, MPP-архитектура Trino позволяет выполнять аналитику больших объёмов данных в реальном времени без их фактического перемещения.

Data Build Tool или dbt – это инструмент для трансформации данных в хранилище с помощью SQL-запросов, которые подготавливают данные из исходных источников для их загрузки в корпоративное DWH. Он автоматизирует процесс создания и управления зависимостями между различными SQL-запросами в рамках ETL/ELT-операций, а также предоставляет возможности для тестирования и документирования данных. Основная концепция в dbt — это модель, SQL-файл, описывающий трансформацию данных. Каждый файл модели соответствует одной таблице или представлению в базе данных. Инструмент автоматически определяет зависимости между моделями и строит направленный ациклический граф (DAG). Это позволяет выполнять модели в правильном порядке, учитывая их зависимости. Все модели и связанные с ними файлы (конфигурации, скрипты и пр.) организованы в специальную директорию – проект. Для динамической генерации SQL-кода dbt использует шаблонизатор Jinja, позволяя параметризировать и повторно использовать запросы, что упрощает поддержку и расширение проекта. Также для переиспользования артефактов своей работы дата-инженер можно определить конфигурации на уровне проекта, моделей или отдельных SQL-запросов. Для автоматизации повторяющихся задач в dbt есть возможность создать макросы — фрагменты кода на Jinja.

Таким образом, оба фреймворка имеют следующие сходства:

  • открытый исходный код;
  • использование SQL для работы с данными;
  • работа с большими объемами данных;
  • поддержка интеграций с различными хранилищами данных, а также ETL/ELT-инструментами.

Однако, Trino отличается от dbt по назначению, а также архитектуре и принципам работы. Trino работает как промежуточный слой между источниками данных и конечным пользователем, направляя SQL-запросы к нужным источникам и объединяя результаты, о чем мы рассказывали здесь. Напротив, dbt работает с данными, которые уже находятся в хранилище, преобразуя их в более удобные для анализа формы. Поэтому dbt отлично подходит для выполнения преобразования между слоями DWH, например, чтобы обеспечить консолидацию данных из stage-слоя в следующий, или наполнить витрины данных. А Trino – будет отличным выбором когда надо в реальном времени получить результаты аналитики из данных, хранящихся в разных источниках.

Резюмируем сходства и отличия этих двух инструментов дата-инженера в таблице.

Критерий Trino dbt
Открытость исходного кода да да
Назначение выполнение сложных аналитических запросов из разных источников в реальном времени трансформация уже существующих данных в хранилище
Архитектура Массивно-параллельная архитектура, когда координатор кластера распределяет нагрузку по нескольким рабочим узлам Работает в рамках существующего хранилища данных, используя его вычислительные ресурсы. Структура dbt включает модели, которые являются SQL-файлами, запускаемыми в определённом порядке.
Принцип работы выполняет оптимизированные запросы непосредственно на источниках данных через коннекторы трансформирует данные с помощью SQL-запросов, которые создают новые таблицы или представления в хранилище данных, управляет зависимостями между моделями
Поддержка SQL да да
Работа с большим объемом данных да да
Количество источников данных в рамках одного запроса несколько физических источников данных благодаря использованию коннекторов физически один источник – хранилище данных, но несколько логических, т.е. может объединять данные из разных моделей внутри этого хранилища
Интеграции с внешними системами множество коннекторов для интеграции с различными базами данных и системами (Hive, MySQL, PostgreSQL, Kafka и др.) различные хранилища данных (Snowflake, BigQuery, Redshift, Databricks и пр.), а также с CI/CD-системы, BI-и ETL/ELT-инструменты
Потребление ресурсов зависит от конфигурации кластера и объёма обрабатываемых данных, может быть ресурсоемким зависит от СУБД, где выполняются трансформации. Сам инструмент относительно лёгкий и не требует много вычислительных ресурсов
Целевая аудитория пользователей В первую очередь дата-инженеры, затем аналитики данных, кому нужны быстрые ответы на сложные запросы В первую очередь аналитики данных, кому нужно чистить, трансформировать и готовить данные для анализа. Затем дата-инженеры, кому нужно автоматизировать и организовать процессы трансформации данных
Сложность использования требует понимания архитектуры распределённых систем, настройки кластеров, а также знания SQL ориентирован на аналитиков данных и инженеров, которые уже знакомы с SQL
Порог входа в технологию Средний Низкий
Типовые сценарии использования интерактивный анализ данных и построения отчетов настройка и автоматизация процессов трансформации данных

Освойте работу с Trino на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Источники

  1. https://trino.io/docs/current/overview/concepts.html
  2. https://docs.getdbt.com/docs/introduction
Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.
Поиск по сайту