Blog
trinobisupersettableaujdbcdata-platform

Trino + BI 도구 연동 — Superset, Tableau, 그리고 JDBC/Python 클라이언트

Trino 를 BI 도구·애플리케이션과 연결하는 실전 가이드. JDBC/ODBC 드라이버와 연결 URL, Superset·Tableau 연동, Python(trino, SQLAlchemy) 클라이언트, 인증(LDAP/OAuth2) 연결, 그리고 대시보드 폭주로부터 클러스터를 보호하는 운영 패턴까지.

Data Dynamics2026년 6월 5일13 min read

멋지게 튜닝된 Trino 클러스터를 막 띄웠다고 상상해 봅시다. 그런데 정작 팀원들이 대시보드를 열었더니 "느리다", "끊긴다", "로그인이 안 된다"는 메시지가 쏟아집니다. 문제는 Trino 가 아니라 클라이언트 연결 설정이었던 거죠. 연결·인증·운영 패턴만 제대로 잡으면, Trino 는 Superset·Tableau 같은 도구의 강력한 백엔드가 됩니다.

이 글은 Trino 를 BI 도구·클라이언트와 연결하는 실전 방법을 여러분과 함께 정리합니다 — JDBC/ODBC 드라이버, Superset·Tableau 연동, Python 클라이언트, 인증 연결, 그리고 대시보드 트래픽으로부터 클러스터를 지키는 운영 패턴까지.

이 글에서 배우는 것

  • JDBC/ODBC URL 을 올바르게 구성하는 법과 source/clientTags 의 역할
  • Superset 과 Tableau 를 Trino 에 연결하는 단계별 설정
  • Python trino 패키지와 SQLAlchemy 로 데이터를 가져오는 방법
  • LDAP·OAuth2·Kerberos 인증을 클라이언트에서 설정하는 패턴
  • 대시보드 트래픽 폭증으로부터 클러스터를 지키는 Resource Group 격리 전략

1. 연결의 기본 — 드라이버와 URL

어떤 클라이언트를 쓰든, Trino 와의 대화는 코디네이터의 HTTP(S) 엔드포인트 한 곳에서 시작됩니다.

클라이언트연결 방식
BI 도구(Superset, Tableau, DBeaver 등)JDBC 또는 ODBC 드라이버
애플리케이션Python/Go/Node 클라이언트, JDBC
CLItrino CLI

JDBC URL 구조

jdbc:trino://<host>:<port>/<catalog>/<schema>?<속성>
# 평문 (PoC)
jdbc:trino://trino:8080/iceberg/analytics
 
# TLS + LDAP 인증 (프로덕션)
jdbc:trino://trino:8443/iceberg/analytics?SSL=true&user=alice&password=...
속성의미
SSL=trueHTTPS 연결
user / passwordLDAP/파일 비밀번호 인증
SSLTrustStorePath사내 CA 인증서 신뢰
source클라이언트 식별(중요 — 아래 6장)
clientTagsResource Group 셀렉터용 태그

핵심 팁: sourceclientTags 를 반드시 설정하세요. Resource Group 셀렉터가 이 값으로 쿼리를 분류하므로, "대시보드 트래픽을 dashboard 그룹에 격리"하는 운영이 여기서 시작됩니다. (Resource Group 은 별도 글 "Trino 메모리 관리와 Resource Groups"에서 다뤘습니다.)

2. Apache Superset 연동

Superset 은 SQLAlchemy 기반이라, Trino 방언(sqlalchemy-trino/trino 패키지)만 설치하면 바로 연결할 수 있어요.

한 문장으로: Superset 에서 URI 한 줄을 입력하면 Trino 카탈로그 전체가 자동 탐색됩니다.

연결 문자열(SQLAlchemy URI)

# 기본
trino://alice@trino:8080/iceberg
 
# TLS + 비밀번호 인증
trino://alice:password@trino:8443/iceberg?protocol=https

설정 흐름:

  1. Superset 의 Database Connections 에서 위 URI 입력.
  2. iceberg 처럼 카탈로그를 기본 DB 로 지정하면, 스키마/테이블이 자동 탐색됩니다.
  3. 여러 카탈로그를 쓰려면 DB 커넥션을 카탈로그별로 추가하거나, 쿼리에서 카탈로그.스키마.테이블 로 명시합니다.

