개요
Trino는 대규모 데이터셋을 여러 이기종 데이터 소스에 걸쳐 빠르게 조회할 수 있도록 설계된 오픈소스 분산 SQL 쿼리 엔진입니다. 기존 SQL만 알면 HDFS, S3, PostgreSQL, MySQL, MongoDB 등 서로 다른 저장소의 데이터를 하나의 쿼리로 조회할 수 있다는 점이 가장 큰 매력입니다. 이 글에서는 Trino가 무엇인지, 왜 생겨났는지, 언제 쓰는지, 그리고 Claude Code와 연결해서 AI 기반 데이터 분석까지 하는 방법을 알아봅니다.

Trino란 무엇인가
Trino는 빅데이터 분석을 위한 분산 SQL 쿼리 엔진입니다. 여기서 중요한 점은 Trino 자체가 데이터를 저장하는 데이터베이스가 아니라는 것입니다. Trino는 순수한 쿼리 엔진으로, 다양한 데이터 소스 위에 올라가서 SQL로 데이터를 조회하는 역할을 합니다.
쉽게 비유하면, Trino는 여러 도서관의 책을 한 곳에서 검색할 수 있게 해주는 통합 검색 시스템과 같습니다. 각 도서관(데이터 소스)에 직접 가지 않아도, Trino라는 창구 하나로 모든 데이터를 조회할 수 있습니다.
Trino는 ANSI SQL 표준을 준수하며, SQL-92부터 SQL:2023까지 다양한 SQL 사양을 지원합니다. 덕분에 기존 SQL 지식만으로 바로 사용할 수 있습니다.
Trino가 생겨난 배경
Facebook에서의 Presto 탄생
Trino의 역사는 Facebook(현 Meta)에서 시작됩니다. 2012년경 Facebook의 데이터 분석가들은 거대한 Hadoop 데이터 웨어하우스에서 대화형 쿼리를 실행해야 했지만, 당시 사용하던 Apache Hive는 너무 느렸습니다. 이 문제를 해결하기 위해 Martin Traverso, Dain Sundstrom, David Phillips, Eric Hwang이 Presto를 만들었고, 2013년 11월에 오픈소스로 공개했습니다.
Presto에서 Trino로의 분리
2018년 말, Facebook이 Presto 프로젝트의 거버넌스 정책을 일방적으로 변경하면서 Facebook 커미터들에게 더 많은 권한을 부여하자, 원래 창시자인 Martin, Dain, David는 Facebook을 떠나기로 결정합니다. 그들은 2019년 1월 Presto Software Foundation을 설립하고, 기존의 실력 중심(meritocratic) 운영 방식을 유지하며 독립적으로 프로젝트를 이어갔습니다.
리브랜딩
처음에는 PrestoSQL이라는 이름을 사용했지만, Facebook이 "Presto"라는 상표권을 보유하고 있었기 때문에 2020년 12월 Trino로 이름을 변경했습니다. 이후 Trino와 Presto(Facebook 버전)는 서로 다른 방향으로 발전해왔으며, 현재 Trino가 더 많은 커밋과 기능을 보유하고 있습니다.
Trino 아키텍처 핵심 개념
Trino 클러스터는 다음과 같은 핵심 구성요소로 이루어져 있습니다.
코디네이터(Coordinator)
Trino 클러스터의 두뇌 역할을 합니다. 클라이언트로부터 SQL 문을 받아 파싱하고, 쿼리 플랜을 수립하며, 워커 노드들에게 작업을 분배합니다. 클라이언트가 접속하는 진입점이기도 합니다.
워커(Worker)
실제 데이터를 처리하는 일꾼입니다. 코디네이터로부터 할당받은 태스크를 실행하고, 커넥터를 통해 데이터 소스에서 데이터를 가져오며, 워커 간에 중간 데이터를 교환합니다.
커넥터(Connector)
Trino를 각 데이터 소스에 연결하는 어댑터입니다. 데이터베이스 드라이버와 비슷한 개념으로, Trino의 SPI(Service Provider Interface)를 구현하여 표준화된 API로 다양한 데이터 소스와 통신합니다.
카탈로그(Catalog)
데이터 소스에 대한 접근을 설정하는 단위입니다. 카탈로그와 스키마가 합쳐져서 조회 가능한 테이블의 집합을 정의합니다. 예를 들어 hive.default.users처럼 카탈로그.스키마.테이블 형태로 데이터에 접근합니다.

