DataLakeCatalog 데이터베이스 엔진

DataLakeCatalog 데이터베이스 엔진

ClickHouse를 외부 데이터 카탈로그에 연결하고, 데이터 중복 없이 오픈 테이블 형식 데이터를 조회할 수 있게 해주는 데이터베이스 엔진이에요. ClickHouse를 기존 데이터 레이크 인프라와 매끄럽게 동작하는 강력한 쿼리 엔진으로 만들어줘요.

출처: 문서

본문

DataLakeCatalog 데이터베이스 엔진은 ClickHouse를 외부 데이터 카탈로그에 연결하고, 데이터 중복 없이 오픈 테이블 형식 데이터를 조회할 수 있게 해줘요. 이것은 ClickHouse를 기존 데이터 레이크 인프라와 매끄럽게 동작하는 강력한 쿼리 엔진으로 바꿔줘요.

지원되는 카탈로그 (Supported catalogs)

DataLakeCatalog 엔진은 다음 데이터 카탈로그를 지원해요.

  • AWS Glue Catalog — AWS 환경의 Iceberg 테이블용
  • Databricks Unity Catalog — Delta Lake와 Iceberg 테이블용
  • Hive Metastore — 전통적인 Hadoop 생태계 카탈로그
  • REST Catalogs — Iceberg REST 명세를 지원하는 모든 카탈로그

데이터베이스 만들기 (Creating a database)

DataLakeCatalog 엔진을 사용하려면 아래 관련 설정을 켜야 해요.

SET allow_database_iceberg = 1;
SET allow_database_unity_catalog = 1;
SET allow_database_glue_catalog = 1;
SET allow_experimental_database_hms_catalog = 1;
SET allow_experimental_database_paimon_rest_catalog = 1;

DataLakeCatalog 엔진을 가진 데이터베이스는 다음 문법으로 만들 수 있어요.

CREATE DATABASE database_name
ENGINE = DataLakeCatalog(catalog_endpoint[, user, password])
SETTINGS
catalog_type,
[...]

지원되는 설정은 다음과 같아요.

설정 설명
catalog_type 카탈로그 유형: glue, unity(Delta), rest(Iceberg), hive, onelake(Iceberg), delta_sharing(Iceberg, 평면 네임스페이스), horizon(Snowflake Horizon Iceberg REST)
warehouse 카탈로그에서 사용할 warehouse/데이터베이스 이름.
catalog_credential 카탈로그 인증 자격 증명(예: API 키 또는 토큰)
auth_header 카탈로그 서비스 인증을 위한 커스텀 HTTP 헤더
auth_scope 인증용 OAuth2 scope(OAuth 사용 시)
storage_endpoint 하부 스토리지의 엔드포인트 URL
oauth_server_uri 인증용 OAuth2 인가 서버의 URI
vended_credentials 카탈로그에서 vendored credentials를 사용할지 여부를 나타내는 부울(AWS S3와 Azure ADLS Gen2 지원)
aws_access_key_id S3/Glue 접근용 AWS 액세스 키 ID(vended credentials를 사용하지 않을 때)
aws_secret_access_key S3/Glue 접근용 AWS 시크릿 액세스 키(vended credentials를 사용하지 않을 때)
aws_role_arn AWS/Glue 접근을 위해 가정할 IAM 역할의 ARN. 설정되면 ClickHouse는 aws_access_key_idaws_secret_access_key가 모두 제공될 때 기본 자격 증명으로, 그렇지 않으면 기본 AWS 자격 증명 체인으로 AWS STS AssumeRole을 사용해요(역할은 서버가 실행되는 신원을 신뢰해야 해요).
aws_role_session_name AWS STS AssumeRole 호출에 사용되는 세션 이름. 선택 사항. 기본값은 ClickHouseSession이에요.
aws_external_id 역할의 신뢰 정책의 sts:ExternalId 조건과 일치하는 AWS STS AssumeRole에 전달되는 외부 ID. 역할을 ClickHouse Cloud 같은 제3자가 소유할 때 사용해요.
region 서비스의 AWS 리전(예: us-east-1)
dlf_access_key_id DLF 접근용 액세스 키 ID
dlf_access_key_secret DLF 접근용 액세스 키 시크릿
force_add_bucket 카탈로그 제공 테이블 위치와 storage_endpoint에서 객체 스토리지 URL을 만들 때, 엔드포인트가 이미 포함하고 있더라도 버킷/컨테이너 이름을 앞에 붙여요. 기본값: false. 버킷 없이 경로를 돌려주고 URL 구성 단계에서 버킷 추가가 필요한 카탈로그(Polaris 스타일 경로)에 대해 true로 설정해요.

예시 (Examples)

DataLakeCatalog 엔진 사용 예시는 아래 섹션을 참고해요.

CREATE DATABASE database_name
ENGINE = DataLakeCatalog(catalog_endpoint)
SETTINGS
    catalog_type = 'onelake',
    warehouse = warehouse,
    onelake_tenant_id = tenant_id,
    oauth_server_uri = server_uri,
    auth_scope = auth_scope,
    onelake_client_id = client_id,
    onelake_client_secret = client_secret;
SHOW TABLES IN database_name;
SELECT count() from database_name.table_name;

클라이언트 시크릿을 공유하지 않고 인증하려면 onelake_client_id/onelake_client_secret 대신 미리 얻은 bearer 토큰인 onelake_bearer_token(https://storage.azure.com으로 범위가 지정됨)을 설정해요. ClickHouse는 토큰을 갱신하지 않으므로, 토큰이 만료된 후 데이터베이스를 다시 만들어야 해요.

더 알아보기 (Learn more)