💡 핵심 인사이트 메타데이터 카탈로그(Metadata Catalog)는 "데이터 레이크나 데이터 웨어하우스에 저장된 데이터의 위치, 구조, 형식, 소유자, 更新时间 등 데이터 자산의 정보를 중앙에서 수집, 저장, 관리하는" 시스템입니다. 스키마 온 리드(Schema-on-Read) 환경에서는 데이터가 원본 그대로 저장되므로, **어떤 데이터가 존재하는지, 어떤 스키마를 가지는지, 어디에 저장되어 있는지**를 파악하기 위해 메타데이터 카탈로그가 필수적입니다. AWS Glue, Apache Hive Metastore, DataHub, Amundsen 등의 도구가 이 역할을 수행합니다.


Ⅰ. 메타데이터 카탈로그의 필요성: 데이터 발견의 문제

데이터 레이크에 데이터가 쌓이면, 가장 큰 문제는 "내가 필요한 데이터가 어디에 있는지 어떻게 알 수 있는가?" 입니다.

[메타데이터 카탈로그 없는 경우: 데이터 발견의 어려움]

/Raw/에 10,000개의 파일이 있다고 가정:

/Raw/2024/01/data_001.csv
/Raw/2024/01/data_002.parquet
/Raw/2024/02/extract_final_v3.xlsx
/Raw/legacy/migration_backup_2023.gz
...

문제를 느낌표:
- 이 파일들이 무엇을 의미하는가?
- 각 파일의 스키마(컬럼, 데이터 타입)는 무엇인가?
- 가장 최신 버전은 어느 것인가?
- 누가 소유하며, 얼마나 자주 갱신되는가?
- 다른 데이터와의 관계(조인 가능성)는?

→ "_데이터는 있지만, 활용이 불가능한_" 상황 발생
→ "데이터 늪(Data Swamp)"으로의 길

메타데이터 카탈로그는 이 문제를 해결합니다. 데이터 카탈로그에 모든 데이터 자산의 정보가 인덱싱되어, 분석가가 "product 관련 데이터가 있나?_", "2024년 고객 데이터의 스키마는?", "이 테이블과 조인 가능한 다른 테이블은? 등의 질문에 답변을 얻을 수 있습니다.


Ⅱ. 메타데이터 카탈로그의 핵심 기능과 구성 요소

[메타데이터 카탈로그의 주요 기능]

┌─────────────────────────────────────────────────────────────────┐
│                    메타데이터 카탈로그 기능                         │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  1. 데이터 자산 등록 (Data Discovery)                            │
│     - 테이블, 파일, 컬럼 정보 등록                                │
│     - 스키마 정보 (컬럼명, 데이터 타입, 설명)                       │
│     - 데이터 위치 (S3 경로, DB 테이블명)                           │
│     - 파티션 정보 (시간 기반 등)                                   │
│                                                                 │
│  2. 데이터 계보 추적 (Data Lineage)                              │
│     - 데이터의 기원 (어떤 소스에서 왔는가)                          │
│     - 데이터의 변환 이력 (어떤 ETL을 거쳤는가)                      │
│     - 데이터의 파생 관계 (어떤 테이블에서 생성되었는가)                │
│                                                                 │
│  3. 검색 및 탐색 (Search & Browse)                               │
│     - 키워드 기반 검색                                            │
│     - 필터링 (소유자,数据类型, 태그 등)                             │
│     - 미리보기 및 프로파일링                                        │
│                                                                 │
│  4. 접근 제어 및 거버넌스 (Governance)                            │
│     - 데이터 소유자/관리자 정의                                    │
│     - 민감 정보 태깅 (PII, 민감 등)                               │
│     - 접근 권한 관리                                              │
│                                                                 │
│  5. 스키마 진화 관리 (Schema Evolution)                          │
│     - 컬럼 추가/삭제/변경 이력                                     │
│     - 호환성 경고                                                 │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

핵심 메타데이터 유형:

1. 기술적 메타데이터 (Technical Metadata)

  • 테이블/파일 이름, 경로
  • 컬럼 이름과 데이터 타입
  • 파티션 스키마
  • 파일 형식 (Parquet, JSON, CSV 등)
  • 행 수, 크기, 생성 시간

2. 업무적 메타데이터 (Business Metadata)

  • 테이블/컬럼의 설명
  • 비즈니스 정의
  • 사용 권고 및 주의사항
  • 데이터 소유자, 관리자

3. 운영 메타데이터 (Operational Metadata)

  • 마지막更新时间
  • 갱신 주기
  • ETL/JOB 수행 이력
  • 오류 이력

Ⅲ. 주요 메타데이터 카탈로그 도구

1. Apache Hive Metastore

Hadoop 환경에서 가장 널리 사용되는 메타데이터 카탈로그입니다.

[Hive Metastore 아키텍처]

┌─────────────────────────────────────────────────────────────────┐
│                    Hive Metastore 계층                           │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌─────────────────┐      ┌─────────────────┐                   │
│  │  HiveServer2    │      │  EMR/Glue 등    │                   │
│  │  (SQL Interface)│      │  ETL Jobs       │                   │
│  └────────┬────────┘      └────────┬────────┘                   │
│           │                        │                             │
│           └──────────┬─────────────┘                             │
│                      │                                           │
│                      ▼                                           │
│            ┌─────────────────┐                                   │
│            │ Hive Metastore  │                                   │
│            │  (메타데이터 DB)   │                                   │
│            │                  │                                   │
│            │ - 테이블 정의      │                                   │
│            │ - 파티션 정보      │                                   │
│            │ - SD (Storage    │                                   │
│            │   Descriptor)    │                                   │
│            └────────┬────────┘                                   │
│                     │                                            │
│                     ▼                                            │
│            ┌─────────────────┐                                   │
│            │  RDBMS (MySQL,   │                                   │
│            │  PostgreSQL,     │                                   │
│            │  Derby)          │                                   │
│            └─────────────────┘                                   │
└─────────────────────────────────────────────────────────────────┘
  • Hive, Spark, Presto 등 여러 엔진에서 공통으로 메타데이터 접근
  • Thrift RPC API를 통해 메타데이터 조회/수정
  • metastore_db(RDBMS)에 메타데이터를 집중 저장

