DB 4. View & System catalogue
데이터베이스 KOCW
View
- derived relation / virtual relation
- SQL 문으로 정의됨, 보통 CREATE VIEW AS SELECT
- System catalogue(metadata)에 view도 저장됨
- view로 또다른 view를 정의할 수 있음
- relation의 데이터가 갱신되면 view의 데이터도 갱신될 수 있음. dynamic window
- snapshot은 특성 시점의 relation을 저장하는 것이기때문에 view와 다름
- view를 생성할때 WITH CHECK OPTION 이라는 옵션을 주면 view의 정의에 위배되는 update, delete, insert는 reject된다.(view의 데이터 무결성 보장)
- view의 갱신 : 논리적으로 타당한 갱신이면 가능, base relation의 constraint를 만족하는 것
- 일부 속성을 가지는 view의 갱신 : △
- 여러 relation을 join한 view의 갱신 : X
- 집단함수를 포함한 view 의 갱신 : X
view의 장점
- view 는 데이터의 독립성을 제공한다.
- 예를들어 기존의 relation이 쪼개지더라도 쪼개진 relation으로 기존의 relation을 복원할 수 있다면 view를 통해 정의하면된다. 따라서 기존질의(응용 프로그램)을 수정할 필요성이 줄어든다.
- view 는 보안 기능을 제공(relation의 일부만을 보여줘서)
- Access control 에는 static(eg. 특정 속성 자체에 대한 접근권한), dynamic(eg. 특정 속성의 특정 범위의 값) 이 있는데 view를 통해 모두 사용 가능
- 동등한 relation을 여러가지 형태로 보여줌
- 복잡한 쿼리를 간단하게 표현가능, 가독성이 뛰어나짐
System catalogue
- metadata / data dictionary / system table 이라고 불림
- system catalogue도 relation으로 저장됨
- relation, attribute, 사용자, 권한 등에 대해 각각 relation으로 저장됨
- 어떤 사용자도 system catalogue에 대한 갱신은 할 수 없음(시스템만 가능)
System catalogue의 활용
- syntax check
- relation, attribute가 실제로 존재하는지, attribute의 type이 올바르게 활용되었는지
- 사용자가 권한에 맞는 요청을 하였는지
- Index를 활용할 수 있는지 확인
- 활용할 수 있는 index가 여러개일때 어떤 index를 활용할지
- Selectivity가 낮은 index를 사용하는 것이 바람직함
- 과거의 query의 일부 정보도 System catalogue에 저장됨, 이러한 정보에는 domain cardinality에 대한 정보도 있어 domain cardinality가 높은 것을 골라 간접적으로 prediction 할 수 있음
System catalogue에 유지되는 통계정보
- 사용자마다
- 인덱스마다
- 인덱스된 속성(키 속성, 비 키 속성)
- 클러스터링 인덱스, 비 클러스터링 인덱스 여부
- 밀집/희소 인덱스 여부
- 인덱스의 높이
- 1단계 인덱스의 블록 수
System catalogue의 통계정보
- metadata의 update overhead가 커서 batch처리함(Realtime x)
- update statistics 명령어를 사용하면 수동으로 갱신 가능(Unix 의 sync명령어와 유사)
- metadata의 relation이 RDBMS마다 상이해서 표준 view를 만듦(information schema)
- 사용자가 information schema view, Transact-SQL문 및 함수, System stored procedure(여러 SQL을 하나의 SQL처럼 실행, 편의성을 위해 시스템에서 정의된 함수) 를 사용해 system talbe에 저장된 정보를 검색할 수 있다.