콘텐츠로 이동
Exposed 문서1.11

Exposed Trino 어댑터

최신 안정판 Exposed 1.11.0 릴리스 기준

bluetape4k-exposed-trino는 Exposed JDBC DSL을 Trino coordinator에 연결하면서 catalog·schema·autocommit 경계를 드러냅니다.

Trino는 하나의 트랜잭션 DB가 아니라 여러 connector를 묶는 질의 엔진입니다. 이 모듈은 JDBC 방언과 연결 옵션을 등록하고 미지원 PK DDL을 제거하되, 클라이언트 블록을 원자적인 것처럼 꾸미지 않습니다.

여러 catalog에 Exposed로 만든 쿼리를 보낼 때 사용합니다. DML과 DDL 지원 여부는 coordinator가 아니라 대상 connector의 능력으로 판단해야 합니다.

dependencies {
implementation(platform("io.github.bluetape4k:bluetape4k-dependencies:<version>"))
implementation("io.github.bluetape4k.exposed:bluetape4k-exposed-trino")
}
  • TrinoDatabase.connect는 host/port/catalog/schema, JDBC URL, DataSource를 지원합니다.
  • TrinoConnectionWrapper는 autocommit을 유지하며 commit/rollback은 아무 일도 하지 않습니다.
  • TrinoTable은 PK와 명시적인 nullable DDL을 지우되 NOT NULL은 보존합니다.
  • TrinoConnectionOptions가 드라이버 속성을 담당합니다.
val db = TrinoDatabase.connect(
host = "localhost", port = 8080,
catalog = "memory", schema = "default", user = "analyst",
)
transaction(db) { Events.selectAll().limit(100).toList() }
작업API
coordinator 연결TrinoDatabase.connect
풀 연결TrinoDatabase.connect(dataSource)
단순 호환 DDLTrinoTable 상속
Coroutine에서 실행suspendTransaction
Flow 소비queryFlow

catalog의 predicate pushdown을 기준으로 쿼리를 설계하고 Trino 실행 계획을 확인하세요. 여러 DML은 하나씩 독립적으로 처리합니다. 큰 결과는 SQL에서 페이지로 나누세요. Flow 어댑터도 결과를 먼저 목록으로 만듭니다.

Trino JDBC 드라이버를 포함합니다. 1.11 테스트는 Testcontainers Trino의 memory connector에서 DDL 정제, 조회, 삽입, 입력 검증, DataSource, 트랜잭션 비원자성을 확인합니다.

URL은 jdbc:trino://host:port/catalog/schema 형식입니다. 인증, SSL, role, session property는 coordinator 정책을 확인한 뒤 TrinoConnectionOptions에 넣습니다. 운영 pool의 수명은 애플리케이션이 소유합니다.

  • transaction {}은 호출 호환 경계일 뿐 원자적 작업 단위가 아닙니다.
  • PK·UK·FK와 DDL 지원은 connector마다 다릅니다.
  • pushdown이 되지 않으면 예상보다 많은 원격 데이터를 읽을 수 있습니다.
  • Flow materialization이 큰 heap을 사용할 수 있습니다.

대기·실행 시간, 스캔 byte, 원격 읽기량, 재시도, coordinator 오류를 관찰하세요. 쿼리 제한과 resource group은 어댑터 밖에서 설정하고 취소 정책도 Trino query 수준까지 연결합니다.

컨테이너로 어댑터 동작을 검증한 다음 운영 catalog별 통합 테스트를 따로 두세요. memory connector 결과만 보고 BigQuery·Hive·Iceberg의 동작을 추정하면 안 됩니다.

데이터베이스 어댑터 표OLTP와 OLAP 가이드를 읽으세요. 운영 connector에서 대표 쿼리 하나와 미지원 쓰기 하나를 먼저 확인합니다.

1.11은 트랜잭션 원자성, 모든 connector에 통하는 DDL, 진짜 행 단위 Flow 스트리밍을 제공하지 않습니다. TrinoUnsupported 어노테이션도 connector 능력을 컴파일 시점에 찾아주지는 않습니다.

아래 그림은 1.11.0 배포본의 README 자산을 해당 배포 커밋에서 직접 불러옵니다. 이후 SNAPSHOT이 아니라 이 매뉴얼 버전의 구조와 실행 흐름을 보여 줍니다. 미리보기를 누르면 같은 배포 커밋의 SVG 원본이 열립니다.

Trino JDBC compatibility boundary 다이어그램

섹션 제목: “Trino JDBC compatibility boundary 다이어그램”

Trino JDBC compatibility boundary 다이어그램

배포본 README: exposed/trino/README.ko.md

Trino 흐름 materialization contract 다이어그램

섹션 제목: “Trino 흐름 materialization contract 다이어그램”

Trino 흐름 materialization contract 다이어그램

배포본 README: exposed/trino/README.ko.md