Что общего между 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 в Москве:
Источники