Learning Platform
Troubleshooting
Глоссарий

Глоссарий — Trino

Справочник ключевых терминов курса Trino.

1 категорий · 104 терминов

Термины

Trino

Термин

Распределённый SQL query engine для интерактивной аналитики над data lake и федерации источников. НЕ база данных: своего хранилища нет, данные живут в подключённых источниках. Понимает ANSI SQL, заточен под OLAP. Актуальная версия — 481 (релиз 11 мая 2026); номер версии целочисленный и монотонно растёт.

Presto

Термин

Движок распределённых SQL-запросов, созданный в 2012 в Facebook (Martin Traverso, Dain Sundstrom, David Phillips, Eric Hwang) для интерактивной аналитики поверх Hadoop-хранилища Facebook. Общий предок современных PrestoDB и Trino.

PrestoSQL

Термин

Имя форка Presto, который в конце 2018 создали ушедшие из Facebook авторы движка. 27 декабря 2020 PrestoSQL был переименован в Trino из-за trademark-спора вокруг имени «Presto».

PrestoDB

Термин

Оригинальный репозиторий Presto, развивается Facebook/Meta при Linux Foundation. Имеет общий исторический код с Trino, но проекты сильно разошлись. Это два разных движка с общим прошлым, не синонимы.

Distributed SQL query engine

Термин

Распределённый движок SQL-запросов — система, которая исполняет SQL поверх внешних источников данных на кластере машин, не имея собственного хранилища. Trino относится к этому классу: он считает, а хранят данные коннекторы.

MPP

Термин

Massively Parallel Processing — модель массово-параллельной обработки на кластере независимых нод (shared-nothing). Запрос разбивается на части, исполняемые параллельно на множестве воркеров. Архитектурная основа масштабируемости Trino.

Coordinator

Термин

Сервер Trino, который парсит statement'ы, планирует запросы и управляет воркерами. Точка входа для клиентов. Сам данные не обрабатывает, если явно не включён как воркер через node-scheduler.include-coordinator. В кластере ровно один.

Worker

Термин

Сервер Trino, исполняющий задачи и обрабатывающий данные: забирает данные из коннекторов и обменивается промежуточными результатами с другими нодами. Воркеров в кластере ноль или больше; они дают горизонтальную масштабируемость.

Discovery service

Термин

Сервис обнаружения, встроенный в coordinator. При старте воркеры регистрируются в нём, чтобы координатор знал актуальный список нод и кому раздавать работу.

Client protocol

Термин

REST-протокол общения клиента с координатором. Клиент отправляет statement, получает nextUri и опрашивает (polling) его, постранично забирая результат. На этом протоколе работают Trino CLI, JDBC-драйвер и trino-python-client.

Connector

Термин

Реализация Trino SPI, адаптирующая конкретный тип источника данных к стандартному API движка. По коннектору на каждый тип источника: Hive, Iceberg, PostgreSQL, Kafka и так далее. Коннектор делает источник «видимым» для SQL.

Connector SPI

Термин

Service Provider Interface — набор интерфейсов, которые реализует коннектор, чтобы движок мог с ним работать. Ключевые части: Metadata (метаданные схем и таблиц), SplitManager (генерация сплитов), PageSource (чтение Page), PageSink (запись).

Catalog

Термин

Набор свойств конфигурации, определяющий доступ к конкретному источнику данных: какой коннектор использовать плюс параметры подключения и креды. Описывается catalog properties file. В кластере может быть много каталогов.

Schema

Термин

Способ группировки таблиц внутри каталога. Обычно мапится на аналогичное понятие в источнике (database или schema). Полное имя таблицы в Trino — catalog.schema.table.

Table

Термин

Набор неупорядоченных строк, организованных в именованные типизированные столбцы. Базовая единица данных в модели Trino, доступная через SQL.

Statement

Термин

Текст SQL, переданный в Trino. Statement — это просто строка запроса; при его обработке создаётся рантайм-объект query.

Query

Термин

Рантайм-инстанс, созданный при парсинге statement'а. Объединяет stages, tasks, splits, операторы и задействованные коннекторы — всё, что работает на кластере ради одного запроса.