Trino를 쓰는 이유
1. 다양한 데이터 소스 통합 조회
Trino의 가장 큰 강점은 여러 이기종 데이터 소스를 하나의 SQL 쿼리로 조인할 수 있다는 것입니다. PostgreSQL에 있는 사용자 정보와 S3에 저장된 로그 데이터를 한 번의 쿼리로 결합하여 분석할 수 있습니다.
2. 뛰어난 성능
Trino는 인메모리 파이프라인 처리 방식을 사용하여 인터랙티브 쿼리에서 매우 빠른 응답 속도를 제공합니다. 기존에 몇 시간 걸리던 분석을 몇 분, 심지어 몇 초 만에 처리할 수 있습니다.
3. 표준 SQL 지원
ANSI SQL 표준을 준수하기 때문에, 팀원들이 SQL을 알고 있다면 별도의 학습 없이 즉시 데이터 분석을 시작할 수 있습니다.
4. 높은 동시 접속 처리
Trino의 스테이트리스(stateless) 설계 덕분에 수백 명의 사용자가 동시에 쿼리를 실행해도 일관된 성능을 유지합니다. 대규모 분석 팀에 적합합니다.
5. 컴퓨팅과 스토리지 분리
컴퓨팅 레이어와 스토리지 레이어를 분리하여 비용을 최적화할 수 있습니다. 필요한 만큼만 컴퓨팅 리소스를 확장하고 축소할 수 있어 클라우드 환경에서 특히 유리합니다.
Trino의 주요 사용 사례
인터랙티브 분석 및 BI
데이터 분석가와 데이터 사이언티스트가 대규모 데이터에 대해 즉석 쿼리를 실행하고, A/B 테스트 결과를 확인하며, 대시보드와 시각화를 구축하는 데 활용됩니다.
데이터 레이크 분석
S3, HDFS 등에 저장된 CSV, JSON, Parquet, ORC 등 다양한 형식의 데이터를 별도의 변환 없이 직접 쿼리할 수 있습니다. 데이터를 옮기지 않고도 운영 대시보드를 만들 수 있습니다.
ETL 배치 처리
기존 ETL 프로세스를 대폭 가속화하고, 모든 변환 작업을 표준 SQL로 처리할 수 있습니다. 다양한 소스와 타겟을 동일한 시스템에서 관리할 수 있어 효율적입니다.
페더레이티드 쿼리
여러 데이터 소스에 걸친 데이터를 동일한 SQL로 조회하여 전체 데이터 그림을 파악하는 분석이 매우 간단해집니다.
Trino 시작하기: 설치와 기본 사용법
Docker로 빠르게 시작하기
가장 쉬운 방법은 Docker를 사용하는 것입니다.
# Trino 단일 노드 실행
docker run -p 8080:8080 --name trino trinodb/trino
이 명령어 하나로 Trino 서버가 localhost:8080에서 실행됩니다.
Docker Compose로 PostgreSQL과 함께 구성하기
실제 데이터 소스를 연결하려면 Docker Compose를 활용합니다.
version: "3.9"
services:
trino:
image: 'trinodb/trino:latest'
ports:
- '8080:8080'
volumes:
- ./catalog:/etc/trino/catalog
depends_on:
- postgres
postgres:
image: 'postgres:15'
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: admin
POSTGRES_DB: sampledb
ports:
- '5432:5432'
카탈로그 설정
PostgreSQL 커넥터를 설정하려면 catalog/postgresql.properties 파일을 만듭니다.
connector.name=postgresql
connection-url=jdbc:postgresql://postgres:5432/sampledb
connection-user=admin
connection-password=admin
Trino CLI로 쿼리 실행
# Trino CLI 접속
docker exec -it trino trino
# 카탈로그 목록 확인
SHOW CATALOGS;
# 스키마 확인
SHOW SCHEMAS FROM postgresql;
# 테이블 조회
SELECT * FROM postgresql.public.users LIMIT 10;
페더레이티드 쿼리 예시
서로 다른 데이터 소스의 테이블을 하나의 쿼리로 조인하는 예시입니다.
-- PostgreSQL의 사용자 정보와 Hive의 로그 데이터를 조인
SELECT
u.user_id,
u.name,
COUNT(l.event_id) AS event_count
FROM postgresql.public.users u
JOIN hive.logs.user_events l
ON u.user_id = l.user_id
WHERE l.event_date >= DATE '2026-01-01'
GROUP BY u.user_id, u.name
ORDER BY event_count DESC
LIMIT 20;
이것이 Trino의 핵심 가치입니다. 서로 다른 데이터 소스에 저장된 데이터를 마치 하나의 데이터베이스인 것처럼 SQL로 조회할 수 있습니다.
지원하는 주요 커넥터
Trino는 30개 이상의 커넥터를 지원합니다. 주요 커넥터를 카테고리별로 살펴보면 다음과 같습니다.
관계형 데이터베이스
- PostgreSQL, MySQL, MariaDB, Oracle, SQL Server, Redshift, Snowflake, SingleStore
데이터 레이크/웨어하우스
- Hive (HDFS, S3, GCS, Azure Blob), Iceberg, Hudi, Delta Lake
NoSQL
- MongoDB, Cassandra, Redis
메시지/스트리밍
- Kafka
검색 엔진
- Elasticsearch, OpenSearch
모니터링
- Prometheus, Loki
기타
- Google Sheets, JMX, Memory, TPC-DS, TPC-H (벤치마크)
Claude Code에서 Trino 연결하기
Claude Code와 Trino를 연결하면, 자연어로 데이터를 조회하고 분석할 수 있습니다. 이를 가능하게 해주는 것이 MCP(Model Context Protocol) 서버입니다.
MCP-Trino란
MCP-Trino는 AI 어시스턴트가 Trino 데이터 웨어하우스를 쿼리하고 탐색할 수 있도록 해주는 MCP 서버입니다. Claude Code에 연결하면 자연어로 데이터베이스 구조를 탐색하고, SQL 쿼리를 실행하며, 결과를 분석할 수 있습니다.