Superset 운영 팁

  • 결과 캐시: Superset 자체 캐시(Redis 등)를 켜면 동일 차트 재조회 시 Trino 를 안 때립니다. Trino 에 결과 캐시가 없으므로(별도 글 "Trino 캐싱 전략" 참고), BI 도구 캐시가 사실상의 결과 캐시 역할을 합니다.
  • Async 쿼리: Celery 워커로 비동기 실행을 구성하면 긴 쿼리가 웹 워커를 묶지 않습니다.
  • Row limit: 차트의 기본 행 제한을 합리적으로 둬서 실수성 대용량 fetch 를 막습니다.

3. Tableau 연동

Tableau 는 Starburst/Trino 커넥터 또는 JDBC/ODBC 로 연결하는데, 사용자 규모에 따라 Live 와 Extract 중 어느 쪽을 택할지가 핵심입니다.

  • Live vs Extract: Live 연결은 매 조작마다 Trino 를 때립니다. 대시보드 사용자가 많으면 부하가 큽니다. Extract(추출) 로 주기적 스냅샷을 Tableau 서버에 두면 Trino 부하가 크게 줄어듭니다.
  • 인증: TLS + LDAP/OAuth2 를 드라이버 옵션으로 설정. SSO 환경이면 OAuth2 연결을 구성합니다.
  • 사용자 정보 전달: 연결 시 source/clientTags 를 지정해 Tableau 트래픽을 식별·격리합니다.
모드Trino 부하신선도적합
Live높음(매 조작)실시간소수 사용자·실시간 필요
Extract낮음(주기 추출)추출 시점다수 사용자·대시보드

일반 원칙: 사용자가 많은 운영 대시보드는 사전 집계 테이블 + Extract 조합이, 소수 분석가의 탐색적 분석은 Live 가 적합합니다.

4. Python 클라이언트

애플리케이션이나 데이터 파이프라인에서 Trino 를 직접 다루고 싶다면, 공식 trino 파이썬 패키지를 쓰면 됩니다.

import trino
 
conn = trino.dbapi.connect(
    host="trino",
    port=8443,
    user="alice",
    catalog="iceberg",
    schema="analytics",
    http_scheme="https",
    auth=trino.auth.BasicAuthentication("alice", "password"),  # LDAP
    source="etl-pipeline",                 # Resource Group 식별
    client_tags=["batch"],
)
 
cur = conn.cursor()
cur.execute("""
    SELECT event_type, count(*) AS cnt
    FROM events
    WHERE event_time >= TIMESTAMP '2026-06-01 00:00:00 UTC'
    GROUP BY event_type
""")
for row in cur.fetchall():
    print(row)

SQLAlchemy / pandas

from sqlalchemy import create_engine
import pandas as pd
 
engine = create_engine("trino://alice@trino:8443/iceberg?protocol=https")
df = pd.read_sql("SELECT * FROM analytics.daily_active_users", engine)

주의: pd.read_sql("SELECT * FROM huge_table") 처럼 거대 결과를 통째로 메모리에 올리지 마세요. WHERE·LIMIT 으로 줄이거나, 서버사이드 집계 후 작은 결과만 가져오는 것이 원칙입니다.

5. 인증 연결 정리

클러스터가 어떤 인증 방식을 쓰는지에 따라 클라이언트 설정도 달라집니다. 아래 표에서 여러분의 환경에 해당하는 행을 찾아보세요. (별도 글 "Trino 보안 완전 가이드" 도 함께 참고하면 좋습니다.)

한 문장으로: 인증 방식이 무엇이든 TLS 가 전제 조건이므로, 클라이언트에 SSL=true 와 트러스트스토어를 먼저 설정하세요.

클러스터 인증JDBCPython
LDAP/파일 (PASSWORD)user+password, SSL=trueBasicAuthentication
OAuth2 / OIDC브라우저 또는 외부 토큰OAuth2Authentication
KerberosKerberosPrincipalKerberosAuthentication
mTLS(인증서)클라이언트 키스토어인증서 옵션

거의 모든 인증이 TLS 를 전제로 하므로(평문 비밀번호 금지), 클라이언트에서 SSL=true/http_scheme=https 와 트러스트스토어(사내 CA)를 함께 설정해야 합니다.

