SQL

Oracle 딕셔너리 뷰와 동적 뷰

class="song" 2026. 1. 13.
728x90

1. 데이터베이스, 딕셔너리 뷰와 동적 뷰란 무엇인가?

딕셔너리 뷰(Dictionary View)는 데이터베이스 내의 테이블, 컬럼, 제약 조건 등 객체에 대한 메타데이터를 조회하는 뷰입니다. 데이터베이스 시스템이 내부적으로 관리하는 정보들을 사용자가 쉽게 이해하고 접근할 수 있도록 제공합니다.

동적 뷰(Dynamic View)실시간으로 변경되는 데이터를 기반으로 생성되는 뷰입니다. 뷰를 조회할 때마다 실제 테이블의 최신 데이터를 반영하여 보여주므로, 항상 최신 상태의 정보를 얻을 수 있습니다.


2. 동작 원리 및 구조

딕셔너리 뷰

  1. 메타데이터 저장: 데이터베이스 시스템은 테이블, 컬럼, 인덱스, 사용자 등 모든 객체에 대한 정보를 시스템 카탈로그(System Catalog) 또는 데이터 딕셔너리(Data Dictionary)라는 별도의 공간에 저장합니다.
  2. 뷰 생성: 이 시스템 카탈로그에 저장된 정보를 조회하기 위해 시스템 뷰가 미리 정의되어 있습니다. ALL_TABLES, USER_COLUMNS, DBA_CONSTRAINTS 등이 대표적인 예시입니다.
  3. 사용자 조회: 사용자는 SQL 쿼리를 통해 이러한 시스템 뷰를 조회하여 데이터베이스 객체 정보를 얻습니다.

동적 뷰

  1. 기본 테이블 참조: 동적 뷰는 하나 이상의 기본 테이블을 직접 참조합니다.
  2. 쿼리 실행 시점: 뷰를 조회(SELECT)하는 시점에, 뷰 정의에 포함된 SQL 쿼리가 즉시 실행됩니다.
  3. 실시간 데이터 반영: 실행된 쿼리는 기본 테이블의 가장 최신 데이터를 가져와 뷰의 결과로 반환합니다. 따라서 뷰는 항상 현재 시점의 데이터를 보여줍니다.

3. 주요 특징 (Deep Dive)

딕셔너리 뷰

  • 정보 제공: 테이블 이름, 컬럼 이름, 데이터 타입, 제약 조건 (Primary Key, Foreign Key, Not Null 등), 인덱스 정보, 뷰 정의, 사용자 권한 등 광범위한 메타데이터를 제공합니다.
  • 시스템 관리: 데이터베이스 관리자(DBA)나 개발자가 데이터베이스 구조를 이해하고 관리하는 데 필수적입니다.
  • 표준화: 대부분의 상용 데이터베이스 시스템에서 유사한 형태의 시스템 뷰를 제공하여 표준적인 접근 방식을 취합니다. (예: Oracle, MySQL, PostgreSQL 등)
  • 정적 정보: 뷰 자체는 정적인 객체이며, 해당 뷰를 조회할 때마다 데이터베이스의 구조 정보를 읽어오는 방식입니다.
  • 성능: 메타데이터 조회는 일반적으로 성능 부하가 크지 않습니다.

동적 뷰

  • 데이터 최신성: 항상 가장 최신 상태의 데이터를 제공합니다.
  • 복잡성 추상화: 여러 테이블을 조인하거나 복잡한 조건을 적용한 쿼리를 단순화하여 사용자에게 제공할 수 있습니다.
  • 데이터 접근 제어: 특정 사용자에게 필요한 컬럼이나 행만 보여주도록 제한하여 보안을 강화할 수 있습니다.
  • 가상 테이블: 실제 데이터를 저장하지 않는 가상적인 테이블처럼 동작합니다.
  • 성능 고려: 뷰 정의에 포함된 쿼리의 성능이 뷰 조회 성능에 직접적인 영향을 미칩니다. 복잡한 쿼리는 성능 저하를 유발할 수 있습니다.
  • 수정 가능성: 일반적으로 동적 뷰는 SELECT가 주 목적이며, 일부 데이터베이스에서는 특정 조건을 만족하는 뷰에 대해 INSERT, UPDATE, DELETE가 가능하지만 제약이 따릅니다.

4. 핵심 요약

구분 딕셔너리 뷰 동적 뷰
주요 목적 데이터베이스 객체 메타데이터 조회 실시간 데이터 조회 및 쿼리 단순화/보안
데이터 반영 방식 구조 정보 조회 (정적) 실시간 최신 데이터 반영 (동적)
주요 사용자 DBA, 개발자 일반 사용자, 개발자
저장 방식 데이터베이스 시스템 카탈로그/데이터 딕셔너리 사용 실제 데이터를 저장하지 않음 (쿼리 기반)
예시 ALL_TABLES, USER_COLUMNS (Oracle) CREATE VIEW emp_dept AS SELECT e.ename, d.dname FROM emp e JOIN dept d ON e.deptno = d.deptno;
성능 영향 메타데이터 조회 부하 (낮음) 뷰 정의 쿼리 성능에 따라 달라짐 (높을 수 있음)
728x90

'SQL' 카테고리의 다른 글

Database 기초  (0) 2026.01.29
oracle 딕셔너리 뷰 종류  (1) 2026.01.13
SQL Null 관련 함수  (0) 2025.08.21
SQL기초 프로시저(Stored Procedure)  (2) 2023.12.06
SQL기초 (view)  (1) 2023.12.05

댓글