이 페이지에서는 ClickHouse의 데이터 레이크 통합에 대한 종합적인 지원 매트릭스를 제공합니다. 각 오픈 테이블 포맷에서 사용할 수 있는 기능, ClickHouse가 연결할 수 있는 카탈로그, 그리고 각 카탈로그에서 지원되는 기능을 다룹니다.
지원 여부는 ClickHouse Cloud와 자가 관리형 ClickHouse에 대해 별도로 표시됩니다. 실험적 기능은 ClickHouse Cloud에서 기본적으로 비활성화되어 있으며 Support를 통해 요청해야 합니다. 사용 가능 여부는 기능에 따라 다르므로, 특정 실험적 기능을 활성화할 수 있는지 확인하려면 Support에 문의하십시오. 배포별 구성 및 제한 사항은 참고 컬럼에 설명되어 있습니다.
오픈 테이블 포맷 지원
ClickHouse는 Apache Iceberg, Delta Lake, Apache Hudi, Apache Paimon 등 4가지 오픈 테이블 포맷을 지원합니다. 아래에서 포맷을 선택하면 해당 지원 매트릭스를 확인할 수 있습니다.
범례: ✅ 지원 | ⚠️ 부분 지원, Experimental 또는 Deprecated | ❌ 미지원
| 기능 | ClickHouse Cloud | 자가 관리형 | 참고 |
|---|---|---|---|
| 스토리지 백엔드 | |||
| AWS S3 | ✅ | ✅ | icebergS3() 또는 iceberg() 별칭을 통해 |
| GCS | ✅ | ✅ | icebergS3() 또는 iceberg() 별칭을 통해 |
| Azure Blob Storage | ✅ | ✅ | icebergAzure()를 통해 |
| HDFS | ❌ | ⚠️ 지원 중단됨 | icebergHDFS()를 통해 |
| 로컬 파일 시스템 | ❌ | ✅ | icebergLocal()를 통해 |
| 액세스 방법 | |||
| 테이블 함수 | ✅ | ✅ | 백엔드별 변형이 제공되는 icebergS3() |
| 테이블 엔진 | ✅ | ✅ | 백엔드별 변형이 제공되는 IcebergS3 |
| 클러스터 분산 읽기 | ✅ | ✅ | icebergS3Cluster, icebergAzureCluster, icebergHDFSCluster |
| 이름이 지정된 컬렉션 | ⚠️ | ✅ | DDL로 생성한 이름이 지정된 컬렉션은 일부 ClickHouse Cloud 서비스에서 활성화할 수 있습니다. 사용 가능 여부는 Support에 문의하십시오. |
| 읽기 기능 | |||
| 읽기 지원 | ✅ | ✅ | 모든 ClickHouse SQL 함수를 사용한 완전한 SELECT 지원 |
| 파티션 프루닝 | ✅ | ✅ | 파티션 프루닝을 참조하십시오. |
| 숨겨진 파티셔닝 | ✅ | ✅ | Iceberg 변환 기반 파티셔닝 지원 |
| 파티션 진화 | ✅ | ✅ | 시간 경과에 따라 파티션 사양이 변경되는 테이블 읽기 지원 |
| 스키마 진화 | ✅ | ✅ | 컬럼 추가, 제거 및 순서 변경을 지원합니다. 스키마 진화를 참조하십시오. |
| 형식 승격 / 확장 | ✅ | ✅ | P' > P인 경우 int → long, float → double, decimal(P,S) → decimal(P',S)를 지원합니다. 스키마 진화를 참조하십시오. |
| 시간 이동 / 스냅샷 | ✅ | ✅ | iceberg_timestamp_ms 또는 iceberg_snapshot_id 설정을 통해 지원됩니다. 시간 이동을 참조하십시오. |
| 위치 삭제 | ✅ | ✅ | 삭제된 행 처리를 참조하십시오. |
| 동등성 삭제 | ✅ | ✅ | v25.8+부터 테이블 함수 및 테이블 엔진에서 지원됩니다. 삭제된 행 처리를 참조하십시오. |
| 읽기 시 병합 | ⚠️ | ⚠️ | 실험적 기능입니다. 삭제 작업을 지원합니다. |
| 형식 버전 | ⚠️ 부분 지원 | ⚠️ 부분 지원 | v1 및 v2를 지원합니다. V3는 부분적으로 지원하며, 삭제 벡터와 매니페스트 압축은 지원되지 않습니다. |
| 컬럼 통계 | ✅ | ✅ | |
| 블룸 필터 / Puffin 파일 | ❌ | ❌ | Puffin 파일의 블룸 필터 인덱스는 지원되지 않습니다. |
| 가상 컬럼 | ✅ | ✅ | _path, _file, _size, _time, _etag. 가상 컬럼을 참조하십시오. |
| 쓰기 기능 | |||
| 테이블 생성 | ⚠️ | ⚠️ | 실험적 기능입니다. allow_insert_into_iceberg = 1이 필요합니다. v25.7+부터 지원됩니다. 테이블 생성을 참조하십시오. |
INSERT |
✅ 베타 | ✅ 베타 | 26.2부터 베타로 제공됩니다. allow_insert_into_iceberg = 1이 필요합니다. 데이터 삽입을 참조하십시오. |
DELETE |
⚠️ | ⚠️ | Experimental. allow_insert_into_iceberg = 1이 필요합니다. ALTER TABLE ... DELETE WHERE를 통해 수행합니다. 데이터 삭제를 참조하십시오. |
ALTER TABLE (스키마 변경) |
⚠️ | ⚠️ | Experimental. allow_insert_into_iceberg = 1이 필요합니다. 컬럼 추가, 삭제, 수정 및 이름 변경을 지원합니다. 스키마 진화를 참조하십시오. |
| 컴팩션 | ⚠️ | ⚠️ | Experimental. allow_experimental_iceberg_compaction = 1이 필요합니다. 컴팩션을 참조하십시오. |
UPDATE / MERGE |
❌ | ❌ | 지원되지 않습니다. 컴팩션을 참조하십시오. |
| copy-on-write | ❌ | ❌ | 지원되지 않습니다. |
| 스냅샷 만료 | ⚠️ | ⚠️ | Experimental. Iceberg v2, allow_insert_into_iceberg = 1, allow_experimental_expire_snapshots = 1이 필요합니다. 스냅샷 만료를 참조하십시오. |
| 고아 파일 제거 | ⚠️ | ⚠️ | Experimental. Iceberg v2 이상, allow_insert_into_iceberg = 1, allow_iceberg_remove_orphan_files = 1이 필요합니다. 고아 파일 제거를 참조하십시오. |
| 파티션 쓰기 | ✅ 베타 | ✅ 베타 | Iceberg 쓰기 작업에서 지원됩니다. |
| 파티션 변경 | ❌ | ❌ | ClickHouse에서는 파티셔닝 방식을 변경할 수 없습니다. ClickHouse는 파티셔닝 방식이 변경된 Iceberg 테이블에 쓸 수 있습니다. |
| 메타데이터 | |||
| 브랜치 및 태그 지정 | ❌ | ❌ | Iceberg 브랜치/태그 참조는 지원되지 않습니다. |
| 메타데이터 파일 해상도 | ✅ | ✅ | 카탈로그, 디렉터리 나열, version-hint 및 특정 경로를 통한 해상도를 지원합니다. 메타데이터 파일 해상도를 참조하십시오. |
| 데이터 캐싱 | ✅ | ✅ | S3/Azure/HDFS 저장 엔진과 동일한 메커니즘을 사용합니다. 데이터 캐시를 참조하십시오. |
| 메타데이터 캐싱 | ✅ | ✅ | use_iceberg_metadata_files_cache를 통해 기본적으로 활성화됩니다. 메타데이터 캐시를 참조하십시오. |
25.6 버전부터 ClickHouse는 Delta Lake Rust kernel을 사용해 Delta Lake 테이블을 읽으며, 이를 통해 더 폭넓은 기능을 지원합니다. 하지만 Azure Blob Storage의 데이터에 액세스할 때 알려진 문제가 발생합니다. 따라서 Azure Blob Storage에서 데이터를 읽을 때는 Kernel이 비활성화됩니다. 아래 표에서 이 kernel이 필요한 기능을 확인할 수 있습니다.
| 기능 | ClickHouse Cloud | 자가 관리형 | 참고 |
|---|---|---|---|
| 저장소 백엔드 | |||
| AWS S3 | ✅ | ✅ | deltaLake() 또는 deltaLakeS3()를 통해 |
| GCS | ✅ | ✅ | deltaLake() 또는 deltaLakeS3()를 통해 |
| Azure Blob Storage | ✅ | ✅ | deltaLakeAzure()를 통해 |
| HDFS | ❌ | ❌ | 지원되지 않음 |
| 로컬 파일 시스템 | ❌ | ✅ | deltaLakeLocal()를 통해 |
| 액세스 방법 | |||
| 테이블 함수 | ✅ | ✅ | 백엔드별 변형을 제공하는 deltaLake() |
| 테이블 엔진 | ✅ | ✅ | DeltaLake |
| 클러스터 분산 읽기 | ✅ | ✅ | deltaLakeCluster, deltaLakeAzureCluster |
| 명명된 컬렉션 | ⚠️ | ✅ | DDL로 생성한 명명된 컬렉션은 일부 ClickHouse Cloud 서비스에서 활성화할 수 있습니다. 사용 가능 여부는 Support에 문의하십시오. |
| 읽기 기능 | |||
| 읽기 지원 | ✅ | ✅ | 모든 ClickHouse SQL 함수가 포함된 완전한 SELECT 지원 |
| 파티션 프루닝 | ✅ 베타 | ✅ 베타 | Delta Kernel이 필요합니다. |
| 스키마 진화 | ✅ 베타 | ✅ 베타 | Delta Kernel이 필요합니다. |
| 시간 여행 | ✅ 베타 | ✅ 베타 | Delta Kernel이 필요합니다. |
| 삭제 벡터 | ✅ | ✅ | |
| 컬럼 매핑 | ✅ | ✅ | |
| 변경 데이터 피드 | ✅ 베타 | ✅ 베타 | Delta Kernel이 필요합니다. |
| 가상 컬럼 | ✅ | ✅ | _path, _file, _size, _time, _etag. 가상 컬럼을 참조하십시오. |
| 쓰기 기능 | |||
INSERT |
✅ 베타 | ✅ 베타 | Delta Kernel이 필요합니다. S3 및 GCS 쓰기는 지원되지만 Azure 쓰기는 지원되지 않습니다. v26.7부터는 allow_delta_lake_writes = 1이 필요하며, 이전 버전에서는 allow_experimental_delta_lake_writes = 1을 사용하십시오. Delta Lake 쓰기를 참조하십시오. |
DELETE / UPDATE / MERGE |
❌ | ❌ | 지원되지 않음 |
| 빈 테이블 생성 | ❌ | ❌ | CREATE TABLE 작업은 Delta Lake 테이블이 객체 스토리지에 이미 존재한다고 가정합니다. |
| 캐싱 | |||
| 데이터 캐싱 | ✅ | ✅ | S3/Azure/HDFS 저장 엔진과 동일한 메커니즘입니다. 데이터 캐시를 참조하십시오. |
| 기능 | ClickHouse Cloud | 자가 관리형 | 참고 |
|---|---|---|---|
| 스토리지 백엔드 | |||
| AWS S3 | ✅ | ✅ | hudi()를 통해 지원 |
| GCS | ✅ | ✅ | hudi()를 통해 지원 |
| Azure Blob Storage | ❌ | ❌ | 지원되지 않음 |
| HDFS | ❌ | ❌ | 지원되지 않음 |
| 로컬 파일 시스템 | ❌ | ❌ | 지원되지 않음 |
| 액세스 방법 | |||
| 테이블 함수 | ✅ | ✅ | hudi() |
| 테이블 엔진 | ✅ | ✅ | Hudi |
| 클러스터 분산 읽기 | ✅ | ✅ | hudiCluster (S3 전용) |
| 이름이 지정된 컬렉션 | ⚠️ | ✅ | DDL로 생성한 이름이 지정된 컬렉션은 일부 ClickHouse Cloud 서비스에서 활성화할 수 있습니다. 사용 가능 여부를 확인하려면 지원팀에 문의하십시오. |
| 읽기 기능 | |||
| 읽기 지원 | ✅ | ✅ | 모든 ClickHouse SQL 함수를 사용하는 완전한 SELECT 지원 |
| 스키마 진화 | ❌ | ❌ | 지원되지 않음 |
| 시간 이동 | ❌ | ❌ | 지원되지 않음 |
| 가상 컬럼 | ✅ | ✅ | _path, _file, _size, _time, _etag. 가상 컬럼을 참조하십시오. |
| 쓰기 기능 | |||
INSERT / DELETE / UPDATE |
❌ | ❌ | 읽기 전용 통합 |
| 캐싱 | |||
| 데이터 캐싱 | ❌ | ❌ | 지원되지 않음 |
| 기능 | ClickHouse Cloud | 자가 관리형 | 참고 |
|---|---|---|---|
| 스토리지 백엔드 | |||
| S3 | ⚠️ | ⚠️ | 실험적입니다. paimon() 또는 paimonS3()를 통해 사용할 수 있습니다 |
| GCS | ⚠️ | ⚠️ | 실험적입니다. paimon() 또는 paimonS3()를 통해 사용할 수 있습니다 |
| Azure Blob Storage | ⚠️ | ⚠️ | 실험적입니다. paimonAzure()를 통해 사용할 수 있습니다 |
| HDFS | ❌ | ⚠️ | 실험적이며 지원 중단 예정입니다. paimonHDFS()를 통해 사용할 수 있습니다 |
| 로컬 파일 시스템 | ❌ | ⚠️ | 실험적입니다. paimonLocal()를 통해 사용할 수 있습니다 |
| 액세스 방법 | |||
| 테이블 함수 | ⚠️ | ⚠️ | 실험적입니다. 백엔드별 변형이 있는 paimon() |
| 테이블 엔진 | ⚠️ | ⚠️ | 실험적입니다. 백엔드별 변형이 있는 Paimon입니다. allow_experimental_paimon_storage_engine = 1이 필요합니다. |
| 클러스터 분산 읽기 | ⚠️ | ⚠️ | 실험적입니다. paimonS3Cluster, paimonAzureCluster, paimonHDFSCluster |
| 이름이 지정된 컬렉션 | ⚠️ | ⚠️ | 실험적입니다. DDL로 생성한 이름이 지정된 컬렉션은 일부 ClickHouse Cloud 서비스에서 활성화할 수 있습니다. 이용 가능 여부를 확인하려면 Support에 문의하십시오. |
| 읽기 기능 | |||
| 읽기 지원 | ⚠️ | ⚠️ | 실험적입니다. 모든 ClickHouse SQL 함수를 포함해 SELECT를 완전히 지원합니다 |
| 스키마 진화 | ❌ | ❌ | 지원되지 않습니다 |
| 시간 이동 | ❌ | ❌ | 지원되지 않습니다 |
| 가상 컬럼 | ⚠️ | ⚠️ | 실험적입니다. _path, _file, _size, _time, _etag을 지원합니다. 가상 컬럼을 참조하십시오. |
| 쓰기 기능 | |||
INSERT / DELETE / UPDATE |
❌ | ❌ | 읽기 전용 통합 |
| 캐싱 | |||
| 데이터 캐싱 | ❌ | ❌ | 지원되지 않습니다 |
카탈로그 지원
ClickHouse는 DataLakeCatalog 데이터베이스 엔진을 사용해 외부 데이터 카탈로그에 연결할 수 있으며, 이 엔진은 카탈로그를 ClickHouse 데이터베이스로 노출합니다. 카탈로그에 등록된 테이블은 자동으로 표시되며, 표준 SQL로 쿼리할 수 있습니다.
현재 다음 카탈로그를 지원합니다. 전체 설정 방법은 각 카탈로그의 참고 가이드를 참조하십시오.
| Catalog | Formats | Read | Create table | INSERT | 참고 가이드 |
|---|---|---|---|---|---|
| AWS Glue Catalog | Iceberg | ✅ 베타 | ❌ | ❌ | Glue 카탈로그 가이드 |
| BigLake Metastore | Iceberg | ✅ 베타 | ❌ | ❌ | BigLake 메타스토어 가이드 |
| Databricks Unity Catalog | Delta, Iceberg | ✅ 베타 | ✅ 베타 | ✅ 베타 | Unity Catalog 가이드 |
| Iceberg REST | Iceberg | ✅ 베타 | ❌ | ❌ | REST 카탈로그 가이드 |
| Lakekeeper | Iceberg | ✅ 베타 | ❌ | ❌ | Lakekeeper 카탈로그 가이드 |
| Project Nessie | Iceberg | ✅ Experimental | ❌ | ❌ | Nessie 카탈로그 가이드 |
| Microsoft OneLake | Iceberg | ✅ 베타 | ✅ 베타 | ✅ 베타 | OneLake 카탈로그 가이드 |
| SeaweedFS | Iceberg | ✅ 베타 | ✅ 베타 | ✅ 베타 | SeaweedFS 카탈로그 가이드 |
현재 모든 카탈로그 통합은 Experimental 또는 베타 설정을 활성화해야 사용할 수 있습니다. Microsoft OneLake, Databricks Unity Catalog, SeaweedFS를 제외한 모든 카탈로그는 읽기 전용 액세스만 제공합니다. 즉, 카탈로그 연결을 통해 테이블을 쿼리할 수는 있지만, 테이블을 생성하거나 데이터를 쓸 수는 없습니다. 카탈로그의 데이터를 ClickHouse로 로드해 더 빠르게 분석하려면 분석 가속화 가이드에 설명된 대로 INSERT INTO SELECT를 사용하십시오. 오픈 테이블 포맷에 데이터를 다시 쓰려면 데이터 쓰기 가이드에 설명된 대로 독립형 Iceberg 테이블을 생성하십시오.