DB 4. View & System catalogue

skh951225·2023년 4월 4일
0

데이터베이스

목록 보기
4/7

데이터베이스 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에 저장된 정보를 검색할 수 있다.

0개의 댓글