개요
2023.03.09 - [Trino] 쿼리 실행 모델 - 1에 이어 쿼리 실행과 관련된 개념을 마저 정리한다.
Split
Task는 큰 데이터 세트의 부분인 Split에서 동작한다.
분산 쿼리 계획의 가장 낮은 단계인 stage는 커넥터에서 split을 통해 데이터를 검색하고, 분산 쿼리 계획의 더 높은 단게인 중간 stage는 다른 stage에서 데이터를 검색한다.
Trino가 쿼리를 스케쥴링할 때, coordinator는 커넥터에 테이블을 사용할 수 있는 모든 split 목록을 쿼리 한다.
Driver
Task는 하나 이상의 병렬 드라이버를 포함한다. 드라이버는 데이터에 따라 동작하고 operator를 결합해 출력을 생성한다. 생성된 출력은 task에 의해 집계된 다음 다른 stage에서 다른 task로 전달된다.
드라이버는 배열된 operator 인스턴스로, 메모리에 있는 operator의 물리적인 집합이라고 할 수 있다. Trino에서 가장 낮은 수준의 병렬 처리로 드라이버는 하나의 입력과 하나의 출력을 가진다.
Operator
데이터를 사용하거나 변환 및 생성한다.
Exchange
쿼리의 다른 stage에 대해 trino node 간 데이터 전송을 의미한다. Task는 출력 버퍼로 데이터를 생성하고 exchange 클라이언트를 사용해 다른 task의 데이터를 소비한다.
참고 문서
https://www.oreilly.com/library/view/trino-the-definitive/9781098107703/ch04.html
https://trino.io/docs/current/overview/concepts.html#query-execution-model