Stage

Термин

Фаза распределённого плана запроса. Стадии образуют дерево: корневая агрегирует вывод дочерних. Stage — концептуальная модель и НЕ исполняется напрямую на воркерах; её реализуют task'и.

Task

Термин

Исполняемая реализация стадии на конкретном воркере — «рабочая лошадка» исполнения. Стадия распараллеливается на множество задач на разных воркерах; задача обрабатывает один или несколько сплитов.

Split

Термин

Секция (кусок) большого набора данных, над которой работает одна задача. Сплиты для source-стадий поставляет коннектор (файл, row-group, диапазон), для промежуточных — вышестоящие стадии.

Driver

Термин

Последовательность инстансов операторов — физический набор операторов в памяти. Наименьший уровень параллелизма в Trino: один вход, один выход. Задача исполняется параллельно множеством драйверов.

Operator

Термин

Элемент, который потребляет, трансформирует и производит данные. Примеры: table scan (чтение из коннектора), filter (предикат), project, aggregation, join, exchange. Операторы соединяются в драйвер.

Exchange

Термин

Механизм передачи данных между нодами Trino для разных стадий запроса. Использует output buffers на стороне продьюсера и exchange clients на стороне консьюмера. Бывает удалённым (между стадиями) и локальным (внутри задачи).

Page

Термин

Единица передачи данных между операторами — набор Block'ов. Операторы потребляют входящие Page и производят исходящие. Page-ориентированная обработка батчами лежит в основе векторизации Trino.

Block

Термин

Структура, хранящая данные одного столбца внутри Page. Бывают обычные, dictionary blocks (словарное/RLE-кодирование, экономят память и CPU) и колоночные ColumnarArray/ColumnarMap/ColumnarRow.

Output buffer

Термин

Буфер на стороне продьюсера в exchange-модели, куда задача складывает произведённые Page до того, как их заберут exchange clients консьюмера. Размер буфера создаёт backpressure: продьюсер тормозит, если буфер полон.

Fragment

Термин

Фрагмент распределённого плана, соответствующий стадии. Тип фрагмента задаёт, как он исполняется и как распределяются данные: SOURCE, HASH, BROADCAST, ROUND_ROBIN, SINGLE. Виден в выводе EXPLAIN.

SOURCE fragment

Термин

Тип фрагмента, исполняемого на нодах, где доступны входные сплиты, ради data locality. Обычно это нижние стадии плана, читающие данные из коннектора.

HASH fragment

Термин

Тип фрагмента (partitioned), исполняемого на фиксированном числе нод; входные данные распределены по хэш-функции от ключа. Применяется для partitioned join и hash-агрегаций.

BROADCAST fragment

Термин

Тип фрагмента, при котором данные транслируются (копируются целиком) на все ноды. Используется для broadcast join, когда build-side мал и помещается в память каждой ноды.

ROUND_ROBIN fragment

Термин

Тип фрагмента, при котором данные распределяются по нодам по кругу, равномерно и без привязки к ключу. Применяется, когда нужно просто сбалансировать нагрузку.

SINGLE fragment

Термин

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

Node scheduler

Термин

Компонент координатора, назначающий сплиты на ноды. Политика задаётся node-scheduler.policy: uniform (равномерное распределение с учётом локальности данных) или topology (по topology-расстоянию между нодами и сплитами).

SplitSource

Термин

Источник сплитов от коннектора. Генерирует сплиты лениво, батчами, а не материализует все сразу — это экономит память координатора и позволяет начать исполнение раньше.

Query lifecycle

Термин

Жизненный цикл запроса: SQL-текст -> AST (parser) -> Analysis (разрешение имён, типы) -> логический план (Plan IR) -> iterative optimizer -> CBO -> распределённый план (фрагментация на stages) -> tasks -> splits -> drivers -> operators -> exchanges -> результат клиенту.

Parser

Термин

Компонент, превращающий текст SQL-statement'а в AST (абстрактное синтаксическое дерево). Первый шаг обработки запроса на координаторе.

Analyzer

Термин

