시스템 카탈로그 (System Catalog)와 데이터 사전

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

  1. 본질: 데이터베이스에 저장된 모든 객체(테이블, 인덱스, 뷰, 권한 등)에 대한 정의와 명세, 즉 '데이터에 대한 데이터(메타데이터, Metadata)'를 저장하는 시스템 전용 데이터베이스입니다.
  2. 가치: 쿼리 파서(Parser)와 옵티마이저(Optimizer)가 쿼리의 문법을 검증하고 최적의 실행 계획(Execution Plan)을 수립하는 데 필요한 모든 통계적, 구조적 정보를 제공하는 뇌(Brain) 역할을 합니다.
  3. 융합: 운영체제의 파일 할당 테이블(FAT/i-node), 데이터 레이크의 하이브 메타스토어(Hive Metastore) 및 데이터 카탈로그 플랫폼과 철학적으로 동일한 메타 관리 체계입니다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

시스템 카탈로그 (System Catalog)는 흔히 데이터 사전 (Data Dictionary)이라고도 불리며, DBMS 스스로가 시스템을 운영하고 통제하기 위해 구축해 놓은 특별한 데이터베이스입니다. 일반 사용자가 급여나 재고 데이터를 저장한다면, 시스템 카탈로그는 "이 시스템에 어떤 테이블이 있고, 컬럼의 길이는 얼마이며, 누가 접근 권한을 가졌는가?"라는 구조적 정보(메타데이터)를 저장합니다. 만약 시스템 카탈로그가 없다면, 사용자가 SELECT * FROM EMP를 요청했을 때 DBMS는 EMP라는 테이블이 존재하는지, 사용자가 읽기 권한이 있는지 판단할 기준점이 없습니다. 나아가, 데이터 건수나 인덱스 상태 같은 통계 정보가 없으므로 옵티마이저가 풀 스캔을 할지 인덱스를 탈지 비용을 계산(Cost-Based Optimization)할 수도 없습니다. 즉, 시스템 카탈로그는 DBMS가 단순한 파일 보관함을 넘어 스스로 생각하고 최적화하는 '지능형 시스템'이 되게 하는 핵심 중추입니다.

이 그림은 일반 사용자 데이터와 시스템 카탈로그 데이터 간의 논리적 분리를 보여줍니다.

┌───────────────── DBMS Engine ──────────────────┐
│                                                │
│  [사용자 질의] SELECT * FROM Employee;         │
│           ↓                                    │
│  [ 질의 파서 / 옵티마이저 ] ──(메타데이터 참조)──┐ │
│           ↓                                  ↓ │
│  [ 사용자 데이터베이스 ]              [ 시스템 카탈로그 ]│
│  - Employee Table                   - SYSTABLES  │
│  - Order Table                      - SYSCOLUMNS │
│  - Product Table                    - SYSINDEXES │
│  (실제 비즈니스 데이터)               (메타 & 통계 정보)│
└────────────────────────────────────────────────┘

이 도식의 핵심은 모든 사용자 질의 처리가 반드시 우측의 시스템 카탈로그 조회를 거쳐야만 좌측의 실제 데이터에 접근할 수 있다는 점입니다. 따라서 카탈로그 영역에 I/O 병목이 생기면 시스템 전체의 성능이 마비됩니다. 실무에서는 카탈로그 접근 속도를 극대화하기 위해 이를 메모리에 상주시키는 '딕셔너리 캐시(Dictionary Cache)' 계층을 반드시 운영합니다.

📢 섹션 요약 비유: 도서관에 있는 수만 권의 진짜 책(사용자 데이터)을 찾기 위해, 책의 위치와 대출 가능 여부를 꼼꼼하게 기록해 둔 '도서 검색용 인덱스 카드함(시스템 카탈로그)'과 같습니다.

Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)

시스템 카탈로그 자체도 릴레이션(테이블) 형태로 구성되며, DBMS 내부 메커니즘에 의해 자동으로 갱신됩니다.

구성 요소역할내부 동작/특징대표적 저장 정보비유
Data Dictionary핵심 구조 정의객체의 스키마, 타입, 제약조건 저장 (읽기 전용 뷰 제공)테이블명, 컬럼, 뷰 정의설계 도면
Data Directory물리 위치 매핑데이터 사전의 정보를 물리적 파일 구조와 연결OS 파일 포인터창고 약도
통계 정보 (Statistics)쿼리 최적화 지원옵티마이저의 비용 기반(CBO) 계산을 위한 수치 데이터행 건수, 인덱스 깊이, 분포도상품 재고표
Dictionary Cache카탈로그 성능 가속디스크 기반의 카탈로그를 메모리(SGA)에 캐싱하여 병목 해소파싱 단계의 LRU 캐시안내 데스크 메모

DDL(Data Definition Language)이 실행될 때 시스템 카탈로그가 갱신되는 상태 전이 흐름은 다음과 같습니다.

