Trino 개발자 가이드 — 커넥터와 기능 확장하기
Trino 개발자 가이드 — 커넥터와 기능 확장하기
Trino를 그대로 쓰는 것을 넘어, 직접 기능을 확장하고 싶다면 개발자 가이드가 출발점이에요. 이 가이드는 Trino 기여자(contributor)와 플러그인 개발자를 위한 문서로, SPI(서비스 제공자 인터페이스)를 어떻게 구현하는지 설명해요. 커넥터를 새로 만들거나, 타입·함수·인증·이벤트 리스너를 추가하는 방법이 모두 여기 담겨 있어요.
본문
Trino는 플러그인 아키텍처로 동작해요. 표준화된 SPI를 구현하는 플러그인을 만들어 Trino에 탑재하면, 커널 코드를 건드리지 않고도 기능을 확장할 수 있어요. 프로세스·코드 스타일·리뷰 등 개발 절차는 Trino 웹사이트의 개발 섹션과 GitHub 소스의 DEVELOPMENT.md에 정리돼 있어요.
SPI 개요
개발자 가이드의 첫머리에는 SPI(Service Provider Interface) 개요가 있어요. 커넥터가 구현해야 할 핵심 인터페이스인 Connector를 중심으로, Trino 코어와 커넥터가 어떻게 상호작용하는지 이해하는 것이 확장 개발의 기본이에요.
커넥터 개발
새 데이터소스를 Trino에 연결하려면 커넥터를 구현해요.
- HTTP 커넥터 예제: HTTP API를 호출하는 간단한 커넥터를 처음부터 구현
- JDBC 커넥터 예제: JDBC 기반 데이터소스에 연결하는 커넥터 구현
- INSERT / CREATE TABLE AS 지원: 데이터 쓰기 작업을 지원하도록 확장
- MERGE 지원: 업서트(upsert) 형태의 변경 작업을 지원하도록 확장
트러블슈팅과 실수를 줄이려면 테스트 작성 가이드라인을 함께 읽는 걸 권장해요. Trino 프로젝트는 플러그인별 테스트 정책이 엄격해서, 예제 커넥터의 테스트 패턴을 그대로 따라가는 게 안전해요.
타입·함수·기타 확장 포인트
- 타입(Types): 새로운 SQL 타입을 추가하는 방법
- 함수(Functions): 스칼라 함수·집계 함수 등 새 함수 정의
- 테이블 함수(Table functions): 테이블 반환 함수 지원
- 시스템 접근 제어(System access control): 권한·접근 정책 커스터마이징
- 패스워드·인증서·헤더 인증자(Authenticator): 인증 방식 확장
- 그룹 공급자(Group provider): 그룹 멤버십 해석 확장
- 이벤트 리스너(Event listener): 쿼리 이벤트를 외부 시스템에 전달
- Trino 클라이언트 REST API: 클라이언트가 쓰는 REST 프로토콜
직접 커넥터를 만드는 일은 드물지만, 어떤 SPI가 커넥터·타입·함수를 제공하는지 파악해 두면 Trino 내부 동작을 이해하는 데 큰 도움이 돼요. 특히 쿼리 실행 모델에서 커넥터가 split과 페이지를 어떻게 제공하는지가 연결돼 있답니다.