Database

[Oracle] 뷰(View) 핵심 정리 (특징/장점/주의사항)

천방지축 개발노트 2020. 9. 21. 19:09
뷰(View)의 핵심 포인트 10가지

사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블(Virtual Table)이다. 뷰는 저장장치 내에 물리적으로 존재하지 않지만 사용자에게 있는 것처럼 간주된다.

 

  1. 데이터 저장 여부 : Table은 실제 데이터를 저장하지만, View는 단지 뷰 정의(SELECT 문)만을 가지고 있다.
  2. 조회 대상으로 사용 : 뷰는 일반 테이블과 동일한 방식으로 SELECT 등 조회 대상으로 사용할 수 있다.
  3. 조회 결과를 테이블로 복제 : 뷰는 SELECT 결과를 제공하므로, 필요하면 그 결과를 CREATE TABLE AS SELECT(CTAS)로 물리 테이블로 복제해 사용할 수 있다(당연한 말이지만, 생성 시점의 SELECT 결과가 테이블 저장되므로 이후 변경은 자동 반영되지 않음).
  4. 뷰의 중첩 생성 : 이미 생성된 뷰를 기반으로 또 다른 뷰를 CREATE 할 수 있다.
  5. 리라이트(Rewrite)·가상 테이블·독립성 : 쿼리에 View가 포함되면 DBMS는 뷰 정의(SELECT 문)를 참조해 내부적으로 원본 테이블에 대한 쿼리처럼 변환(리라이트)한 뒤 실행한다. 그래서 View는 실제 데이터를 가지고 있지는 않지만 테이블처럼 조회 대상이 되므로 가상 테이블(Virtual Table) 이라고도 불리는 것이다. 이처럼 뷰는 테이블 구조 변경의 영향을 애플리케이션에서 일정 부분 분리할 수 있어 논리적 독립성을 제공한다.
  6. (Oracle 기준) 뷰의 정의는 변경할 수 없다(ALTER VIEW문을 사용할 수 없음). 필요하다면 CREATE OR REPLACE VIEW로 재정의하거나, 필요 시 DROP VIEW 후 재생성한다.
  7. 기본 테이블(또는 기반 뷰)의 스키마가 변경되거나 삭제되면 이를 참조하는 뷰는 유효하지 않게 되거나 조회 시 오류가 발생할 수 있으므로 의존성을 함께 점검해야 한다.
  8. 보안(노출 범위 제한) : 뷰를 통해서만 데이터에 접근하도록 설계하면 특정 컬럼/행을 노출에서 제외해 민감 데이터를 보호할 수 있다.
  9. 활용(캡슐화·재사용) : 뷰는 임시 분석이나 데이터 보정, 처리 과정 테스트뿐 아니라 복잡한 조인/집계 로직을 캡슐화해 재사용하는 용도로도 자주 활용된다.
  10. 성능 주의 : 뷰는 결과를 저장하지 않으므로, 복잡한 조인/집계가 포함된 뷰는 조회할 때마다 동일한 비용이 발생할 수 있다(필요 시 인덱스 설계 등 검토).

 

뷰를 사용하면서 얻을 수 있는 장점은 아래 표와 같다.

뷰의 장점 설명
독립성 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 된다.
편리성 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작설할 수 있다. 또한 해당 형태의 SQL문을 자주 사용할 때 뷰를 이용하면 편리하게 사용할 수 있다.
보안성 직원의 급여정보와 같이 숨기고 싶은 정보가 존재한다면, 뷰를 생성할 때 해당 칼럼을 빼고 생성함으로써 사용자에게 정보를 감출 수 있다.

 

 

View 생성 / 삭제 SQL
  • View 생성 : CREATE VIEW 뷰이름 AS 뷰로 만들 SELECT문;
  • View 재정의(수정) : CREATE OR REPLACE VIEW 뷰이름 AS SELECT ... ;
  • View 제거 : DROP VIEW 뷰이름;

※ Oracle의 DROP VIEW에는 RESTRICT/CASCADE 옵션이 없다.

※ 참고로 일부 DBMS에서는 RESTRICT(참조 중이면 삭제 취소), CASCADE(의존 객체까지 함께 삭제) 옵션을 제공한다.

반응형