이 문서는 레이크하우스 아키텍처 섹션의 일부입니다.
왜 UniForm이 필요한가요?
현대 데이터 생태계에서는 하나의 플랫폼만 사용하는 경우가 드뭅니다. Databricks에서 데이터를 관리하면서, Snowflake에서 분석하고, Trino로 애드혹 쿼리를 실행하고, Apache Flink로 실시간 처리를 하는 멀티 엔진 환경 이 일반적입니다. 문제는 각 엔진이 서로 다른 테이블 포맷을 사용한다는 것입니다. Databricks는 Delta Lake, Snowflake와 Trino는 주로 Apache Iceberg를 지원합니다. 동일한 데이터를 여러 포맷으로 복사하면 데이터 일관성 유지, 스토리지 비용, 파이프라인 복잡도 문제가 발생합니다.💡 UniForm(Universal Format) 은 하나의 Delta Lake 테이블에 Iceberg 호환 메타데이터를 자동 생성 하여, 데이터 복사 없이 여러 엔진에서 동일한 데이터를 읽을 수 있게 하는 기능입니다.
핵심 개념
UniForm의 핵심은 데이터 파일은 하나, 메타데이터만 두 가지 라는 점입니다. Delta 테이블 디렉토리 구조 (UniForm 활성화 시):- Databricks/Spark 는
_delta_log/를 읽어 Delta 프로토콜로 데이터에 접근합니다 - Snowflake/Trino/Flink 는
metadata/를 읽어 Iceberg 프로토콜로 동일한 데이터에 접근합니다 - Parquet 파일은 공유 되므로 데이터 복사가 발생하지 않습니다
활성화 방법
새 테이블 생성 시
기존 테이블에 활성화
비활성화
활성화 시 자동 설정
UniForm을 활성화하면 다음 속성이 자동으로 함께 설정 됩니다.Iceberg REST Catalog (IRC)
외부 엔진이 UniForm이 활성화된 테이블을 읽으려면, 테이블의 위치(메타데이터 경로) 를 알아야 합니다. Unity Catalog는 Iceberg REST Catalog 표준을 지원하여, 외부 엔진이 HTTP API를 통해 테이블 목록을 조회하고 메타데이터 위치를 확인할 수 있습니다.연결 정보
외부 엔진에서 Unity Catalog의 Iceberg REST Catalog에 연결하려면 다음 정보가 필요합니다.설정 예시
외부 엔진에서 읽기
Snowflake에서 읽기
Trino에서 읽기
Apache Spark (외부)에서 읽기
UniForm 사용 시 고려사항
언제 UniForm을 사용해야 하나요?
💡 핵심 메시지: “하나의 데이터, 여러 엔진에서 조회”가 필요하다면 UniForm을 활성화하세요. 데이터 복사 없이 멀티 엔진 호환성을 확보할 수 있습니다.
심화: UniForm 구성 가이드
Step-by-Step: UniForm 활성화 및 외부 엔진 연결
Step 1: UniForm 활성화
⚠️ Column Mapping 필수: UniForm을 활성화하려면 delta.columnMapping.mode = 'name'이 설정되어야 합니다. 최신 테이블은 기본값이지만, 레거시 테이블은 수동 활성화가 필요합니다.
Step 2: Iceberg REST Catalog (IRC) 연결 설정
Unity Catalog가 표준 Iceberg REST Catalog API 를 노출하므로, 외부 엔진은 이 엔드포인트에 연결하면 됩니다.Step 3: 외부 엔진에서 읽기
Snowflake에서 읽기 (Iceberg Catalog Integration)Credential Vending (자격 증명 발급)
외부 엔진이 실제 Parquet 파일을 읽으려면 클라우드 스토리지 접근 권한 이 필요합니다. Unity Catalog의 Credential Vending 은 이 문제를 해결합니다.💡 Credential Vending의 장점: 외부 엔진에 영구 Storage Credential을 부여하지 않아도 됩니다. Unity Catalog가 요청마다 최소 권한의 임시 토큰 을 발급하므로 보안이 강화됩니다.
UniForm 운영 시 주의사항
Managed Iceberg Tables (Iceberg 네이티브 쓰기)
UniForm과 별도로, Databricks는 Iceberg 형식으로 직접 쓰는 Managed Iceberg Tables 도 지원합니다.💡 선택 가이드: 대부분의 경우 UniForm(Delta + Iceberg 읽기) 을 권장합니다. Delta Lake의 모든 고급 기능(Liquid Clustering, Deletion Vectors, Predictive Optimization 등)을 활용하면서 외부 호환성도 확보합니다. 외부 엔진에서 쓰기가 필수인 경우에만 Managed Iceberg를 사용합니다.