Этап семантического анализа: разрешение имён каталогов/схем/таблиц/столбцов, проверка типов, формирование объекта Analysis. Выполняется после парсинга, до логического планирования.

Logical plan

Термин

Логический план запроса — дерево PlanNode (Plan IR, intermediate representation), описывающее операции без привязки к распределённому исполнению. Вход для iterative optimizer.

Iterative optimizer

Термин

Rule-based оптимизатор Trino. Правило — это пара «паттерн в дереве плана + трансформация». Оптимизатор многопроходно применяет правила, пока план меняется, последовательно улучшая логический план.

Cost-Based Optimizer

Термин

CBO — оптимизатор, принимающий решения на основе оценки стоимости по статистике таблиц. Отвечает за join reordering и выбор join distribution. Из статистики (row count, NDV, nulls fraction) считает cardinality и cost альтернативных планов.

Table statistics

Термин

Статистика таблиц, используемая CBO: на уровне таблицы — total row count; на уровне столбца — data size, nulls fraction, number of distinct values (NDV), min/max. Собирается командой ANALYZE, показывается через SHOW STATS.

NDV

Термин

Number of Distinct Values — оценка числа уникальных значений в столбце. Ключевой вход CBO: по NDV оценивается селективность фильтров и кардинальность результата join. Неверный NDV ведёт к плохому плану.

Join reordering

Термин

Автоматическое переупорядочивание джойнов оптимизатором по статистике. Управляется optimizer.join-reordering-strategy: AUTOMATIC (полная enumeration, по умолчанию), ELIMINATE_CROSS_JOINS, NONE. Без статистики AUTOMATIC откатывается к ELIMINATE_CROSS_JOINS.

Join distribution

Термин

Способ распределения джойна по кластеру: BROADCAST или PARTITIONED. Управляется join-distribution-type (сессия join_distribution_type): AUTOMATIC (по умолчанию), BROADCAST, PARTITIONED.

Broadcast join

Термин

Стратегия джойна, при которой build-side (правая таблица) копируется целиком на каждую ноду как хэш-таблица. Быстро, без шаффла, но build-side должен влезать в память каждой ноды. Порог — join-max-broadcast-table-size (по умолчанию 100MB).

Partitioned join

Термин

Стратегия джойна (hash join), при которой обе таблицы перераспределяются по хэшу join-ключа. Медленнее из-за шаффла, но позволяет джойнить большие таблицы, используя суммарную память кластера.

Predicate pushdown

Термин

Оптимизация, при которой фильтрация строк (условие WHERE) проталкивается в источник данных, чтобы он вернул меньше строк. Поддержка специфична для коннектора и реализуется через SPI (applyFilter).

Projection pushdown

Термин

Оптимизация, ограничивающая набор читаемых из источника столбцов. Dereference pushdown — её разновидность: достаёт из ROW только нужные вложенные поля. Реализуется через SPI (applyProjection).

Aggregation pushdown

Термин

Оптимизация, при которой агрегатные функции вычисляются в источнике данных, если коннектор это поддерживает через SPI (applyAggregation). Снижает объём передаваемых в Trino данных.

Dynamic filtering

Термин

Механизм рантайм-фильтрации: Trino собирает значения join-ключей с отфильтрованной build-side, формирует динамический предикат и применяет его к scan'у fact-таблицы, чтобы не читать заведомо отсеиваемые данные. Включает dynamic partition pruning.

Lakehouse

Термин

Архитектура, объединяющая дешёвое object storage и открытые форматы таблиц (Iceberg, Delta Lake, Hudi) с возможностями warehouse: ACID, time travel, schema evolution. Trino — типичный движок запросов для lakehouse.

Hive Metastore

Термин

HMS — сервис каталога метаданных: хранит описания схем, таблиц, партиций, расположение файлов. Используется коннекторами Hive, Iceberg, Delta Lake для разрешения, где и в каком виде лежат данные.

AWS Glue

Термин

AWS Glue Data Catalog — управляемый облачный каталог метаданных, совместимая альтернатива Hive Metastore. Подключается к коннекторам Hive/Iceberg/Delta через hive.metastore=glue.

