2023-02-21

Релиз CedrusData 406-1

Оптимизированный коннектор к Greenplum, новый способ визуализации планов запросов

Общая информация

Релиз CedrusData 406-1 вышел 21 февраля 2023 года и основан на Trino 406.

Запуск из архива:


wget https://downloads.cedrusdata.ru/releases/cedrus-406-1.tar.gz \
  && tar -xf cedrus-406-1.tar.gz \
  && cedrus-406-1/bin/launcher run

Запуск из Docker:


docker run -d --rm --name cedrus-server -p 8080:8080 \
  cr.yandex/crpjtvqf29mpabhmrf1s/cedrus:406-1

Ключевые изменения

Greenplum коннектор

Документацияhttps://docs.cedrusdata.ru/406-1/connector/greenplum.html.

Greenplum это популярная массивно-параллельная распределенная аналитическая СУБД. Greenplum разбивает таблицы на сегменты, распределенные по нескольким узлам. Это позволяет обрабатывать запросы на нескольких серверах параллельно, обеспечивая горизонтальное масштабирование.

Пользователи Trino имеют возможность подключиться к кластеру Greenplum, используя PostgreSQL коннектор, так как Greenplum основан на PostgreSQL и имеет совместимый клиентский протокол. Однако, коннектор PostgreSQL всегда сканирует таблицы через единственный JDBC запрос. Несмотря на то, что Greenplum будет обрабатывать такой запрос параллельно на нескольких узлах, чтение результата запроса в Trino всегда происходит строго на одном узле, что существенное ограничивает потенциал параллелизма Trino.

Новый Greenplum коннектор позволяет сканировать таблицы Greenplum параллельно, применяя дополнительный фильтр сегмента. Например, если кластер Greenplum имеет четыре сегмента, и пользователь Trino запускает запрос к каталогу Greenplum `SELECT * FROM greenplum.nation`, то коннектор сгенерирует несколько параллельных запросов к Greenplum, каждый из которых будет обрабатывать собственный набор сегментов:


SELECT ... FROM nation WHERE gp_segment_id % 4 = 0
SELECT ... FROM nation WHERE gp_segment_id % 4 = 1
SELECT ... FROM nation WHERE gp_segment_id % 4 = 2
SELECT ... FROM nation WHERE gp_segment_id % 4 = 3

Результаты данных запросов могут быть обработаны несколькими узлами CedrusData параллельно, значительно ускоряя доставку данных из Greenplum в кластер CedrusData.

Включить параллельное сканирование можно с помощью параметра конфигурации `greenplum.max-scan-parallelism` или параметра сессии `max_scan_parallelism`.

Новый способ визуализации планов запросов

Trino предоставляет возможность визуализации планов запросов в UI, но данный функционал не всегда позволяет оперативно оценить, где находятся наиболее тяжеловесные операторы, и ответить на часто возникающий вопрос "куда уходит время?".

Мы разработали новый функционал, который позволяет получить план запроса в специальном JSON формате, совместимым с популярной утилитой визуализации планов запросов PostgreSQL PEV2. Вы можете вставить полученный JSON в публичный сервис визуализации планов PostgreSQL https://explain.dalibo.com/ и получить более наглядное представление плана, которое отображает все физические операторы и стадии запроса на единой схеме, а так же содержит информацию о суммарном времени выполнения операторов и количестве входящих и исходящих данных.

Откройте информацию об интересующем вас запросе в UI и нажмите на кнопку "PEV" в правом верхнем углу:

Скопируйте полученный JSON и вставьте его в поле "Plan" в сервисе https://explain.dalibo.com/. Откроется окно с интерактивным визуальным представлением плана запроса:

Дальнейшие планы

Наша команда продолжает активную работу над повышением удобства использования продукта и исследованиями улучшений производительности. В настоящий момент мы разрабатываем расширение к Hive коннектору, которое позволит оптимизатору учитывать информацию о партиционировании таблиц Parquet и ORC при планировании запросов. Кроме того, мы продолжаем прототипирование нового нативного движка выполнения запросов на основе Velox и функционала дедупликации общих подпланов запросов. Наконец, мы исследуем способы оптимизации расстановки `Exchange` операторов, что бы уменьшить количество стадий, требуемых для выполнения ряда часто встречающихся запросов.

Свяжитесь с нами, что бы узнать больше о CedrusData и Trino.