Presto/Trino
Presto/Trino
Facebook(현 Meta)이 개발한 분산 SQL 쿼리 엔진으로, HDFS, S3, RDBMS, NoSQL 등 다양한 데이터 소스를 통합 쿼리하고 대화형 분석(Interactive Analytics)을 제공하는 오픈소스 MPP(Massively Parallel Processing) 엔진 (Trino는 Presto의 포크)
목적: 대화형 분석, 다중 데이터 소스 통합 쿼리, 빠른 응답, Ad-hoc 분석
특징: MPP 아키텍처, 메모리 기반 처리, Connector 플러그인, SQL 표준 지원, 스토리지 분리
구성요소: Coordinator(쿼리 계획, 메타데이터), Worker(쿼리 실행, 데이터 처리), Connector(데이터 소스 연결), Catalog(스키마 정의)
Connector: Hive, Iceberg, Delta Lake, MySQL, PostgreSQL, Kafka, Elasticsearch, Redis 등 60+ 지원
동작: ① 클라이언트 쿼리 제출 → ② Coordinator가 쿼리 파싱·최적화 → ③ 실행 계획 생성 → ④ Worker에 태스크 분배 → ⑤ 병렬 실행 → ⑥ 결과 집계 반환
MPP: 쿼리를 여러 Worker에 병렬 분산 처리, 파이프라인 실행, 메모리 내 처리
시간 복잡도: 쿼리 병렬도에 따라 O(n/p), p = Worker 수
장점: 빠른 대화형 쿼리(초~분), 다양한 데이터 소스 통합, SQL 표준, 스토리지 분리, 확장성
단점: 메모리 제약(복잡 쿼리 OOM), 장시간 배치 부적합, 결함 허용 약함(쿼리 재시작)
적용사례: 데이터 레이크 분석, Ad-hoc 쿼리, 대시보드, 데이터 탐색, 다중 소스 조인
비교: Trino(대화형/빠름/메모리) vs Spark(배치/느림/디스크) vs Hive(배치/매우 느림)
연관: MPP, 데이터 레이크, Hive, Iceberg, 분석 엔진