728x90
1. 데이터베이스, 딕셔너리 뷰와 동적 뷰란 무엇인가?
딕셔너리 뷰(Dictionary View)는 데이터베이스 내의 테이블, 컬럼, 제약 조건 등 객체에 대한 메타데이터를 조회하는 뷰입니다. 데이터베이스 시스템이 내부적으로 관리하는 정보들을 사용자가 쉽게 이해하고 접근할 수 있도록 제공합니다.
동적 뷰(Dynamic View)는 실시간으로 변경되는 데이터를 기반으로 생성되는 뷰입니다. 뷰를 조회할 때마다 실제 테이블의 최신 데이터를 반영하여 보여주므로, 항상 최신 상태의 정보를 얻을 수 있습니다.
2. 동작 원리 및 구조
딕셔너리 뷰
- 메타데이터 저장: 데이터베이스 시스템은 테이블, 컬럼, 인덱스, 사용자 등 모든 객체에 대한 정보를 시스템 카탈로그(System Catalog) 또는 데이터 딕셔너리(Data Dictionary)라는 별도의 공간에 저장합니다.
- 뷰 생성: 이 시스템 카탈로그에 저장된 정보를 조회하기 위해 시스템 뷰가 미리 정의되어 있습니다.
ALL_TABLES,USER_COLUMNS,DBA_CONSTRAINTS등이 대표적인 예시입니다. - 사용자 조회: 사용자는 SQL 쿼리를 통해 이러한 시스템 뷰를 조회하여 데이터베이스 객체 정보를 얻습니다.
동적 뷰
- 기본 테이블 참조: 동적 뷰는 하나 이상의 기본 테이블을 직접 참조합니다.
- 쿼리 실행 시점: 뷰를 조회(SELECT)하는 시점에, 뷰 정의에 포함된 SQL 쿼리가 즉시 실행됩니다.
- 실시간 데이터 반영: 실행된 쿼리는 기본 테이블의 가장 최신 데이터를 가져와 뷰의 결과로 반환합니다. 따라서 뷰는 항상 현재 시점의 데이터를 보여줍니다.
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 |
댓글