예제 JDBC 커넥터

예제 JDBC 커넥터

예제 JDBC 커넥터는 ConnectorMetadataConnectorRecordSetProvider 같은 다양한 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 커넥터 같은 실제 커넥터도 쉽게 읽을 수 있어요.