1. [DBA의 명령] CREATE TABLE New_Emp (id INT, name VARCHAR);
        ↓
2. [DBMS 엔진 수신] 문법 검증 및 물리적 스토리지 블록 할당 수행
        ↓
3. [카탈로그 업데이트 (자동)] 
   - SYSTABLES 에 'New_Emp' 레코드 1행 삽입
   - SYSCOLUMNS 에 'id', 'name' 레코드 2행 삽입
   - SYSAUTH 에 소유자 권한 부여 이력 삽입
        ↓
4. [캐시 동기화] 메모리의 Dictionary Cache 무효화(Invalidation) 및 최신화
        ↓
5. [완료] 이후부터 일반 사용자가 New_Emp 테이블 SELECT 가능

이 흐름의 핵심은 사용자가 직접 시스템 카탈로그를 갱신(INSERT/UPDATE)할 수 없다는 점입니다. 시스템 카탈로그는 DBMS만이 DDL 명령문을 해석하여 스스로 갱신합니다. 만약 일반 사용자가 카탈로그 데이터를 직접 수정할 수 있다면, 테이블의 논리적 정의와 디스크의 물리적 형태가 어긋나 데이터베이스 전체가 붕괴(Corruption)됩니다. 따라서 시스템 카탈로그는 오직 SELECT만을 허용하는 동적 성능 뷰(예: Oracle의 USER_, ALL_, DBA_ 뷰) 형태로만 접근이 개방됩니다.

📢 섹션 요약 비유: 뇌(DBMS)가 자신의 몸(데이터베이스)의 상태를 기억하는 '자아 인식 스토리지'입니다. 몸무게가 늘면 뇌의 인식이 자동으로 갱신될 뿐, 손으로 뇌세포를 직접 찔러 정보를 조작할 수는 없습니다.

Ⅲ. 융합 비교 및 다각도 분석 (Comparison & Synergy)

메타데이터를 관리하는 두 축인 시스템 카탈로그와 일반 데이터 파일, 그리고 데이터 사전과 데이터 디렉터리를 비교합니다.

항목시스템 카탈로그 (데이터 사전)데이터 디렉터리 (Data Directory)판단 및 접근 권한
저장 내용스키마 명세, 제약조건, 통계, 권한 등 논리적 메타데이터데이터가 저장된 물리적 블록과 실린더 포인터 등 물리적 제어 정보추상화 수준 차이
접근 주체DBA 및 일반 사용자 (시스템 제공 뷰를 통해 SELECT 가능)오직 시스템(DBMS 내부 엔진)만이 접근 가능접근 통제 경계
목적파싱, 구문 검증, 옵티마이저 최적화 계획 수립 보조실행 엔진이 실제 디스크 I/O를 수행하기 위한 라우팅사용되는 실행 단계
변경 시점DDL (CREATE, ALTER) 실행 시 및 통계 수집(Analyze) 시디스크 할당 갱신 및 파일 조각화 변경 시트리거 시점

이 매트릭스는 메타데이터조차 논리적 영역(사전)과 물리적 영역(디렉터리)으로 나뉜다는 것을 보여줍니다. DBA는 시스템 카탈로그 뷰를 쿼리하여 테이블 통계가 낡았는지 확인할 수 있지만, 데이터 디렉터리에 직접 접근해 포인터를 조작할 수는 없습니다. 이 철저한 캡슐화가 DBMS의 무결성을 지키는 방어 기제입니다.

📢 섹션 요약 비유: 도서 검색용 컴퓨터(데이터 사전)는 누구나 검색할 수 있지만, 사서만 볼 수 있는 도서관 지하 서고의 비밀 열쇠 보관함(데이터 디렉터리)은 철저히 접근이 차단된 것과 같습니다.

Ⅳ. 실무 적용 및 기술사적 판단 (Strategy & Decision)

실무에서 시스템 카탈로그의 관리 상태는 쿼리 성능(옵티마이징)과 직결되는 가장 중요한 DBA의 관리 대상입니다.

  1. 통계 정보 갱신(Analyze/Gather Stats) 시나리오: 대량의 데이터 배치 작업(Bulk Insert)이 일어난 후, 카탈로그의 통계 정보(행 건수, 분포도 등)가 갱신되지 않으면 옵티마이저는 과거의 작은 테이블로 착각하여 풀 스캔 계획을 세웁니다. 실무에서는 야간에 주기적으로 DBMS 통계 수집 잡(Job)을 돌려 카탈로그를 최신화해야 악성 쿼리(Bad Plan)를 막을 수 있습니다.
  2. 딕셔너리 캐시 경합 (Row Cache Lock): 트래픽이 폭주하는 피크 시간에 DDL(테이블 변경 등)을 수행하면 시스템 카탈로그가 락(Lock)에 걸립니다. 이 카탈로그를 읽어야만 일반 DML(SELECT)도 파싱할 수 있으므로, 카탈로그 락은 순식간에 서비스 전체의 행(Hang) 장애로 전파됩니다.
  3. 안티패턴 (의미 없는 동의어 반복): 데이터 표준화 없이 카탈로그에 무의미한 메타데이터(수천 개의 테스트 뷰, 더미 인덱스)를 방치하면, 딕셔너리 캐시를 소진시켜 시스템 파싱 성능이 심각하게 저하됩니다.

