Trino 커넥터 — 다양한 데이터소스를 연결하는 다리
Trino 커넥터 — 다양한 데이터소스를 연결하는 다리
커넥터(connector)는 Trino가 데이터를 읽어오는 원천 시스템에 다리를 놓는 조각이에요. Trino는 저장소가 없는 순수 쿼리 엔진이라서, 어떤 데이터이든 커넥터가 있어야 질의할 수 있어요. 이 장(章)에서는 Trino가 기본 제공하는 커넥터들을 카탈로그 설정과 함께 소개해 드릴게요.
본문
Trino에는 데이터레이크, 관계형 DB, NoSQL, 검색·로깅, 스트리밍, 유틸리티까지 폭넓은 커넥터가 기본 포함되어 있어요. 커넥터는 **카탈로그 프로퍼티 파일(catalog properties file)**에서 커넥터별 속성을 설정해 카탈로그에 연결해서 사용해요.
주요 커넥터 그룹
- 데이터레이크·레이크하우스: Delta Lake, Hive, Hudi, Iceberg, Lakehouse
- 관계형 DBMS: MySQL, PostgreSQL, Oracle, SQL Server, Redshift, SingleStore, Snowflake, BigQuery, ClickHouse, DuckDB, MariaDB, Exasol, Vertica, TPC-DS/TPC-H
- NoSQL·인메모리: Cassandra, MongoDB, Redis, Ignite, Druid
- 검색·로깅: Elasticsearch, OpenSearch, Loki, Pinot, Prometheus
- 스트리밍: Kafka
- 유틸리티·개발: Black Hole, Faker, Google Sheets, JMX, Memory, System, Thrift
카탈로그로 연결하기
각 데이터소스에 접근하려면 커넥터별 속성을 담은 카탈로그 프로퍼티 파일을 만들면 돼요. 예를 들어 PostgreSQL을 연결하려면 etc/catalog/postgresql.properties 파일을 이렇게 작성해요.
connector.name=postgresql
connection-url=jdbc:postgresql://example.net:5432/database
connection-user=root
connection-password=secret
파일 이름이 곧 카탈로그 이름이 되므로, 위 예시는 postgresql 카탈로그를 만들고 이후 SQL에서 postgresql.schema.table 형태로 접근할 수 있게 돼요.
SELECT * FROM postgresql.public.orders LIMIT 100;
커넥터가 하는 일
커넥터는 크게 세 가지 인터페이스를 구현해요.
- ConnectorMetadata: 스키마·테이블 탐색(메타데이터)
- ConnectorSplitManager: 작업을 병렬 조각(split)으로 분할
- ConnectorPageSource: 컬럼 지향 데이터 페이지(페이지)를 읽음
이 구조 덕분에 Trino는 데이터가 어디 있든(객체 스토리지, Hive 메타스토어, Iceberg 테이블, RDBMS, Kafka 토픽) 동일한 SQL로 연합(federation) 질의할 수 있어요.
장애나 성능 특성은 원천 시스템마다 달라서, 각 커넥터 문서에 타입 매핑과 제약이 상세히 정리돼 있어요. 커넥터를 고를 때는 원천 시스템의 특성 + Trino 타입 매핑 + 푸시다운 지원 여부를 함께 확인해야 해요.
더 알아보기
- 카탈로그·스키마·테이블 개념 → Trino 개념
- 커넥터 직접 만들기 → 개발자 가이드
- 데이터레이크 연결 → Trino 객체 스토리지 문서