Trino

[Trino] 쿼리 실행 모델 - 1

비번변경 2023. 3. 9. 21:59

개요

Trino에서 쿼리 실행과 관련된 개념을 정리해 둔다.

 

 

구문(Statement)

ANSI SQL 표준으로 정의된 구문. 절(clause), 표현식(expression), 조건자(predicate)로 구성된다. 

Trino는 ANSI 호환 SQL 구문을 실행하며, 구문이 실행되면 Trino Worker에 배포되는 쿼리 플랜에 따라 쿼리를 생성한다.

쿼리 플랜

 

 

Query

Trino는 구문(Statement)을 쿼리로 변환하고 분산 쿼리 계획을 생성한다. 분산 쿼리 계획은 Trino 워커에서 동작하는 상호 연결된 stage로 구현된다. 

구문(Statement)이 Trino에게 전달되는 SQL 텍스트라면 쿼리는 구문을 실행하기 위해 인스턴스화된 구성과 구성 요소라고 할 수 있다. 쿼리는 stage, task, split, connector 등 결과를 생성하기 위해 함께 동작하는 구성 요소를 포함한다.

 

 

Stage

Trino는 쿼리를 여러 계층의 stage로 분할하여 실행한다. stage 계층은 tree와 유사하며, 모든 쿼리는 다른 stage의 출력을 집계하는 root stage를 가진다. stage는 coordinator가 분산 쿼리 플랜을 모델링하는 데 사용하는 것으로, stage 자체는 워커에서 실행되는 것이 아니다.

 

 

Task

stage는 Trino worker의 네트워크를 통해 배포되는 task로 구현된다.

분산 쿼리 계획은 stage로 분해된 뒤 task로 변환되어 split에 따라 처리되거나 동작한다.

task는 입력과 출력을 가지며, stage가 병렬 task로 실행되는 것처럼 task도 병렬 driver로 실행된다.

 

 

 

참고 문서

https://www.oreilly.com/library/view/trino-the-definitive/9781098107703/ch04.html

https://trino.io/docs/current/overview/concepts.html#query-execution-model