정보 처리/데이터베이스

기타 - 뷰(View)란

본클라쓰 2008. 12. 17. 08:58

 

뷰는 테이블과 동일하게 사용되는 개체로, 그냥 테이블로 생각해도 무방하다. 뷰의 장점은 여러 테이블에서 데이터를 조회할 때, 뷰를 만들어 놓으면 쿼리문을 쉽게 작성하여 조회할 수 있는 장점이 있다. 만약, 'user'라는 테이블 속성에 '이름, 나이, 성별, 주민등록번호, 주소, ...'이 있고, 'user' 테이블의 모든 정보를 확인할 필요가 없고 단지 '이름, 나이, 주소'만 확인하고자 한다면 '이름, 나이, 주소'만 표시하는 뷰를 생성하면 된다.

 

뷰는 기본적으로 읽기 전용으로 많이 사용하지만 뷰를 통해서 테이블을 수정할 수도 있다. 뷰를 통해 테이블을 수정하는 것은 바람직하지는 않지만 꼭 필요한 경우도 있을 수 있으니 알아두면 도움이 된다.

 

CREATE VIEW 뷰명

AS 쿼리문

 

예)

CREATE VIEW

USERINFO 

AS ( SELECT USERID, NAME, ADDR FROM USER );

 

 

 

뷰의 장점

 

1. 보안(Security)에 도움이 된다.

 

뷰를 통해 사용자가 접근할 수 있는 정보를 제한할 수 있다. 'user'라는 테이블에 사용자의 모든 정보가 저장되어 있다면 일반 사용자가 'user'라는 테이블에 접근하면 모든 정보를 확인할 수 있다. 하지만 뷰를 통해 접근할 수 있는 데이터를 제한한다면 일반사용자가 확인할 수 있는 정보는 제한이 되는 것이다.

 

2. 복잡한 쿼리를 단순화시켜 줄 수 있다.

 

여러 테이블을 조인하여 조회하는 경우 뷰를 사용하면 쿼리문이 간단해진다. 'user' 테이블과 'buy' 테이블을 조인하여 조회할 경우 판매실적에서 사용자의 기본정보를 확인하기 위해서는 두 테이블을 조인하여 'SELECT' 문을 작성해야 한다.

 

하지만 뷰를 사용하면 뷰 테이블만 조회하는 쿼리문으로 변경하여 작성하면 된다.

 

 

 

뷰의 종류

 

1. 표준 뷰

 

한 개 또는 그 이상의 테이블을 이용해서 만든 뷰를 표준 뷰라고 부른다. 가장 사용 빈도가 높은 뷰이다.

 

2. 분할 뷰(Pratitioned view)

 

한대 또는 여러 대의 서버에 있는 여러 테이블을 조인해서 하나의 테이블처럼 보이도록 하는 뷰로서, 로컬 분할 뷰(local partitioned view)와 분산형 분할 뷰(distributed partitioned view)로 나눌 수 있다.

 

3. 인덱싱된 뷰

 

뷰를 가상의 테이블이라고 부른다. 뷰의 실체는 SELECT 문이며 뷰를 호출하면 실시간으로 실제 테이블을 쿼리하게 된다. 하지만 예외가 인덱싱된 뷰(Indexed View)이다. 인덱싱된 뷰에는 인덱스를 구성하기 위한 실제 데이터를 가지고 있다. 그런데 뷰의 단점 중 하나는 대량의 데이터를 조인할 경우 실시간으로 쿼리가 수행되는 것으므로 서버에 큰 부하를 준다는 것이다. 그래서 부하를 줄이기 위한 방편으로 뷰에 실제 데이터를 가져다 놓은 것이 바로 인덱싱된 뷰이다. 인덱싱 뷰는 대량의 데이터를 테이블에서 조인하지 않고 직접 뷰에서 가져오므로 성능향상을 가져올 수 있다. 물론, 인덱싱 뷰는 벼롣의 공간이 필요하다는 단점이 있다. 또한, 실제 테이블의 데이터가 수정될 경우에 인덱싱된 뷰의 데이터도 수정되어야 하기 때문에 데이터의 변경이 잦다면 오히려 시스템의 성능에 나쁜 영향을 줄 수 있다. 따라서 인덱싱된 뷰는 조회는 자주 있지만, 수정은 가끔있는 테이블에 구성하는 것이 바람직한다.