본문

160105P(화)

ORACLE - Chapter 8 뷰와 시스템 카탈로그

 

뷰(view)

다른 릴레이션으로부터 유도된 릴레이션(derived relation)

여러 사용자가 여러가지 방식으로 데이터를 볼 수 있다.

 

가상 릴레이션(virtual relation)

실제로 투플을 갖지 않은 릴레이션

디스크에 저장되어 있지 않지만 사용자가 질의할 수 있다.

 

ANSI/SPARC 3단계 아키텍처의 외부 뷰와는 다르다.

관계DB 시스템에서 보안메커니즘으로서 복잡한 질의를 간단하게 표현하는 수단이며 데이터의 독립성 또한 높아진다.

 

System Catalog

시스템 내의 객체(기본 릴레이션, 뷰, 인덱스, 사용자, 접근권한 등)에 관한 정보 포함

데이터를 효율적으로 활용하는데 크게 도움이 된다.

 

뷰의 정의

뷰의 이름과 BASE 릴레이션의 이름이 같을 수 없다.

SELECT문에 ORDER BY사용 금지 

 

CREATE VIEW 뷰이름 [(애트리뷰트(들))]

AS SELECT문

[WITH CHECK OPTION];

 

뷰를 사용한 데이터 접근

1. 시스템 카탈로그로부터 뷰의 정의, SELECT문을 검색한다.

2. 기본 릴레이션에 대한 뷰의 접근 권한 검사

3. 뷰에 대한 질의를 기본 릴레이션에 대한 동등한 질의로 변환

 

뷰의 삭제

DROP VIEW 뷰이름

 

뷰의 장점

1. 복잡한 질의를 간단하게 표현할 수 있게 된다.

자주 사용되는 복잡한 질의를 뷰로 정의하여 질의를 간단하게 표현할 수 있다.

 

2. 데이터의 무결성을 보장하는데 활용

기본 릴레이션의 내용이 수정되면 뷰를 정의하는 WHERE절의 기준에 맞지 않게되고 뷰의 내용에서 사라진다.

WITH CHECK OPTION과 함께 뷰를 정의하면 뷰를 통해 수행되는 INSERT문과 UPDATE문이 뷰가 선택할 수 없는 투플들을 생성할 수 없도록 보장한다.

따라서 삽입, 수정되는 데이터에 대해서 무결성 제약조건과 데이터 유효성 검사가 시행될 수 있도록 한다.

 

3. 데이터 독립성을 제공

DB의 구조가 바뀌어도 기존의 응용프로그램, 즉 질의를 다시 작성할 필요를 줄인다. 뷰의 정의만 바꾸면 되기 때문이다.

 

4. 데이터 보안기능을 제공

기본 릴레이션에 직접 접근할 수 있는 권한을 부여하지 않고 뷰를 통해 데이터를 접근하도록 하기 때문에 보안 메커니즘으로 사용 가능하다.

 

5. 동일 데이터에 대해 여러가지 뷰를 제공

여러 사용자 그룹이 각자 특정한 기준에 따라 데이터를 접근 할 수 있도록 한다.

 

뷰의 단점

1. 모든 뷰의 갱신이 가능하지는 않다.

2. 기본 릴레이션보다 성능이 저하된다.

시스템 카탈로그의 뷰 정의 -> 기본 릴레이션에 대한 질의로 변환

 

뷰의 갱신

뷰에 대한 INSERT문은 기본 릴레이션에 대한 INSERT문으로 변환되어 수행된다.

 

갱신 불가능 경우

두 개의 릴레이션을 조인하여 정의된 뷰의 갱신

평균 등의 계산된 값의 갱신. 어떻게 반영해야 할지 DB 시스팀이 결정불가

 

1. 릴레이션의 기본키가 포함되지 않은 뷰

엔티티 무결성 제약조건 위반

 

2. 뷰에 포함되지 않은 애트리뷰트에 대해 NOT NULL이 지정되어 있을 때

뷰로 갱신할 때 NULL이 기본적으로 삽입

 

3. 집단함수가 포함된 뷰

집단함수

SUM, AVG, MAX, MIN, COUNT, DISTINCT, GROUP BY, HAVING 등

기준을 어떻게 잡아야 할지 모른다.

 

4. 두 릴레이션의 조인으로 정의된 뷰

 

관계 DBMS의 시스템 카탈로그

시스템 카탈로그는 데이터베이스 객체(릴레이션, 뷰, 인덱스, 권한 등)와 구조들에 관한 모든 데이터를 포함

메타 데이터(데이터에 의한 데이터), 데이터 사전(data dictionary), 시스템 테이블 이라고도 불린다.

 

질의 최적화(query optimization)를 위해서 질의 최적화 모듈이 정확한 결정을 내릴 수 있도록 시스템 카탈로그에 다양한 정보를 유지한다.

 

시스템 카탈로그의 갱신은 DBMS에 부하가 적게 걸릴 때 수행 된다. 투플 수가 바뀔 때마다 반영되는것이 아니다.

 

사용자의 검색은 가능하나 어떠한 경우에도 갱신은 불가능하다.

 

오라클의 시스템 카탈로그

데이터 사전이라고 부르며 시스템 테이블스페이스에 저장된다.

 

오라클 DB 테이블 = 사용자 테이블 + 데이터 사전

데이터 사전 = 기본 테이블 + 데이터 사전 뷰

 

기본 테이블

데이터베이스에 대한 설명

CREATE DATABASE 명령 수행시에 자동생성

 

DBA_XXX 뷰

데이터베이스 내의 모든 객체들에 관한 정보를 포함

전체 DB에 관한 전역적인 정보

DB관리자가 질의하는 용도

SELECT ANY TABLE 권한을 허가받으면 사용자도 질의 가능

 

ALL_XXX 뷰

사용자가 접근 할 수 있는 객체들에 관한 정보

어떤 사용자의 DB에 관한 전체적인 관점

접근할 수 있는 객체과 사용자가 소유한 객체들에 관한 정보

 

USER_XXX 뷰

현재의 사용자가 소유하고 있는 객체들에 관한 정보

사용자의 개인적 환경

일반적인 사용자들이 가장 자주 접근하는 뷰

 

 

 

 

ANALYZE

테이블에 대한 통계 정보를 갱신

 

ANALYZE INDEX EMDNO_IDX

COMPUTE STATISTICS;

 

ANALYZE 객체_유형 객체_이름

연산 STATISTICS;

 

질의 최적화 모듈이 정확하게 동작하려면 테이블과 인덱스에 관한 통계를 현재상태로 유지해야 하므로 주기적으로 ANALYZE 작업을 수행해야 한다.

ex)

테이블의 재생성

인덱스를 추가, 혹은 재생성

다량의 데이터를 일괄 작업으로 처리

 

 

'낡은 서랍장 > ORACLE' 카테고리의 다른 글

160111P(월)  (0) 2016.01.11
160110P(일)  (0) 2016.01.10
160108P(금)  (0) 2016.01.08
151220P(일)  (0) 2016.01.02
151227P(일)  (0) 2015.12.27

공유

댓글