지원 매트릭스
이 페이지는 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 collection(이름이 지정된 컬렉션) | ✅ | 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 | Iceberg | ✅ 베타 | ❌ | ❌ | Glue catalog guide |
| Databricks Unity | 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 |
현재 모든 카탈로그 연동은 실험적 또는 베타 설정을 활성화해야 하며, 읽기 전용 액세스만 제공합니다. 즉, 테이블을 조회할 수는 있지만 카탈로그 연결을 통해 테이블을 생성하거나 데이터를 쓰는 것은 불가능합니다. 카탈로그에서 ClickHouse로 데이터를 불러와 더 빠른 분석을 수행하려면 분석 가속화 가이드에 설명된 대로 INSERT INTO SELECT를 사용하십시오. 오픈 테이블 포맷으로 다시 데이터를 기록하려면 데이터 쓰기 가이드에 설명된 대로 독립형 Iceberg 테이블을 생성하십시오.