셋 다 저장소를 갖지 않고 외부 데이터를 읽어 분산 처리하는 MPP SQL 엔진 계열이다.
| 항목 | Amazon Athena | Trino | PrestoDB |
|---|---|---|---|
| 형태 | 관리형 서비스 | 오픈소스 | 오픈소스 |
| 운영 | 서버리스. 클러스터 관리 없음 | 직접 운영 | 직접 운영 |
| 계보 | Presto 계열 엔진 기반 | PrestoSQL 의 새 이름 | Meta 가 시작한 원본 계열 |
| 과금 | 스캔한 데이터량 기준 | 인프라 비용 | 인프라 비용 |
| 주 데이터 | S3 데이터 레이크 | 데이터 레이크와 여러 DB | 데이터 레이크와 여러 DB |
Athena 는 클러스터를 신경 쓰지 않아도 되지만 실행 환경을 세밀하게 조정할 수 없다. Trino 와 PrestoDB 는 반대다.
2012년 Meta(당시 Facebook)에서 Presto 개발이 시작됐고 2013년 공개됐다. 2019년 원 개발자들이 PrestoSQL 로 갈라져 나왔고, 2020년 말 이름을 Trino 로 바꿨다. 첫 Trino 릴리스는 Trino 351(2021-01-03)이며 그 직전 버전이 PrestoSQL 350 이다.
이름 변경과 함께 패키지와 헤더가 모두 바뀌었다. 구버전에서 올릴 때 영향을 받는 지점이다.
| 항목 | 변경 전 | 변경 후 |
|---|---|---|
| 패키지 | io.prestosql |
io.trino |
| 설치 디렉터리 | presto |
trino |
| HTTP 헤더 | X-Presto-* |
X-Trino-* |
| 도커 이미지 | prestosql/presto |
trinodb/trino |
두 갈래는 이후 서로 다른 길을 걸었으므로 커넥터 지원 범위와 SQL 기능이 같지 않다. 문서를 볼 때 어느 쪽인지 먼저 확인한다.
| 항목 | Impala | Hive | Denodo | Teiid |
|---|---|---|---|---|
| 성격 | MPP SQL 엔진 | 배치 SQL 엔진 | 데이터 가상화 플랫폼 | 페더레이션 엔진 |
| 실행 | 분산 MPP | Tez · MapReduce · Spark | 페더레이션 | 페더레이션 |
| 지연 | 초 단위 | 분 단위 | 중간 | 중간 |
| 주 용도 | 대화형 분석 | 대용량 ETL | 가상화 · 시맨틱 계층 | 애플리케이션 임베디드 |
| 라이선스 | Apache | Apache | 상용 | 오픈소스(Red Hat 계열) |
MPP 엔진과 데이터 가상화 제품은 목적이 다르다. Trino 와 Impala 는 여러 노드가 데이터를 나눠 처리해 대용량 조인과 집계를 감당한다. Denodo 와 Teiid 는 소스로 쿼리를 밀어 넣고(pushdown) 결과를 엔진에서 합치는 구조라, 시맨틱 계층·카탈로그·거버넌스 기능은 강하지만 대용량 조인에서 엔진이 병목이 된다.
데이터 레이크 위에서 대용량 분석을 한다면 Trino 나 Impala 를 본다. 여러 시스템의 데이터를 논리 모델로 묶어 현업에 제공하는 것이 목적이고 거버넌스가 중요하다면 가상화 제품을 본다. 애플리케이션 안에 페더레이션 기능을 넣는 것이 목적이면 임베디드 가능한 엔진을 본다.
Teiid 는 Red Hat 의 데이터 가상화 제품(JBoss Data Virtualization, 이후 Red Hat Data Virtualization)의 엔진으로 쓰였다. 모델링 도구인 Teiid Designer 는 개발이 중단됐고 프로젝트 활동도 제한적이다. 현재 상태는 도입 전에 확인 필요하며, 신규 구축이라면 대안을 함께 검토한다.