💡 핵심 인사이트
데이터베이스 안에는 사용자가 저장하는 '일반 데이터'만 있는 것이 아닙니다.
테이블의 구조, 사용자의 권한, 인덱스 정보 등 데이터베이스 자체를 관리하기 위한 '데이터에 대한 데이터(메타데이터)'가 모여 있는 특별한 시스템 창고를 데이터 딕셔너리(시스템 카탈로그)라고 부릅니다.
Ⅰ. 데이터 딕셔너리 (Data Dictionary)의 개념
데이터 딕셔너리, 혹은 시스템 카탈로그(System Catalog)라고도 불리는 이것은 DBMS 스스로가 자신의 살림살이를 파악하기 위해 관리하는 특수한 형태의 테이블 집합입니다.
- 저장 내용 (메타데이터, Metadata):
- 어떤 테이블들이 존재하는가? (테이블 이름)
- 각 테이블의 컬럼 이름, 데이터 타입(VARCHAR, INT), 제약조건(PK, FK)은 무엇인가?
- 어떤 사용자가 생성되어 있고, 그 사용자는 어떤 테이블을 볼 권한이 있는가?
- 옵티마이저가 길을 찾기 위한 '통계 정보(행의 개수, 인덱스 유무)' 등.
일반 사용자가 엑셀 파일(사용자 데이터)을 만든다면, 데이터 딕셔너리는 파일명, 만든 날짜, 용량, 읽기 전용 여부 등을 기록해 두는 '파일 속성창'과 같습니다.
Ⅱ. 카탈로그 매니저 (Catalog Manager)의 역할
카탈로그 매니저는 이 데이터 딕셔너리에 접근하여 정보를 읽어오거나 수정하는 DBMS 내부의 관리 모듈입니다.
- 파서(Parser) 지원: 사용자가
SELECT * FROM EMP라는 쿼리를 날리면, 파서는 카탈로그 매니저에게 "EMP 테이블 진짜 있어? 권한은 돼?"라고 물어보며 의미 분석(Semantic Check)을 수행합니다. - 옵티마이저(Optimizer) 지원: 옵티마이저가 실행 계획을 짤 때, 카탈로그 매니저를 통해 테이블의 데이터 건수와 인덱스 구조 등의 '통계 정보'를 가져와서 비용(Cost)을 계산합니다.
- DDL 실행 시 업데이트: 사용자가
CREATE TABLE이나ALTER TABLE명령으로 구조를 바꾸면, 카탈로그 매니저가 즉각 데이터 딕셔너리 테이블에 이 변경 사항을 기록합니다.
Ⅲ. 일반 사용자의 접근 (시스템 뷰)
데이터 딕셔너리의 원본 시스템 테이블은 DB의 심장이므로 사용자가 직접 INSERT나 UPDATE 명령을 내려서 건드리면 DB 전체가 붕괴됩니다. (DBMS만이 스스로 수정할 수 있습니다.)
대신, 사용자가 조회할 수 있도록 DBMS는 읽기 전용 뷰(View) 형태로 딕셔너리 정보를 제공합니다.
- Oracle 예시:
USER_TABLES: 내가 만든 테이블 목록만 보여줌.ALL_TABLES: 내게 권한이 있는 모든 테이블을 보여줌.DBA_TABLES: DB 최고 관리자(DBA) 권한으로 DB 내의 모든 테이블 정보를 봄.
- MySQL 예시:
information_schema데이터베이스 안에 있는 여러 테이블들.
📢 섹션 요약 비유: 데이터 딕셔너리는 도서관의 **'도서 검색용 컴퓨터(카탈로그)'**입니다. 실제 책(데이터)이 아니라, 그 책이 몇 층 몇 번 책장에 있는지, 대출 중인지, 연체자는 누구인지에 대한 정보(메타데이터)를 담고 있습니다. 카탈로그 매니저는 이 검색 컴퓨터를 관리하고 업데이트하는 도서관 사서입니다.