설치 방법
방법 1: Homebrew로 설치 (macOS/Linux)
brew install txn2/tap/mcp-trino
방법 2: 바이너리 직접 다운로드
curl -L https://github.com/txn2/mcp-trino/releases/latest/download/mcp-trino_$(uname -s)_$(uname -m).tar.gz | tar xz
Claude Code에 MCP 서버 등록
claude mcp add trino \
-e TRINO_HOST=trino.example.com \
-e TRINO_PORT=8080 \
-e TRINO_USER=your_user \
-e TRINO_PASSWORD=your_password \
-e TRINO_CATALOG=hive \
-- mcp-trino
또는 .claude/settings.json 파일에 직접 설정할 수도 있습니다.
{
"mcpServers": {
"trino": {
"command": "mcp-trino",
"env": {
"TRINO_HOST": "trino.example.com",
"TRINO_PORT": "8080",
"TRINO_USER": "your_user",
"TRINO_PASSWORD": "your_password",
"TRINO_CATALOG": "hive",
"TRINO_SCHEMA": "default"
}
}
}
}
MCP-Trino 제공 도구
MCP 서버가 연결되면 Claude Code에서 다음 도구들을 사용할 수 있습니다.
- trino_query: SELECT, SHOW, DESCRIBE 등 읽기 전용 쿼리 실행
- trino_execute: INSERT, UPDATE, CREATE, DROP 등 쓰기 작업 실행
- trino_explain: 쿼리 실행 계획을 논리적/분산/I/O 형식으로 분석
- trino_browse: 카탈로그, 스키마, 테이블 계층 구조 탐색
- trino_describe_table: 컬럼 정의 및 샘플 데이터 조회
- trino_list_connections: 설정된 서버 연결 목록 확인
실제 활용 예시
Claude Code에서 자연어로 데이터를 분석하는 흐름은 다음과 같습니다.
사용자: "지난 달 매출 상위 10개 상품을 알려줘"
Claude Code:
1. trino_browse로 관련 카탈로그/스키마/테이블 탐색
2. trino_describe_table로 테이블 구조 확인
3. trino_query로 SQL 실행:
SELECT product_name, SUM(amount) as total_sales
FROM hive.sales.transactions
WHERE sale_date >= DATE '2026-02-01'
GROUP BY product_name
ORDER BY total_sales DESC
LIMIT 10
4. 결과를 자연어로 요약하여 응답
다중 서버 연결
여러 Trino 인스턴스에 동시에 연결할 수도 있습니다.
export TRINO_HOST=prod.trino.example.com
export TRINO_USER=admin
export TRINO_ADDITIONAL_SERVERS='{
"staging": {"host": "staging.trino.example.com"},
"dev": {"host": "localhost", "port": 8080, "ssl": false}
}'
안전 기능
MCP-Trino는 기본적으로 읽기 전용 모드로 동작하여 실수로 데이터를 수정하는 것을 방지합니다. 쿼리 제한(limit)과 타임아웃 설정도 기본 제공되어 무거운 쿼리로 인한 시스템 부하를 예방합니다.
마무리
Trino는 분산 환경에서 여러 데이터 소스를 SQL 하나로 통합 조회할 수 있게 해주는 강력한 쿼리 엔진입니다. Facebook에서 시작된 Presto의 정신을 이어받아 오픈소스 커뮤니티 중심으로 발전해왔으며, 현재 가장 활발하게 개발되는 분산 SQL 쿼리 엔진 중 하나입니다.
Docker 하나로 간단히 시작할 수 있고, MCP 서버를 통해 Claude Code와 연결하면 자연어 기반의 데이터 분석까지 가능합니다. 여러 데이터 소스에 흩어진 데이터를 통합 분석해야 하는 상황이라면, Trino를 적극 검토해보시기 바랍니다.
참고 자료
- Trino 공식 사이트
- Trino 공식 문서 - Concepts
- Trino 공식 문서 - Use Cases
- Trino 공식 문서 - Connectors
- A History of Trino and Presto - Starburst
- MCP-Trino GitHub Repository
- Trino Getting Started - GitHub
- Trino Docker 설치 가이드
이 글은 Claude Code를 활용하여 작성되었습니다.
'IT일반' 카테고리의 다른 글
| Defuddle - 웹 페이지에서 본문만 깔끔하게 추출하는 오픈소스 라이브러리 (0) | 2026.03.24 |
|---|---|
| Spec Driven Development: AI 시대, 코드보다 스펙이 먼저다 (1) | 2026.03.18 |
| CodeSpeak — Kotlin 창시자가 만든 LLM 시대의 새로운 프로그래밍 언어 (0) | 2026.03.15 |
| 리워드 캠페인부터 추천 마케팅까지, 고객이 알아서 홍보하게 만드는 법 (0) | 2026.03.10 |
| GPT-SoVITS 심층 분석 가이드: 1분 음성으로 고품질 TTS 모델 만들기 (0) | 2026.03.08 |