Trino 개요 — 하나의 SQL로 이기종 데이터를 쿼리하는 분산 엔진
Trino 개요 — 하나의 SQL로 이기종 데이터를 쿼리하는 분산 엔진
Trino는 분산 SQL 쿼리 엔진이에요. 하나 이상의 이기종(異種) 데이터소스에 흩어져 있는 대용량 데이터셋을 마치 한 곳처럼 SQL로 질의할 수 있게 해줘요. 데이터를 먼저 옮길 필요 없이, 데이터가 있는 그 자리에서 병렬로 읽어 처리한다는 점이 핵심이에요. 데이터레이크, 레이크하우스, 관계형 DB, NoSQL 등 서로 다른 저장소를 한 번의 쿼리로 묶고 싶을 때 Trino가 빛을 발해요.
본문
Trino는 흔히 "분산 SQL 쿼리 엔진(distributed SQL query engine)"이라고 불려요. 이 단어 하나에 Trino의 정체성이 모두 담겨 있어요.
- 분산: 클러스터를 이루는 여러 서버가 데이터를 병렬로 처리해요.
- SQL: 표준 ANSI SQL 문법을 지원해서 익숙한 문법으로 질의할 수 있어요.
- 쿼리 엔진: 저장(스토리지)은 갖고 있지 않고 오직 질의 처리만 담당해요. 그래서 데이터는 기존 시스템에 그대로 두고, Trino만 올려서 읽는 구조예요.
어떤 문제를 푸나요
데이터가 반드시 한 곳에 모여 있지 않아요. 로그는 객체 스토리지에, 운영 데이터는 PostgreSQL에, 분석 데이터는 Iceberg 테이블에 있는 식으로 흩어져 있죠. Trino는 이런 여러 데이터소스를 **카탈로그(catalog)**라는 단위로 연결한 뒤, 하나의 SQL 문장 안에서 catalog.schema.table 형태로 함께 질의할 수 있게 해줘요.
이렇게 하면 ETL로 데이터를 한곳에 복제하지 않아도 되고, 분석가가 필요한 시점에 필요한 데이터를 바로 조회할 수 있어요. 예컨대 수십억 행을 가진 테이블을 조인하거나, 테라바이트 단위 스캔을 몇 초~수 분 안에 끝내는 대화형(interactive) 분석에 강점이 있어요.
어떤 특징을 갖고 있나요
- 이기종 연합(federation): 관계형 DB, 데이터레이크, NoSQL, 스트리밍 소스까지 한 쿼리로 연결
- 코디네이터/워커 분리: 중앙의 코디네이터가 계획을 세우고, 워커들이 조각(split)을 병렬로 수행
- 인메모리 처리: 워커 간 중간 결과를 HTTP/2 기반 exchange로 주고받으며 파이프라인 방식으로 처리
- 개방형: 오픈소스로, 커넥터(connector)를 통해 확장
Trino는 저장소가 없는 순수 컴퓨팅(compute-only) 엔진이라는 점을 꼭 기억해야 해요. 그래서 내구성, 일관성, 메타데이터의 성격은 결국 질의 대상이 되는 원천 시스템이 정한답니다.
더 알아보기
- 아키텍처와 핵심 개념 → Trino 개념
- 다양한 데이터소스 연결 → 커넥터
- 쿼리 계획 최적화 → 쿼리 최적화
- 카탈로그·스키마·테이블 개념 → Trino 개념 문서