6. 대시보드 트래픽으로부터 클러스터 보호하기

BI 연동에서 가장 흔하게 만나는 사고는 대시보드 자동 새로고침·동시 사용자 폭증이 클러스터를 마비시키는 것입니다. 미리 방어책을 마련해 두면 걱정 없거든요.

6.1 source/clientTags 로 격리

Loading diagram…

대시보드 그룹에 동시성·메모리·큐 한도를 두면, 대시보드가 아무리 몰려도 배치·임시분석 자원을 침범하지 못합니다.

6.2 BI 도구 캐시 + 사전 집계

  • Superset/Tableau 의 캐시를 켜서 동일 조회 반복을 흡수.
  • 무거운 집계는 Materialized View 나 일배치 요약 테이블로 미리 계산해, 대시보드는 작은 테이블만 조회. (별도 글 "Trino 캐싱 전략" 참고.)

6.3 가드레일

  • 클러스터: query.max-scan-physical-bytes 로 실수성 대용량 스캔 차단.
  • BI 도구: 차트 row limit, 쿼리 timeout 설정.

7. 연동 체크리스트

  • 프로덕션은 TLS(SSL=true/https) + 사내 CA 트러스트스토어
  • 인증 방식에 맞는 클라이언트 설정(LDAP/OAuth2/Kerberos)
  • 모든 클라이언트에 source/clientTags 지정
  • source 기반 Resource Group 셀렉터로 dashboard/batch/adhoc 격리
  • BI 도구 결과 캐시 활성화
  • 무거운 집계는 사전 집계 테이블/Materialized View
  • Tableau 다수 사용자는 Extract 모드 검토
  • 차트 row limit·timeout, 클러스터 스캔 가드레일

8. 정리

대상연결운영 포인트
SupersetSQLAlchemy trino://자체 캐시 + async + source 태그
TableauTrino 커넥터/JDBCExtract vs Live, source 식별
Python 앱trino dbapi / SQLAlchemy대용량 fetch 금지, source 지정
모든 클라이언트JDBC/ODBC + TLS인증·트러스트스토어·clientTags

Trino 와 BI 도구 연동의 핵심은 두 가지입니다. 첫째, TLS + 인증을 클라이언트까지 일관되게 설정하는 것. 둘째, source/clientTags 로 트래픽을 식별해 Resource Group 으로 격리하고, BI 캐시·사전 집계로 클러스터 부하를 흡수하는 것. 이 운영 패턴이 갖춰지면, 대시보드 사용자가 늘어도 분석·배치 워크로드를 안정적으로 지키면서 Trino 를 전사 BI 백엔드로 확장할 수 있습니다.

마치며 — 핵심 요약

  • JDBC/SQLAlchemy URISSL=true·source·clientTags 세 가지를 반드시 넣어두세요. 이 값이 Resource Group 격리의 시작점입니다.
  • Superset 은 SQLAlchemy URI 한 줄로 카탈로그 전체가 연결되고, Redis 캐시와 Async 쿼리를 함께 켜면 Trino 부하가 크게 줄어듭니다.
  • Tableau 는 사용자가 많은 운영 대시보드라면 Extract 모드를 우선 검토하세요. Live 는 소수 분석가의 탐색적 작업에 남겨두는 것이 좋습니다.
  • Python 코드 에서는 pd.read_sql("SELECT * FROM huge_table") 처럼 거대 결과를 통째로 끌어오지 말고, 서버사이드 집계 후 작은 결과만 가져오는 습관을 들이세요.
  • 인증 은 방식에 상관없이 TLS 가 전제이므로, 클라이언트에 트러스트스토어를 빠트리지 마세요.
  • 사전 집계 테이블 + BI 캐시 조합이 갖춰지면, 대시보드 사용자가 몇 배로 늘어도 배치·임시분석 자원을 안전하게 지킬 수 있습니다.

연결 설정 하나하나가 사소해 보여도, 이 체크리스트를 한 번 꼼꼼히 밟아두면 앞으로의 운영이 훨씬 편해질 거예요.


이 글은 Trino 440번대 기준으로 작성되었습니다. BI 도구 연동이나 대시보드 백엔드 아키텍처 설계가 필요하시면 언제든 문의해 주세요.

— Data Dynamics 엔지니어링 팀