394. 카탈로그 (Catalog) 메타데이터

⚠️ 이 문서는 방금 배운 데이터 사전(393번 문서)과 사실상 같은 의미로 쓰이지만, 학술적인 시험 문제에서는 데이터 사전의 상위 개념이거나 **'객체들의 논리적, 물리적 정보를 모두 포함하는 가장 포괄적인 시스템 저장소'**로 등장하는 카탈로그(Catalog) 개념을 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: 시스템 카탈로그(System Catalog)는 데이터베이스에 저장되어 있는 모든 데이터 개체(테이블, 뷰, 인덱스)에 대한 상세한 '메타데이터(Metadata)'를 관리하는 저장소다.
  2. 관계: 일반적인 RDBMS 엔진에서는 **"카탈로그 = 데이터 사전"**으로 완전히 똑같은 뜻으로 취급한다. 구분할 필요가 거의 없다.
  3. 가치: DBMS가 쿼리를 실행할 때, "이 쿼리를 어떻게 실행해야 가장 빠를까?"(실행 계획)를 결정하는 최적화기(Optimizer)가 가장 먼저 뒤져보는 참고서 역할을 한다.

Ⅰ. 개요: DBMS의 뇌 (Context & Necessity)

우리가 SELECT * FROM Users WHERE age > 20; 이라는 쿼리를 DB에 던졌다고 치자. DB 엔진은 이 쿼리를 받자마자 시스템 카탈로그를 뒤진다.

  1. "Users라는 테이블이 진짜 있나?" (존재 여부 확인)
  2. "이 명령어를 친 사용자한테 SELECT 권한이 있나?" (보안 확인)
  3. "age 컬럼에 인덱스가 걸려있나? 아니면 다 뒤져야(Full Scan) 하나?" (최적화 확인)

이처럼 카탈로그는 사용자를 위한 것이 아니라, DBMS 스스로가 똑똑하게 일하기 위해(특히 쿼리 최적화를 위해) 끊임없이 참고하는 내부용 두뇌다.

📢 섹션 요약 비유: 카탈로그는 제품을 파는 **'종합 상품 책자(Catalog)'**와 같습니다. 우리 DB라는 창고에 어떤 물건(테이블)이 있는지, 그 물건의 스펙(데이터 타입)은 무엇인지, 가격(조회 비용)은 얼마인지 모든 정보가 빠짐없이 기록되어 있는 책자입니다.


Ⅱ. 카탈로그에 저장되는 정보 (Metadata)

카탈로그에 저장되는 내용을 우리는 **메타데이터(데이터를 위한 데이터)**라고 부른다.

1. 스키마 정보

  • 릴레이션(테이블) 이름, 속성(컬럼) 이름, 도메인(타입), 제약조건(PK, FK).
  • 뷰(View), 프로시저(Procedure), 트리거(Trigger)의 정의.

2. 저장(물리적) 정보

  • 실제 데이터 파일이 하드디스크의 어느 위치에 저장되어 있는지(경로).
  • 데이터 파일의 크기, 블록(Page) 수.

3. 인덱스 및 최적화 정보 ★

  • 어떤 컬럼에 B-Tree 인덱스가 걸려있는지.
  • 통계 정보: 테이블 안에 행(Row)이 대략 몇 개나 있는지, 특정 컬럼 값의 분포(Histogram)는 어떤지. (옵티마이저가 이 통계를 보고 가장 빠른 검색 길을 찾음)

Ⅲ. 정보 스키마 (Information Schema) 와의 관계

정보 처리 기사 같은 시험에서 카탈로그 파트에 낚시 문제로 자주 나오는 내용이다.

  • 카탈로그 (Catalog): 시스템이 내부적으로 쓰는 진짜 원본 메타데이터. 인간이 보기엔 너무 복잡한 기계어 형태일 수도 있다.
  • 데이터 디렉토리 (Data Directory): 카탈로그의 원본 데이터가 실제로 파일 형태로 하드디스크에 저장되어 있는 숨겨진 폴더다. (인간 접근 불가)
  • 정보 스키마 (Information Schema): 인간(사용자)이 카탈로그의 내용을 쉽게 조회해 볼 수 있도록, DBMS가 뷰(View) 형태로 예쁘게 포장해서 보여주는 '가상의 테이블'이다.
┌──────────────────────────────────────────────────────────────┐
│           시스템 카탈로그(System Catalog)의 활용 구조 시각화            │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│ [ 👨‍💻 사용자 쿼리 ] "SELECT * FROM Employees WHERE id = 5;"     │
│        │                                                     │
│        ▼                                                     │
│ ┌──────────────────────┐   "이 쿼리를 어떻게 실행하지?"           │
│ │ 🧠 옵티마이저 (Optimizer)│ ────────────────────────┐          │
│ └───────┬──────────────┘   ◀── (인덱스 유무, 통계 정보) │          │
│         │ (가장 빠른 실행 계획 생성)                   │          │
│         ▼                                        ▼          │
│ ┌──────────────────────┐               [ 📚 시스템 카탈로그 ]     │
│ │ ⚙️ 실행 엔진 (Executor)│                (메타데이터 총괄 저장소) │
│ └──────────────────────┘                                     │
│                                                              │
│ ★ 특징: 옵티마이저는 카탈로그 없이는 아무것도 결정할 수 없는 바보가 된다.   │
└──────────────────────────────────────────────────────────────┘

Ⅳ. 결론

"카탈로그가 더러우면 데이터베이스 전체가 느려진다." 시스템 카탈로그는 단순한 목차를 넘어, DB 성능 최적화의 핵심 근간이다. 현업의 DBA(데이터베이스 관리자)들이 매주 주말마다 ANALYZE TABLE이나 GATHER STATS 같은 명령어를 돌리는 이유가 바로 이것이다. 테이블의 데이터는 100만 건으로 늘어났는데, 카탈로그에 기록된 통계 정보가 여전히 '10건'으로 남아있다면, 옵티마이저는 멍청한 실행 계획을 세워버리고 쿼리 속도는 지옥으로 떨어지기 때문이다.


📌 관련 개념 맵

  • 유사 개념: 데이터 사전 (Data Dictionary - 393번 문서)
  • 저장되는 내용: Metadata (메타데이터), Schema (스키마)
  • 관련 기능: Query Optimizer (쿼리 최적화기), Statistics (통계 정보)
  • 주요 시스템 DB: information_schema, mysql, sys

👶 어린이를 위한 3줄 비유 설명

  1. 카탈로그는 로봇 도서관 사서의 '마법의 안경'과 같아요.
  2. 내가 "강아지가 나오는 책 찾아주세요!"라고 하면, 로봇 사서는 직접 책을 다 뒤지는 게 아니라 이 안경(카탈로그)을 써요.
  3. 안경을 쓰면 "강아지 책은 3층 A번 책장에 5권 있고, 엘리베이터를 타는 게 제일 빠릅니다"라는 정보(메타데이터)가 딱 보여서 1초 만에 책을 찾아올 수 있답니다!