아래 트리는 옵티마이저가 쿼리를 파싱할 때 카탈로그를 어떻게 참조하는지 보여주는 의사결정 흐름입니다.

[쿼리 요청] SELECT * FROM Users WHERE age > 20;
   ↓
[1. 카탈로그 검증] (Dictionary Cache 스캔)
   ├─> Users 테이블 존재? (O) / 권한 있음? (O)
   ↓
[2. 카탈로그 통계 확보]
   ├─> age 인덱스 존재 여부 파악
   └─> 테이블 총 레코드 수 및 age > 20의 분포도(Selectivity) 추출
   ↓
[3. 실행 계획 산출]
   ├─> 분포도가 10% 미만 ──> 인덱스 스캔 플랜 채택
   └─> 분포도가 50% 이상 ──> 테이블 풀 스캔 플랜 채택

이 흐름의 핵심은 비용 기반 옵티마이저(CBO)의 지능은 전적으로 시스템 카탈로그의 통계 데이터 정확도에 의존한다는 점입니다. 카탈로그 통계가 거짓말을 하면 옵티마이저는 최악의 결정을 내립니다. "Garbage In, Garbage Out"의 원칙이 여기에도 적용됩니다.

📢 섹션 요약 비유: 내비게이션(옵티마이저)이 아무리 똑똑해도 지도 데이터베이스(시스템 카탈로그)에 새로 생긴 고속도로가 업데이트되어 있지 않으면, 구불구불한 국도로만 길을 안내하는 것과 같습니다.

Ⅴ. 기대효과 및 결론 (Future & Standard)

안정적인 시스템 카탈로그 운영은 쿼리 최적화의 토대이자 전사 데이터 거버넌스의 시작점입니다.

정량적 효과정성적 효과
캐시 힛(Cache Hit) 최적화를 통한 하드 파싱 지연 90% 이상 억제데이터 객체와 구조에 대한 완벽한 자가 추적 및 무결성 확보
정확한 통계 기반 실행 계획으로 CPU/디스크 자원 낭비 최소화데이터 거버넌스(Data Governance) 구축을 위한 원천 정보 제공

미래의 아키텍처, 특히 데이터 레이크하우스(Data Lakehouse)와 데이터 메시(Data Mesh) 환경에서는 단일 DBMS의 카탈로그를 넘어, 전사적 데이터 자산을 횡단으로 검색하고 관리하는 '글로벌 데이터 카탈로그(예: AWS Glue, Allan, Amundsen)' 플랫폼으로 진화하고 있습니다. 이는 닫힌 시스템 안의 데이터 사전을 열린 지식 그래프망으로 확장시키는 거대한 흐름입니다.

📢 섹션 요약 비유: 단일 부서의 연락망(시스템 카탈로그)을 넘어서, 글로벌 기업 전체의 모든 직원과 업무를 검색할 수 있는 거대한 전사 포털 인트라넷(데이터 카탈로그 플랫폼)으로 진화하고 있습니다.


📌 관련 개념 맵 (Knowledge Graph)

  • 메타데이터 (Metadata) (시스템 카탈로그가 저장하는 데이터의 본질)
  • 옵티마이저 (Optimizer) (카탈로그의 통계 정보를 먹고 자라며 쿼리 실행 계획을 세우는 핵심 엔진)
  • 데이터 독립성 (카탈로그를 통한 매핑 계층화로 보장되는 아키텍처 특성)
  • 하드 파싱 (Hard Parsing) (카탈로그를 조회하여 구문 분석과 계획을 새로 수립하는 고비용 작업)
  • 데이터 거버넌스 (전사적 데이터 자산 통제를 위해 카탈로그 메타데이터를 활용하는 관리 체계)

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

  1. 서점에 수많은 책이 있을 때, 책 제목과 작가, 꽂혀 있는 위치를 전부 적어둔 '도서 검색기'가 바로 시스템 카탈로그예요.
  2. 우리가 컴퓨터(데이터베이스)에게 "사과에 대한 책 찾아줘"라고 하면, 컴퓨터는 제일 먼저 이 검색기를 보고 책이 1층에 있는지 2층에 있는지 찾아낸답니다.
  3. 이 검색기가 없다면 컴퓨터는 서점의 모든 책을 1페이지부터 끝까지 전부 다 넘겨봐야 해서 시간이 엄청 오래 걸릴 거예요!