주요 개념
Data Catalog 서비스의 주요 리소스인 카탈로그, 데이터베이스, 테이블, 크롤러의 개념과 함께, 각 리소스의 상태 및 생명주기에 대해 설명합니다.
카탈로그
Data Catalog의 카탈로그는 테이블과 데이터베이스 메타데이터를 구성하고 분리해 관리하는 메타데이터 네임스페이스입니다. 카탈로그는 Spark, Trino, Hive 등의 분석 엔진이 테이블 메타데이터를 조회하고 관리할 수 있도록 메타스토어 역할을 수행합니다. 각 카탈로그는 서로 독립적으로 운영되며 메타데이터를 공유하지 않습니다. 또한, 모든 카탈로그는 고가용성(HA) 구조로 제공되어 안정적인 서비스 운영이 가능합니다.
카카오클라우드는 Standard, Iceberg 두 가지 유형의 카탈로그를 제공합니다.
Standard 카탈로그
Apache Hive Metastore와 호환되는 기본(Standard) 카탈로그 유형입니다.
- 특정 VPC(서브넷)를 지정하여 생성할 수 있습니다.
- 카탈로그에 소유한 데이터의 테이블 정의와 저장 경로 같은 메타데이터를 저장, 수정, 삭제할 수 있습니다.
Iceberg 카탈로그
Apache Iceberg는 대규모 분석 데이터를 하나의 SQL 테이블처럼 안정적으로 다루기 위한 오픈 테이블 포맷입니다. Spark, Trino 등 여러 엔진이 동일한 테이블을 안전하게 동시에 읽고 쓸 수 있도록 설계되었습니다.
- SQL 친화적 작업: 일반적인 SQL(DML/DDL)을 통해 행 단위 변경을 표현하고, 여러 엔진에서 공통 포맷으로 접근합니다. 엔진별 구현/지원 범위는 다를 수 있습니다.
- 스키마, 파티션 진화: 테이블을 재생성하지 않고 칼럼 추가/이름 변경/삭제 및 파티션 레이아웃 변경이 가능합니다.
- 히든 파티셔닝(Hidden Partitioning):
day(ts),bucket(id)같은 변환 기반 파티션을 메타데이터로 관리하여 물리 디렉터리 구조를 직접 다룰 필요가 없습니다. - 시간 이동(Time travel), 롤백: 모든 쓰기 작업은 자동으로 스냅샷을 생성하며, 사용자는 특정 시점 또는 스냅샷 기준으로 데이터를 조회하거나 되돌릴 수 있습니다. 단, 엔진별 제공 방식은 다를 수 있습니다.
- 운영 최적화(Compaction 등): 작은 파일을 병합하는 등 파일 레이아웃 최적화 기능을 통해 스캔 성능을 향상하고 메타데이터 오버헤드를 줄일 수 있습니다.
Data Catalog 서비스에서는 Iceberg 테이블의 스키마, 파티션 변환, 스냅샷 등 메타데이터를 등록 및 관리합니다.
실제 쿼리 실행은 Spark, Trino 등 분석 엔진에서 수행되며, 엔진 설정 시 REST 카탈로그 URI와 웨어하우스(Object Storage) 경로를 지정해야 합니다.
- 포맷 버전: Iceberg v2 기반으로 제공됩니다. v1 테이블의 조회와 생성은 가능하나 일부 기능은 제한될 수 있습니다.
- 카탈로그 생성 제한: 프로젝트(또는 계정)당 Iceberg 카탈로그는 1개만 생성할 수 있습니다.
- Object Storage 연동: 일반 버킷(S3 호환) 사용을 권장하며, 클래식 버킷 및 Swift 방식은 지원하지 않습니다.
데이터베이스
Data Catalog의 데이터베이스는 테이블을 논리적으로 그룹화하는 메타데이터 컨테이너입니다. 지원 범위는 상위 카탈로그의 유형에 따릅니다.
- 하나의 테이블은 반드시 하나의 데이터베이스에만 속합니다.
- 데이터베이스는 프로젝트 단위로 관리되며, 콘솔에서는 해당 프로젝트에 등록된 모든 데이터베이스를 조회할 수 있습니다.
- 지원 유형
- Standard 유형 데이터베이스: Hive 데이터 형식 기반의 데이터베이스
- Iceberg 유형 데이터베이스: Iceberg 데이터 형식 기반의 데이터베이스
테이블
Data Catalog에서 테이블은 데이터 스토어의 데이터를 표현하는 메타데이터 엔티티입니다. 카카오클라우드 콘솔에서 테이블을 생성할 수 있으며, 콘솔의 테이블 목록에는 테이블의 메타데이터 값이 표시됩니다.
- 테이블은 스키마, 파티션, 테이블 속성 등 하위 메타데이터를 포함합니다.
- 테이블을 수동으로 생성하고 테이블 정보를 수정할 수 있습니다.
- Data Catalog를 Hadoop Eco의 메타스토어로 사용하는 경우, 마이그레이션된 테이블의 정보도 수정할 수 있습니다.
- 지원 유형별 동작 차이
- Standard 유형 테이블: Hive 기반 테이블로서, Avro/JSON/Parquet/ORC/CSV/TEXT 등 파일 포맷을 지원하며 쿼리 엔진(Hive/Trino 등)으로 조회합니다.
- Iceberg 유형 테이블: Iceberg 테이블 형식으로서, Avro/Parquet/ORC 등 파일 포맷을 지원하며 Iceberg 고유 기능을 제공합니다.
크롤러
Data Catalog에서 크롤러는 MySQL 데이터를 스캔하여 메타데이터를 추출하고 Data Catalog를 자동으로 업데이트하여 데이터 검색을 간편하게 돕는 기능입니다. 카카오클라우드 콘솔에서 크롤러를 생성할 수 있으며, 테이블 목록에는 크롤러로 생성된 테이블 값이 표시됩니다.
- 크롤러에서 추출된 스키마는 Data Catalog 테이블에 저장되며, 테이블 이름은 Prefix + MySQL의 데이터베이스 이름_테이블 이름으로 설정됩니다.
- 크롤러 실행 내역은 최대 90일까지 노출되며, 90일이 경과된 실행 내역은 자동 삭제됩니다.
- 스케줄을 통해 크롤러 실행 일정을 설정할 수 있습니다.
- 크롤러 지원 유형: Iceberg 카탈로그에서는 크롤러 기능을 지원하지 않습니다.
리소스 상태 정보와 생명주기 (Lifecycle)
Data Catalog에서 상태를 확인할 수 있는 리소스는 카탈로그, 데이터베이스, 테이블, 크롤러입니다. 리소스 상태를 통해 현재 운영 상태를 파악할 수 있습니다. 리소스별 상태 정보는 다음과 같습니다.
카탈로그의 생명 주기
카탈로그의 상태
Standard 유형
| 상태 | 설명 |
|---|---|
INIT | Standard 카탈로그 생성 직후 상태 |
PROVISIONING | Standard 카탈로그가 사용할 VM을 생성하는 상태 |
RUNNING | Standard 카탈로그가 실행 중이며, 사용 가능한 상태 |
PENDING | Standard 카탈로그가 오류 상태를 벗어나기 위해 Failover를 진행 중인 상태 |
FATAL | Standard 카탈로그에 오류가 발생하여 복구 불가능한 상태 |
TERMINATING | Standard 카탈로그를 종료하기 위해서 하드웨어 리소스를 반납하는 상태 |
TERMINATED | Standard 카탈로그가 종료되어 사용할 수 없는 상태 |
Iceberg 유형
| 상태 | 설명 |
|---|---|
RUNNING | Iceberg 카탈로그가 실행 중이며, 사용 가능한 상태 |
FATAL | Iceberg 카탈로그에 오류가 발생하여 복구 불가능한 상태 |
TERMINATED | Iceberg 카탈로그가 종료되어 사용할 수 없는 상태 |
데이터베이스와 테이블의 상태
데이터베이스와 테이블의 상태는 생성, 수정, 삭제 동작에 의해 관리됩니다. 상태는 데이터베이스와 테이블의 동작에 영향을 미치며, 상태에 따라 다음 동작에 영향을 받습니다. 테이블은 스스로 상태를 소유할 뿐만 아니라 데이터베이스의 상태에도 영향을 받습니다. 예를 들어, 테이블은 데이터베이스가 ACTIVE 또는 ALTERING 상태일 때만 생성되거나 수정될 수 있습니다.
💡 Standard 유형과 Iceberg 유형의 데이터베이스 및 테이블 상태는 동일합니다.
| 상태 | 설명 |
|---|---|
CREATING | Database, Table 생성 중 |
ALTERING | Database, Table 수정 중 |
DELETING | Database, Table 삭제 중 |
ACTIVE | Database, Table 사용 가능 |
INACTIVE | Database, Table 사용 불가 |
크롤러의 상태
크롤러는 생성, 수정, 실행, 삭제 동작에 의해 상태가 변하고, 각각의 상태에 의해서 관리됩니다. 또한 데이터베이스와 MySQL의 상태에도 영향을 받습니다. 예를 들어, MySQL의 상태가 Available인 경우에만 크롤러가 생성되거나 동작할 수 있습니다.
| 상태 | 설명 |
|---|---|
CREATING | 크롤러 생성 중 |
ALTERING | 크롤러 수정 중 |
DELETING | 크롤러 삭제 중 |
ACTIVE | Database, Table 사용 가능 |
RUNNING | 크롤러 실행 중 |
INACTIVE | 크롤러 사용 불가 (ex: 데이터베이스가 삭제된 경우 INACTIVE 상태로 변경) 단, 크롤러 기록은 확인 가능 |