Трансформация и подготовка данных (ETL/ELT)

Подготовка данных для анализа — ключевой этап в построении хранилища данных. YDB поддерживает все стандартные подходы к трансформации данных, позволяя выбрать инструмент, наиболее подходящий для конкретной задачи: от чистого SQL до сложных пайплайнов на Apache Spark.

ELT

Трансформации данных с помощью SQL зачастую являются наиболее производительными, поскольку вся обработка происходит непосредственно в движке YDB, без перемещения данных во внешние системы и обратно. Логика описывается на SQL и выполняется распределённым MPP-движком, оптимизированным для аналитических операций.

Производительность в бенчмарке TPC-H

Производительность операций ELT напрямую зависит от скорости выполнения сложных аналитических запросов. Стандартным отраслевым тестом для оценки таких запросов является TPC-H.

Сравнение с другой распределённой аналитической СУБД на наборе запросов TPC-H показывает, что YDB демонстрирует более стабильную производительность, особенно при выполнении запросов, содержащих:

  • Соединения (JOIN) большого числа таблиц, пяти и более;
  • Вложенные подзапросы, используемые для фильтрации;
  • Агрегации (GROUP BY) с последующей сложной фильтрацией по результатам.

Такая стабильность свидетельствует о высокой эффективности стоимостного оптимизатора запросов YDB при построении планов выполнения для комплексных SQL-шаблонов, типичных для реальных ELT-процессов. Для платформы хранилища данных (DWH) это означает предсказуемое время обновления данных и снижение рисков неконтролируемой деградации производительности в продакшн-среде.

Основные сценарии

  • Построение витрин данных: используйте привычный синтаксис INSERT INTO ... SELECT FROM ... для создания агрегированных таблиц (витрин) из «сырых» данных;
  • Объединение OLTP и OLAP данных: YDB позволяет в одном запросе объединять данные как из транзакционных (строковых), так и из аналитических (колоночных) таблиц. Это даёт возможность обогащать «холодные» аналитические данные актуальной информацией из OLTP-системы без необходимости их дублирования;
  • Массовое обновление: для «слепой» записи больших объёмов данных без проверки существования можно использовать оператор UPSERT INTO.

Управление SQL-пайплайнами с помощью dbt

Для управления сложными SQL-пайплайнами используйте плагин к dbt. Плагин позволяет дата-инженерам описывать модели данных в виде SELECT-запросов, а dbt автоматически строит граф зависимостей между моделями и выполняет их в правильном порядке. Этот подход помогает реализовать принципы software engineering (тестирование, документирование, версионирование) при работе с SQL-кодом.

ETL

Сложные трансформации с помощью внешних фреймворков

Для задач, требующих сложной логики на языках программирования (Python, Scala, Java), интеграции с ML-пайплайнами или обработки больших объемов данных, удобно использовать внешние фреймворки для распределенной обработки.

Apache Spark — один из самых популярных инструментов для таких задач, для которого разработан специализированный коннектор к YDB. Если в вашей компании используются другие схожие решения (например, Apache Flink), их также можно задействовать для построения ETL-процессов за поддержки JDBC-драйвера.

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

Оркестрация пайплайнов

Для запуска пайплайнов по расписанию и управления зависимостями используются оркестраторы.

  • Apache Airflow: для оркестрации данных в YDB поддерживается провайдер к Apache Airflow. С его помощью можно создавать DAG'и, которые запускают dbt run, выполняют YQL-скрипты или инициируют Spark-джобы.

  • Встроенные механизмы: для некоторых задач не требуется внешний оркестратор. YDB может выполнять часть операций автоматически:

    • Удаление устаревших данных по TTL: автоматическая очистка партиций по истечении заданного времени.
    • Автоматический сompaction: процессы слияния и оптимизации данных для LSM-дерева происходят в фоновом режиме, что исключает необходимость регулярного запуска команд вроде VACUUM.
  • Другие оркестраторы: если в вашей компании принят другой инструмент (например, Dagster, Prefect) или собственный планировщик, вы можете использовать его для запуска тех же команд. Большинство оркестраторов позволяют выполнять shell-скрипты, что дает возможность вызывать YDB CLI, dbt run и другие утилиты.

Интеграция с другими ETL-инструментами через JDBC

YDB предоставляет JDBC-драйвер, что позволяет использовать широкий спектр существующих ETL-инструментов, таких как Apache NiFi и другие JDBC-совместимые системы.