REST catalog

Термин

Тип каталога Iceberg, работающий по стандартному Iceberg REST API. Указывается через iceberg.catalog.type=rest. Не требует Hive Metastore, упрощает развёртывание lakehouse.

Iceberg connector

Термин

Коннектор Trino для таблиц Apache Iceberg. Поддерживает каталоги Hive Metastore, Glue, REST, Nessie, JDBC; snapshots, time travel, schema evolution, обслуживание таблиц через ALTER TABLE EXECUTE, metadata-таблицы.

Delta Lake connector

Термин

Коннектор Trino для таблиц Delta Lake. Полный read/write (INSERT, DELETE, UPDATE, MERGE), time travel, deletion vectors, change data feed, процедуры OPTIMIZE/VACUUM/register_table. Метасторы — HMS и Glue.

Hive connector

Термин

Коннектор Trino для таблиц Hive поверх object storage. Требует Hive Metastore или Glue. Форматы ORC, Parquet, Avro и другие; партиционирование и бакетинг; чтение/запись ACID-таблиц с HMS 3.x.

Lakehouse connector

Термин

Новый единый коннектор Trino, объединяющий функциональность Hive, Iceberg, Delta Lake и Hudi в одном каталоге. Позволяет работать с таблицами разных форматов через один коннектор вместо четырёх отдельных каталогов.

Time travel

Термин

Возможность читать таблицу в её прошлом состоянии. В Trino: SELECT ... FOR VERSION AS OF <snapshot_id> и FOR TIMESTAMP AS OF TIMESTAMP '...'. Iceberg также поддерживает branches и tags как версионные идентификаторы.

Snapshot

Термин

Снапшот — зафиксированное состояние таблицы Iceberg на момент коммита. Каждая запись создаёт новый снапшот; на снапшоты опираются time travel и инкрементальные операции. Видны в metadata-таблице $snapshots.

OPTIMIZE

Термин

Процедура обслуживания таблицы (ALTER TABLE ... EXECUTE optimize), выполняющая компакцию мелких файлов в крупные. Параметр file_size_threshold (по умолчанию 100MB), опциональный WHERE для фильтра партиций. Лечит проблему too many small files.

expire_snapshots

Термин

Процедура обслуживания Iceberg (ALTER TABLE ... EXECUTE expire_snapshots), удаляющая старые снапшоты и связанные метаданные и файлы данных. Минимальный retention по умолчанию 7 дней, параметр retain_last.

Hidden partitioning

Термин

Особенность Iceberg: партиционирование задаётся через transforms (year, month, day, hour, bucket, truncate) и не требует отдельного столбца в запросах. Движок сам сопоставляет фильтр по столбцу с партициями.

Schema evolution

Термин

Изменение схемы таблицы без перезаписи данных: добавление, удаление, переименование столбцов, type widening (INTEGER->BIGINT, REAL->DOUBLE, расширение DECIMAL precision), изменение схемы партиционирования. Полноценно поддержано в Iceberg.

Federation

Термин

Федерация запросов — выполнение одного SQL-запроса поверх нескольких разнородных источников (например, join таблицы PostgreSQL с Parquet на S3) без физического перемещения данных. Один из ключевых сценариев Trino.

JDBC connector

Термин

Семейство коннекторов Trino к реляционным источникам через JDBC (PostgreSQL, MySQL, SQL Server, Oracle и другие). Отвечает за маппинг типов, чтение метаданных, connection pooling и pushdown в источник.

User memory

Термин

Память, выделяемая запросом явно под свои нужды: хэш-таблицы джойнов, буферы сортировки и агрегации. Учитывается лимитами query.max-memory и query.max-memory-per-node.

Revocable memory

Термин

Память, которую движок может отозвать у запроса, выгрузив её содержимое на диск (spill). Даёт запросу шанс завершиться вместо падения по OOM ценой замедления на disk I/O.

Heap headroom

Термин

Резерв heap под неучтённые Trino аллокации (system memory). Задаётся memory.heap-headroom-per-node, по умолчанию 30% максимального heap. Сумма query.max-memory-per-node и headroom должна быть меньше -Xmx JVM.

