지원 매트릭스
이 페이지는 ClickHouse의 데이터 레이크 통합에 대한 종합적인 지원 매트릭스를 제공합니다. 각 오픈 테이블 포맷에서 사용할 수 있는 기능, ClickHouse가 연결할 수 있는 카탈로그, 그리고 각 카탈로그에서 지원되는 기능을 다룹니다.
오픈 테이블 포맷 지원
ClickHouse는 네 가지 오픈 테이블 포맷을 통합 지원합니다: Apache Iceberg, Delta Lake, Apache Hudi, Apache Paimon. 아래에서 형식을 선택하여 해당 지원 매트릭스를 확인하십시오.
범례: ✅ 지원됨 | ⚠️ 부분 지원 / 실험적 | ❌ 지원되지 않음
- Apache Iceberg
- Delta Lake
- Apache Hudi
- Apache Paimon
| 기능 | 상태 | 비고 |
|---|---|---|
| 스토리지 백엔드 | ||
| AWS S3 | ✅ | icebergS3() 또는 iceberg() 별칭 사용 |
| GCS | ✅ | icebergS3() 또는 iceberg() 별칭 사용 |
| Azure Blob Storage | ✅ | icebergAzure()을 통해 |
| HDFS | ⚠️ | icebergHDFS()을 통해 지원됩니다. 사용 중단되었습니다. |
| 로컬 파일 시스템 | ✅ | icebergLocal() 사용 |
| 접근 방법 | ||
| 테이블 함수 | ✅ | icebergS3() 및 백엔드별 다양한 변형 |
| 테이블 엔진 | ✅ | IcebergS3, 백엔드별 변형 제공 |
| 클러스터 분산 읽기 | ✅ | icebergS3Cluster, icebergAzureCluster, icebergHDFSCluster |
| Named collections(이름이 지정된 컬렉션) | ✅ | Named collection(이름이 지정된 컬렉션) 정의 |
| 읽기 관련 기능 | ||
| 읽기 지원 | ✅ | 모든 ClickHouse SQL 함수와 함께 사용할 수 있는 완전한 SELECT 지원 |
| 파티션 프루닝 | ✅ | 자세한 내용은 파티션 프루닝을 참고하십시오. |
| 숨겨진 파티셔닝 | ✅ | Iceberg 변환 기반 파티셔닝을 지원합니다 |
| 파티션 진화 | ✅ | 시간 경과에 따라 파티션 스펙이 변경되는 테이블의 읽기를 지원합니다 |
| 스키마 진화 | ✅ | 컬럼 추가, 제거 및 순서 재배치. Schema evolution을 참조하십시오. |
| 데이터 타입 승격 / 확장 | ✅ | int → long, float → double, decimal(P,S) → decimal(P',S) (이때 P'는 P보다 커야 합니다). 스키마 진화(Schema evolution)을 참조하십시오. |
| 타임 트래블 / 스냅샷 | ✅ | iceberg_timestamp_ms 또는 iceberg_snapshot_id 설정을 통해 사용할 수 있습니다. 자세한 내용은 Time travel을 참조하십시오. |
| 포지션 삭제(position delete) | ✅ | 삭제된 행 처리를 참고하십시오. |
| 동등 조건 DELETE | ✅ | 테이블 엔진에서만 지원되며 v25.8+부터 사용할 수 있습니다. 삭제된 행 처리를 참조하십시오. |
| 읽기 시 병합(Merge-on-read) | ⚠️ | 실험적 기능입니다. 삭제 작업을 지원합니다. |
| 포맷 버전 | ⚠️ | v1과 v2는 지원됩니다. v3는 지원되지 않습니다. |
| 컬럼 통계 | ✅ | |
| 블룸 필터 / puffin 파일 | ❌ | puffin 파일의 블룸 필터 인덱스는 지원되지 않습니다. |
| 가상 컬럼 | ✅ | _path, _file, _size, _time, _etag 컬럼입니다. 가상 컬럼을 참고하십시오. |
| 쓰기 관련 기능 | ||
| 테이블 생성 | ✅ | 실험적 기능입니다. allow_insert_into_iceberg = 1 설정이 필요합니다. v25.7+에서 사용 가능합니다. 자세한 내용은 테이블 생성을 참조하십시오. |
| INSERT | ✅ | 26.2 버전부터 Beta입니다. allow_insert_into_iceberg = 1 설정이 필요합니다. 데이터 삽입을 참조하십시오. |
| DELETE | ✅ | 실험적 기능입니다. allow_insert_into_iceberg = 1 설정이 필요합니다. ALTER TABLE ... DELETE WHERE를 통해 삭제합니다. 데이터 삭제를 참고하십시오. |
| ALTER TABLE (스키마 변경) | ✅ | 실험적 기능입니다. allow_insert_into_iceberg = 1 설정이 필요합니다. 컬럼을 추가, 삭제, 수정하거나 이름을 변경할 수 있습니다. 스키마 변경을 참조하십시오. |
| 컴팩션 | ⚠️ | 실험적 기능입니다. allow_experimental_iceberg_compaction = 1 설정이 필요합니다. position delete 파일을 데이터 파일로 병합합니다. Compaction을 참조하십시오. 기타 Iceberg compaction 연산은 지원되지 않습니다. |
| UPDATE / MERGE | ❌ | 지원되지 않습니다. 컴팩션을 참조하십시오. |
| 쓰기 시 복사(Copy-on-write) | ❌ | 지원되지 않습니다. |
| 스냅샷 만료 처리 | ❌ | 지원되지 않습니다 |
| 고아 파일 삭제 | ❌ | 지원되지 않습니다 |
| 파티션 단위 쓰기 | ✅ | 지원됩니다. |
| 파티션 스키마 변경 | ❌ | ClickHouse에서는 파티션 방식(파티셔닝 스키마)을 변경하는 기능을 지원하지 않습니다. 다만 파티션 방식이 변경된 Iceberg 테이블에는 쓰기를 수행할 수 있습니다. |
| 메타데이터 | ||
| 브랜치 및 태그 | ❌ | Iceberg 브랜치 및 태그에 대한 참조는 지원되지 않습니다. |
| 메타데이터 파일 확인 | ✅ | 카탈로그, 단순 디렉터리 목록, 'version-hint', 특정 경로를 통한 메타데이터 해석을 지원합니다. iceberg_metadata_file_path 및 iceberg_metadata_table_uuid를 통해 구성할 수 있습니다. Metadata file resolution을(를) 참조하십시오. |
| 데이터 캐싱 | ✅ | S3/Azure/HDFS 스토리지 엔진과 같은 메커니즘을 사용합니다. Data cache를 참조하십시오. |
| 메타데이터 캐싱 | ✅ | 매니페스트 및 메타데이터 파일이 메모리에 캐시됩니다. 기본적으로 use_iceberg_metadata_files_cache를 통해 활성화됩니다. Metadata cache를 참조하십시오. |
버전 25.6부터 ClickHouse는 Delta Lake Rust 커널을 사용하여 Delta Lake 테이블을 읽어 더 폭넓은 기능을 지원합니다. 그러나 Azure Blob Storage의 데이터에 액세스할 때는 알려진 문제가 발생합니다. 이러한 이유로 Azure Blob Storage에서 데이터를 읽을 때는 이 커널이 비활성화됩니다. 아래 표에서 어떤 기능에 이 커널이 필요한지 표시합니다.
| Feature | Status | Notes |
|---|---|---|
| Storage backends | ||
| AWS S3 | ✅ | deltaLake() 또는 deltaLakeS3()를 통해 |
| GCS | ✅ | deltaLake() 또는 deltaLakeS3()를 통해 |
| Azure Blob Storage | ✅ | deltaLakeAzure()를 통해 |
| HDFS | ❌ | 지원되지 않음 |
| Local filesystem | ✅ | deltaLakeLocal()를 통해 |
| Access methods | ||
| Table function | ✅ | 각 스토리지 백엔드에 대한 변형과 함께 deltaLake() |
| Table engine | ✅ | DeltaLake |
| Cluster-distributed reads | ✅ | deltaLakeCluster, deltaLakeAzureCluster |
| Named collections | ✅ | Named collection |
| Read features | ||
| Read support | ✅ | 모든 ClickHouse SQL 함수와 함께 전체 SELECT를 지원합니다 |
| Partition pruning | ✅ | Delta Kernel이 필요합니다. |
| Schema evolution | ✅ | Delta Kernel이 필요합니다. |
| Time travel | ✅ | Delta Kernel이 필요합니다. |
| Deletion vectors | ✅ | |
| Column mapping | ✅ | |
| Change data feed | ✅ | Delta Kernel이 필요합니다. |
| Virtual columns | ✅ | _path, _file, _size, _time, _etag. Virtual columns을 참조하십시오. |
| Write features | ||
| INSERT | ✅ | 실험적 기능입니다. allow_experimental_delta_lake_writes = 1 설정이 필요합니다. DeltaLake engine을 참조하십시오. Delta Kernel이 필요합니다. |
| DELETE / UPDATE / MERGE | ❌ | 지원되지 않음 |
| CREATE empty table | ❌ | 새로운 비어 있는 Delta Lake 테이블 생성은 지원되지 않습니다. CREATE TABLE 작업은 객체 스토리지에 기존 Delta Lake가 존재한다고 가정합니다. |
| Caching | ||
| Data caching | ✅ | S3/Azure/HDFS 스토리지 엔진과 동일한 메커니즘입니다. Data cache를 참조하십시오. |
| 기능 | 상태 | 비고 |
|---|---|---|
| 스토리지 백엔드 | ||
| AWS S3 | ✅ | hudi()를 통해 지원합니다 |
| GCS | ✅ | hudi()를 통해 지원합니다 |
| Azure Blob Storage | ❌ | 지원되지 않습니다 |
| HDFS | ❌ | 지원되지 않습니다 |
| Local filesystem | ❌ | 지원되지 않습니다 |
| 액세스 방식 | ||
| Table function | ✅ | hudi() |
| Table engine | ✅ | Hudi |
| Cluster-distributed reads | ✅ | hudiCluster (S3 전용) |
| Named collections | ✅ | Hudi arguments |
| 읽기 기능 | ||
| Read support | ✅ | 모든 ClickHouse SQL 함수와 함께 완전한 SELECT 쿼리를 지원합니다 |
| Schema evolution | ❌ | 지원되지 않습니다 |
| Time travel | ❌ | 지원되지 않습니다 |
| Virtual columns | ✅ | _path, _file, _size, _time, _etag. Virtual columns를 참조하십시오. |
| 쓰기 기능 | ||
| INSERT / DELETE / UPDATE | ❌ | 읽기 전용 연동입니다 |
| 캐싱 | ||
| Data caching | ❌ | 지원되지 않습니다 |
| Feature | Status | Notes |
|---|---|---|
| Storage backends | ||
| S3 | ✅ | 실험적 기능입니다. paimon() 또는 paimonS3()를 통해 사용합니다. |
| GCS | ✅ | 실험적 기능입니다. paimon() 또는 paimonS3()를 통해 사용합니다. |
| Azure Blob Storage | ✅ | 실험적 기능입니다. paimonAzure()을 통해 사용합니다. |
| HDFS | ⚠️ | 실험적 기능입니다. paimonHDFS()을 통해 사용합니다. 사용 중단(Deprecated)되었습니다. |
| Local filesystem | ✅ | 실험적 기능입니다. paimonLocal()을 통해 사용합니다. |
| Access methods | ||
| Table function | ✅ | 실험적 기능입니다. 각 스토리지 백엔드별 variant와 함께 paimon()을 사용합니다. |
| Table engine | ❌ | 전용 table engine이 없습니다. |
| Cluster-distributed reads | ✅ | 실험적 기능입니다. paimonS3Cluster, paimonAzureCluster, paimonHDFSCluster |
| Named collections | ✅ | 실험적 기능입니다. Named collection 정의를 참고하십시오. |
| Read features | ||
| Read support | ✅ | 실험적 기능입니다. 모든 ClickHouse SQL 함수와 함께 전체 SELECT를 지원합니다. |
| Schema evolution | ❌ | 지원되지 않습니다. |
| Time travel | ❌ | 지원되지 않습니다. |
| Virtual columns | ✅ | 실험적 기능입니다. _path, _file, _size, _time, _etag를 지원합니다. Virtual columns를 참고하십시오. |
| Write features | ||
| INSERT / DELETE / UPDATE | ❌ | 읽기 전용 연동입니다. |
| Caching | ||
| Data caching | ❌ | 지원되지 않습니다. |
카탈로그 지원
ClickHouse는 DataLakeCatalog 데이터베이스 엔진을 사용하여 외부 데이터 카탈로그에 연결할 수 있으며, 해당 카탈로그를 ClickHouse 데이터베이스처럼 제공합니다. 카탈로그에 등록된 테이블은 자동으로 나타나며, 표준 SQL로 조회할 수 있습니다.
현재 다음 카탈로그가 지원됩니다. 전체 설정 방법은 각 카탈로그의 참조 가이드를 참고하십시오.
| Catalog | Formats | Read | Create table | INSERT | Reference guide |
|---|---|---|---|---|---|
| AWS Glue Catalog | Iceberg | ✅ 베타 | ❌ | ❌ | Glue catalog guide |
| BigLake Metastore | Iceberg | ✅ 베타 | ❌ | ❌ | BigLake Metastore guide |
| Databricks Unity Catalog | Delta, Iceberg | ✅ 베타 | ✅ 베타 | ✅ 베타 | Unity Catalog guide |
| Iceberg REST | Iceberg | ✅ 베타 | ❌ | ❌ | REST catalog guide |
| Lakekeeper | Iceberg | ✅ 베타 | ❌ | ❌ | Lakekeeper catalog guide |
| Project Nessie | Iceberg | ✅ 실험적 | ❌ | ❌ | Nessie catalog guide |
| Microsoft OneLake | Iceberg | ✅ 베타 | ✅ 베타 | ✅ 베타 | OneLake catalog guide |
현재 모든 카탈로그 연동은 실험적 또는 베타 설정을 활성화해야 합니다. Microsoft OneLake와 Databricks Unity Catalog를 제외한 모든 카탈로그는 읽기 전용 액세스만 제공합니다. 즉, 테이블을 조회할 수는 있지만 카탈로그 연결을 통해 테이블을 생성하거나 데이터를 쓰는 것은 불가능합니다. 카탈로그에서 ClickHouse로 데이터를 불러와 더 빠른 분석을 수행하려면 분석 가속화 가이드에 설명된 대로 INSERT INTO SELECT를 사용하십시오. 오픈 테이블 포맷에 다시 데이터를 쓰려면 데이터 쓰기 가이드에 설명된 대로 독립 실행형 Iceberg 테이블을 생성하십시오.