2. AWS Glue Data Catalog

AWS 클라우드 환경용 완전 관리형 메타데이터 카탈로그입니다.

[AWS Glue Data Catalog]

┌─────────────────────────────────────────────────────────────────┐
│                    AWS Glue Data Catalog                         │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  AWS Glue는 다음을 자동화:                                        │
│                                                                 │
│  1. 크롤러 (Crawler)                                             │
│     - S3, JDBC 등 데이터 소스를 스캔                              │
│     - 자동으로 스키마 추출 및 카탈로그 업데이트                      │
│     - 예약 실행 지원                                              │
│                                                                 │
│  2. Data Catalog                                                 │
│     - 테이블, 파티션, 컬럼 정보 중앙 저장                          │
│     - Athena, Redshift Spectrum, EMR에서 공용 접근                 │
│                                                                 │
│  3. 스키마 버전 관리                                              │
│     - 스키마 변경 이력 추적                                       │
│     - 호환성 검사                                                 │
│                                                                 │
│  4. 테이블 속성                                                   │
│     - 설명, 소유자, LastAccessTime                                │
│     - 커스텀 속성 (태그, 분류)                                     │
│                                                                 │
│  ┌─────────────────────────────────────────────────────────────┐ │
│  │ 예: Athena SQL에서 Glue 테이블 조회                          │ │
│  │ SELECT * FROM glue_catalog.db_name.table_name              │ │
│  │ → Glue가 S3의 Parquet 파일을 읽어 옴                         │ │
│  └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘

3. DataHub & Amundsen

오픈소스 기반의 최신 메타데이터 플랫폼입니다.

  • DataHub (LinkedIn): Python/Java 기반, GraphQL API, 실시간 메타데이터
  • Amundsen (Lyft): Python 기반, 메타데이터 + 데이터 계보 + 검색에 特化

Ⅳ. 메타데이터 카탈로그의 활용 사례

1. 데이터 발견 (Data Discovery)

[분석가 시나리오]

분석가: "고객 구매 이력 데이터로 RFM 분석을 하고 싶은데..."

카탈로그 검색:
- 키워드: "customer", "purchase", "order"
- 결과:
  1. dw.customer_orders (고객 주문 테이블)
     - 스키마: order_id, customer_id, order_date, amount, status
     - 설명: 2020년부터 현재까지의 모든 고객 주문 내역
     - 파티션: order_date (일별)

  2. crm.customer_master (고객 마스터)
     - 스키마: customer_id, name, email, segment, join_date
     - 설명: CRM 시스템의 고객 마스터 테이블

  3. dw.order_items (주문 상세)
     - 스키마: order_item_id, order_id, product_id, qty, price

→ 분석가가 이 테이블들을 발견하여 RFM 분석 파이프라인 구축

2. 데이터 계보 (Data Lineage)

[데이터 계보 추적]

dw.monthly_sales_summary
    ↑
    │ ( aggregation job: monthly_sales_agg.py )
    │
dw.daily_sales
    ↑
    │ ( ELT job: etl_daily_sales.py )
    │
Raw.Sources.crm_export
Raw.Sources.pos_transactions

→ "_월간 매출 요약표의 숫자가 잘못되었을 때_,
  _어떤 원본 데이터에서 문제가 시작되었는지_
  _계보 분석으로 추적 가능"_"

Ⅴ. 메타데이터 카탈로그의 실제 적용과 📢 비유

성공적 적용을 위한 Best Practice:

  1. 自动화 (Crawler/Detector): 새 데이터가 추가될 때마다 수동 등록 대신 자동 크롤링으로 카탈로그를 최신 상태로 유지
  2. 규칙적 프로파일링: 데이터의 분포, 널 비율 등 통계 프로파일을 주기적으로 생성하여 데이터 품질 이상 징후를 조기에 발견
  3. 태깅과 분류: "PII, 내부용, 실험적" 등 태그 체계를 수립하여 데이터 접근 제어와 관리에 활용
  4. 계보 자동 추적: ETL/ELT 파이프라인에 계보 추적 코드를 삽입하여 데이터 흐름을 자동으로 기록

📢 섹션 요약 비유: 메타데이터 카탈로그는 **"도서관의 종합目録 시스템에 비유"**할 수 있습니다. 수백만 권의 책이 있는大型 도서관에서目録이 없으면 (어떤 책이 있는지, 어디에 있는지, 무슨 내용인지) 알 방법이 없습니다. 메타데이터 카탈로그는 이 도서관의 (책 제목, 저자, 위치, 주제, 대출 이력) 등을すべて記録한 종합目録입니다. 또한 "이 책은 저 책의 참고문헌이다(데이터 계보)", "이 책은 최근 인기 도서다(메타데이터 분석)" 같은附加 정보도 제공합니다. 이를 통해 독자(데이터 분석가)은 어디서 시작할지, 어떤 데이터를 신뢰할지, 어떤 데이터를 활용할지 판단할 수 있게 됩니다.