Spilling

Термин

Выгрузка revocable memory на диск, когда запрос упирается в лимит памяти. Поддержан для aggregations, joins, sort, window functions. Узкое место — disk I/O; нельзя спилить на системный диск или диск с JVM-логами.

Resource groups

Термин

Механизм управления нагрузкой: иерархия групп с лимитами, очередями и приоритетами запросов. Позволяет изолировать нагрузки (например, дашборды от ad-hoc). Конфигурация file-based (JSON) или database-based.

Low-memory killer

Термин

Механизм, который при нехватке памяти на кластере выбирает запрос-жертву и убивает его, чтобы разгрузить кластер и дать остальным запросам завершиться.

Fault-tolerant execution

Термин

FTE — опциональный режим отказоустойчивости. Промежуточные данные обмена спулятся через exchange manager и могут быть переиспованы другим воркером при сбое. Покрывает инфраструктурные сбои, но не ошибки пользователя.

Retry policy

Термин

Политика повторов при FTE: NONE (по умолчанию, без отказоустойчивости), QUERY (ретрай всего запроса, для множества мелких запросов), TASK (ретрай отдельных задач, для больших batch-запросов; требует exchange manager).

Exchange manager

Термин

Компонент FTE, спулящий промежуточные данные обмена во внешнее надёжное хранилище. Настраивается в etc/exchange-manager.properties; хранилища: filesystem (S3, GCS, Azure Blob, HDFS, локальная ФС только не для прода).

Tardigrade

Термин

Кодовое имя проекта, в рамках которого в Trino реализовали fault-tolerant execution. Тихоходка (tardigrade) — символ выживаемости: запрос переживает сбой воркера.

Trino Gateway

Термин

Отдельный продукт (репозиторий trinodb/trino-gateway): балансировщик, прокси и routing-шлюз для нескольких кластеров Trino. Один URL для клиентов, маршрутизация по правилам, no-downtime blue/green апгрейды кластеров.

EXPLAIN ANALYZE

Термин

Команда, которая исполняет запрос и показывает распределённый план с фактической стоимостью операций: CPU-время по стадиям, объём данных, относительную стоимость нод. EXPLAIN ANALYZE VERBOSE добавляет низкоуровневую статистику операторов.

JMX

Термин

Java Management Extensions — стандартный механизм метрик JVM-приложения. Trino экспонирует через JMX большое число внутренних метрик; коннектор jmx позволяет запрашивать их прямо как SQL-таблицы.

Web UI

Термин

Веб-интерфейс координатора Trino: список запросов, их детали, стадии, статистика, live-план. Базовый инструмент наблюдаемости — позволяет увидеть очереди, прогресс и dynamicFiltersStats.

Polymorphic table function

Термин

PTF — полиморфная табличная функция: функция, возвращающая таблицу, чья схема определяется в момент вызова. Применяется в том числе для query pass-through — отправки нативного запроса прямо в источник.

SQL UDF

Термин

SQL user-defined function — пользовательская функция на SQL. Объявляется через WITH FUNCTION (inline в одном запросе) или CREATE FUNCTION (catalog routine, переиспользуемая). В старых материалах термин звучал как «SQL routines».

number type

Термин

Новый числовой тип данных, добавленный в Trino в релизе 480 (24 марта 2026). Часть развития системы типов наряду с DECIMAL и TIMESTAMP с precision.

OLAP

Термин

Online Analytical Processing — аналитическая нагрузка: тяжёлые сканирующие запросы, агрегации, join больших таблиц. Целевой класс задач для Trino. Противоположность OLTP (транзакционная нагрузка), для которой Trino не предназначен.

Shared-nothing

Термин

Архитектурный принцип: ноды кластера не делят между собой память и диск, общаются только по сети. Каждый воркер обрабатывает свою часть данных независимо. Основа горизонтальной масштабируемости MPP-систем.

ANALYZE

Термин

SQL-команда Trino, собирающая и обновляющая статистику таблицы (row count, NDV, nulls fraction, data size, min/max). Нужна, когда данные изменили в обход Trino, чтобы CBO строил планы по актуальным цифрам.

