Pull to refresh
59
0
Vladimir Ozerov@devozerov

Founder at Querify Labs

Send message

Как мы переписали ядро Trino на Rust

Reading time20 min
Reach and readers8.7K

CedrusData Engine — это lakehouse-движок, основанный на Trino. На реальных нагрузках наш продукт рутинно превосходит по производительности другие технологии (Trino, Doris, Dremio, StarRocks) в 1.5-3 раза, с еще более значительным отрывом от устаревших Greenplum и Impala. Эти результаты — следствие постоянных вложений в разработку новейших техник обработки больших данных. В этой статье я расскажу про проект Oxide — одну из наших ключевых инициатив прошлого года по переписыванию ядра Trino с Java на Rust.

Читать далее

Бенчмарк lakehouse-движков, часть 1: StarRocks и Doris падают под нагрузкой, Presto аутсайдер, CedrusData быстрее всех

Reading time19 min
Reach and readers7.8K

В этой статье мы детально рассмотрим поведение аналитических движков при выполнении отдельного TPC-DS запроса на одном узле.

Это глубоко технический текст, в котором мы увидим, как (1) три родственных движка (Impala, StarRocks и Doris) с трудом справляются с конкурентной нагрузкой, (2) разработчики StarRocks и Doris затачивают дефолты своих движков под бенчмарки, (3) Trino реализует эффективный шедулер запросов, но имеет ряд дефектов, ухудшающих производительность, (4) Presto строит хорошие планы запросов, но демонстрирует катастрофически плохую производительность из-за отсутствия буквально одной фичи. Ну а победит, конечно, наш движок CedrusData.

Хочу, чтобы подгорело

Безграничная расширяемость: как экосистема плагинов помогает Trino работать в любом аналитическом ландшафте

Reading time6 min
Reach and readers748

"Trino — это PostgreSQL для аналитики" — нескромно охарактеризовали Trino в одном из блогов. Я не люблю кликбейтные заголовки, но эта фраза действительно емко описывает одну из самых сильных сторон Trino — расширяемость.

В этом блоге я расскажу, как устроены плагины Trino — строительные блоки, которые позволяют гибко адаптировать возможности продукта под потребности современных аналитических платформ.

Читать далее

CedrusData Catalog — новый технический каталог с поддержкой Iceberg REST API

Reading time4 min
Reach and readers920

Мы выпустили новый технический каталог для аналитических платформ, который поддерживает спецификацию Iceberg REST API. Рассказываем, зачем это нужно вам и нам

Читать далее

Как мы ускорили Trino, научив оптимизатор удалять ненужные Join

Level of difficultyEasy
Reading time10 min
Reach and readers2.4K

Как мы ускорили запросы в Trino, научив оптимизатор удалять из плана лишние операторы Join.

Обсудим, почему в аналитических запросах часто возникают избыточные Join, почему это плохо для SQL-движков, какие эквивалентные преобразования позволяют избавиться от ненужных Join, и с какими проблемами мы столкнулись при интеграции данного функционала в наш форк Trino.

Читать далее

Почему Trino такой быстрый: архитектура оптимизатора SQL-запросов

Reading time12 min
Reach and readers63K

Аналитические системы должны эффективно обрабатывать сложные пользовательские запросы к десяткам и сотням терабайт данных (пета-?). Продвинутый оптимизатор запросов является важнейшим компонентом любого big data движка. В данной статье мы рассмотрим, как устроен оптимизатор запросов в массивно-параллельном аналитическом SQL-движке Trino.

И как же он устроен?

Почему Trino такой быстрый: динамические фильтры

Reading time8 min
Reach and readers5.8K

Принцип большинства оптимизаций производительности в аналитических SQL-движках — ответить на запрос пользователя, затратив минимум вычислительных ресурсов. Динамические фильтры — это оптимизация, которая создает дополнительный предикат для одной из сторон оператора Join на основе данных другой стороны.

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

Рассмотрим реализацию динамических фильтров на примере Trino.

Узнать, как работают динамические фильтры

Как устроен massively parallel processing (MPP) в Trino

Reading time10 min
Reach and readers11K

Из нашей повседневной практики доподлинно известно, что массивно(массово?)-параллельные вычисления это круто. Но что именно означает этот термин, и как "массивность" и "параллельность" реализованы в конкретной системе? В данной статье мы ответим на оба вопроса, проанализировав внутреннюю архитектуру популярного MPP-движка для больших данных Trino.

Читать далее

Rule-based оптимизация SQL-запросов

Reading time7 min
Reach and readers6.9K

Всем привет! В компании Querify Labs мы создаем компоненты СУБД, включая оптимизаторы SQL-запросов.

Любой SQL-запрос может быть выполнен множеством способов. Задача оптимизатора - найти эффективный план выполнения запроса.

В этой статье мы обсудим rule-based оптимизацию - популярную архитектуру оптимизатора, в котором планирование запроса разбито на последовательность атомарных трансформации. Мы рассмотрим особенности реализации данного подхода в Apache Calcite, Presto, и CockroachDB.

Читать далее

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Works in
Date of birth
Registered
Activity