Iceberg 테이블과 Foundry 데이터셋 비교
Iceberg 테이블과 Foundry 데이터셋은 모두 정형 데이터를 표현하지만 지원하는 기능과 이력의 의미가 다릅니다. Iceberg는 공개 형식의 외부 도구 연동, 행 수준 편집과 변경 로그를 제공하고, 기존 데이터셋은 더 넓은 Foundry 기능을 지원합니다.
Iceberg에서 사용할 수 있는 기능
파일 컴팩션을 수행해도 증분 읽기를 유지할 수 있습니다. 조건에 맞는 행을 DELETE, UPDATE, MERGE INTO로 바꾸고, 삭제와 수정을 변경 로그로 증분 소비할 수 있습니다. 테이블 이력 화면에는 Iceberg 메타데이터와 스냅샷 정보도 나타납니다.
현재 지원하지 않는 기능
| 기능 | Iceberg 테이블에서의 상태 |
|---|---|
| Foundry View | 미지원 |
| Iceberg View | 미지원 |
| Restricted view | Iceberg 테이블을 직접 기반으로 사용할 수 없습니다. |
| 스트리밍 | 미지원 |
| 시계열 동기화 | 미지원 |
| Projection | 미지원 |
| 객체 구체화(Object materialization) | 미지원 |
온톨로지에서 Iceberg 기반 객체 유형을 사용한다면 객체 및 속성 보안 정책으로 행과 열 수준 접근을 통제할 수 있습니다. 이 지원은 플랫폼 인스턴스에 따라 아직 제공되지 않을 수 있어 사용이 필요하면 Palantir 지원에 요청합니다.
온톨로지 밖에서 행 수준 접근 통제가 필요하면 Iceberg를 읽는 Foundry 데이터셋을 만든 뒤, 그 데이터셋을 기반으로 Restricted view를 구성합니다. 테이블 전체의 접근에는 보안 표지를 사용할 수 있습니다.
Marketplace 설치 조건
관리형 Iceberg 테이블은 Marketplace 제품에 포함하여 대상 환경에 설치할 수 있습니다. 설치된 테이블은 원래 패키징한 테이블과 같은 저장 유형을 사용해야 합니다. Foundry 관리 저장소 테이블을 BYOB로 설치하거나 BYOB 테이블을 관리 저장소로 설치하는 방식은 지원하지 않습니다.
브랜치와 스키마 차이
Iceberg의 기본 브랜치는 main, Foundry 데이터셋의 기본 브랜치는 master입니다. Foundry의 Iceberg 연동에서는 둘을 같은 브랜치로 취급합니다. 따라서 master에서 실행한 Foundry 작업은 Iceberg의 main에 씁니다.
스키마 변경이 항상 자동으로 이루어지지는 않습니다. 비증분 Foundry transforms 또는 Pipeline Builder는 테이블 replace를 사용하여 새 스키마를 반영할 수 있습니다. 반면 증분 쓰기 등에서는 명시적 스키마 진화 설정이나 ALTER TABLE이 필요하고, 맞지 않는 변경은 실패할 수 있습니다. 브랜치 격리는 현재 스키마 변경이 다른 브랜치에 적용되는 범위를 설명합니다.
보안 표지의 범위
데이터셋은 요청한 뷰의 보안 표지를 더 좁은 범위에서 적용합니다. Iceberg는 유지된 스냅샷들의 메타데이터를 한 테이블에서 함께 다루므로, 어느 브랜치의 스냅샷이 상속한 보안 표지라도 전체 테이블 읽기를 제한할 수 있습니다. 표시상 보안 표지가 없는 다른 브랜치를 읽더라도 이 조건을 피할 수 없습니다.
용어 구분
| 용어 | Iceberg에서의 의미 | Foundry 데이터셋과 구분할 점 |
|---|---|---|
| Table metadata | 스키마, 구조와 현재 상태를 설명하는 네이티브 메타데이터입니다. | Foundry의 일반 내부 리소스 메타데이터와 구분합니다. Iceberg 메타데이터는 카탈로그와 Details의 JSON으로 드러납니다. |
| Snapshot | 데이터 변경 시점의 테이블 상태와 파일 구성을 기록합니다. 증분 변경도 새 스냅샷을 만듭니다. | 데이터셋의 SNAPSHOT은 전체 데이터를 대체하는 트랜잭션 유형입니다. Iceberg snapshot 전체가 이 유형과 같지는 않습니다. |
구체적인 스냅샷 유형과 데이터셋 트랜잭션의 대응은 스냅샷에 있습니다.