SHOW STATS

Термин

Команда SHOW STATS FOR <table>, выводящая текущую статистику таблицы, которую видит CBO. Первый инструмент диагностики, когда оптимизатор выбрал плохой join order.

remove_orphan_files

Термин

Процедура обслуживания Iceberg (ALTER TABLE ... EXECUTE remove_orphan_files), удаляющая из хранилища файлы, не связанные ни с одним снапшотом таблицы. Освобождает место после сбоев и откатов.

Deletion vectors

Термин

Механизм row-level удаления без перезаписи файлов данных: позиции удалённых строк хранятся отдельно. Поддержаны в Delta Lake (deletion_vectors_enabled) и в Iceberg v3 (binary deletion vectors).

Change data feed

Термин

CDC-возможность Delta Lake: при записи фиксируются change-события (вставки, удаления, обновления строк), которые потом можно прочитать. У Iceberg аналогичную роль играет функция table_changes().

Metadata table

Термин

Системная таблица Iceberg, дающая доступ к метаданным через SQL: $snapshots, $files, $history, $partitions, $manifests, $properties и другие. Инструмент инспекции состояния и обслуживания таблицы.

Iceberg v3

Термин

Версия формата таблиц Iceberg (экспериментальная в актуальных релизах Trino): column default values, шифрование, тип VARIANT, binary deletion vectors, nanosecond timestamps, row lineage. v2 остаётся версией по умолчанию.

VARIANT

Термин

Полуструктурированный тип данных для Iceberg v3, добавленный в Trino экспериментально (чтение — с релиза 471, развитие — в 481). Хранит произвольные JSON-подобные структуры без фиксированной схемы.

ORC

Термин

Optimized Row Columnar — колоночный формат файлов хранения. Поддержан коннекторами Hive и другими; в ORC и Parquet работают динамические фильтры с stripe/row-group pruning. Транзакционные Hive ACID-таблицы используют ORC.

Parquet

Термин

Широко распространённый колоночный формат файлов хранения. Основной формат для таблиц Iceberg и Delta Lake, поддержан Hive. В Parquet динамические фильтры дают row-group pruning, экономя дисковый I/O.

Pipelined execution

Термин

Модель исполнения Trino: данные стримятся через цепочку операторов Page за Page, не материализуясь целиком между стадиями. Вместе с MPP и векторизацией даёт низкую латентность интерактивных запросов.

node.properties

Термин

Файл etc/node.properties: настройки конкретной ноды. node.environment одинаков для всего кластера, node.id уникален, node.data-dir — путь к данным. Обязателен на каждой ноде.

config.properties

Термин

Файл etc/config.properties: конфигурация сервера Trino. Ключевые свойства: coordinator (true/false), node-scheduler.include-coordinator, http-server.http.port, discovery.uri, лимиты памяти.

jvm.config

Термин

Файл etc/jvm.config: опции JVM по одной на строку (-Xmx, настройки GC, -XX:...). Для прода heap обычно 32GB и больше; каталог временных файлов JVM не должен иметь флаг noexec.

TPC-H

Термин

Системный коннектор tpch, генерирующий на лету данные одноимённого аналитического бенчмарка. Не требует внешнего источника — удобен для обучения, демонстраций и проверки кластера без настройки хранилища.

Faker connector

Термин

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

query.max-memory

Термин

Свойство, ограничивающее максимум распределённой user memory на один запрос по всему кластеру. По умолчанию 20GB. При превышении запрос убивается с ошибкой нехватки памяти.

EXCEEDED_LOCAL_MEMORY_LIMIT

Термин

Код ошибки Trino: запрос превысил лимит user memory на одной ноде (query.max-memory-per-node, по умолчанию 30% heap). Типичная причина — broadcast join слишком большой build-side. Лечится статистикой, PARTITIONED join или spill.

dbt-trino

Термин

Адаптер dbt для Trino: позволяет описывать аналитические трансформации как dbt-модели и материализовать их через Trino. Один из стандартных клиентов в data-engineering-стеке поверх Trino.