예제 JDBC 커넥터
예제 JDBC 커넥터
예제 JDBC 커넥터는 ConnectorMetadata나 ConnectorRecordSetProvider 같은 다양한 Trino SPI 서비스를 직접 구현하지 않고, 기본 JdbcPlugin을 확장해 JDBC 드라이버로 소스에서 데이터를 읽는 방법을 보여줘요.
출처: 문서
본문
참고
이 커넥터는 예시일 뿐이에요. 아주 제한된 데이터 타입 집합만 지원하고, 프레디킷(predicate)이나 다른 종류의 푸시다운 같은 고급 기능은 지원하지 않아요.
코드 (Code)
예제 JDBC 커넥터는 Trino 소스 트리의 trino-example-jdbc 디렉터리에서 찾을 수 있어요.
플러그인 구현 (Plugin implementation)
예제 JDBC 커넥터의 플러그인 구현은 JdbcPlugin 클래스를 확장하고 ExampleClientModule을 사용해요.
이 모듈은:
- 기본 JDBC 커넥터가 사용할 수 있도록
ExampleClient클래스를 바인딩해요. - 설정 속성에 지정된 JDBC URL 기반으로 JDBC 드라이버로 새 연결을 만드는 연결 팩토리를 제공해요.
JdbcClient 구현 (JdbcClient implementation)
기본 JDBC 플러그인은 Trino SPI 호출을 JDBC API에 매핑해요. 테이블·컬럼 이름 읽기 같은 연산은 JDBC에서 잘 정의되어 있어, 기본 JDBC 플러그인은 대부분의 JDBC 드라이버에서 동작하는 방식으로 구현할 수 있어요.
기본적으로 구현되지 않는 동작 하나는 데이터를 읽고 쓸 때의 데이터 타입 매핑이에요. 예제 JDBC 커넥터는 BaseJdbcClient를 확장하고 두 메서드를 구현하는 ExampleClient 클래스에서 JdbcClient 인터페이스를 구현해요.
toColumnMapping
toColumnMapping은 커넥터에서 데이터를 읽을 때 사용돼요. ConnectorSession, Connection, JdbcTypeHandle이 주어지면 일치하는 데이터 타입이 있을 때 ColumnMapping을 반환해요.
컬럼 매핑은 다음을 포함해요.
- Trino 타입
- 데이터 소스에서 실행할 JDBC 문을 준비할 때 쿼리 파라미터 값을 설정하는 데 쓰는 쓰기 함수
- JDBC 문 결과 셋에서 값을 읽고 내부 Trino 표현(예: Slice)으로 반환하는 데 쓰는 읽기 함수
toWriteMapping
toWriteMapping은 커넥터에 데이터를 쓸 때 사용돼요. ConnectorSession과 Trino 타입이 주어지면 WriteMapping을 반환해요.
이 매핑은 다음을 포함해요.
- 데이터 타입 이름
- 쓰기 함수
더 알아보기 (Learn more)
JDBC 기반 커넥터가 많아요. 예제 JDBC 커넥터의 구조를 이해하면 PostgreSQL 커넥터나 MySQL 커넥터 같은 실제 커넥터도 쉽게 읽을 수 있어요.