CS/DB

[DB] 시스템 카탈로그

겜도리도리 2022. 6. 9. 11:45
반응형

시스템 카탈로그 개요

데이터베이스의 객체(사용자, 릴레이션, 뷰, 인덱스, 권한 등)와 구조들에 대한 모든 데이터를 포함한다.

메타데이터라고도 한다. 메타데이터는 데이터에 대한 데이터라는 의미이다.

시스템 카탈로그는 사용자 및 질의 최적화 모듈 등 DBMS 자신의 구성요소에 의해서 결정된다.

시스템 카탈로그는 관계 DBMS마다 표준화되어 있지 않아서 관계 DBMS마다 서로 다른 형태로 시스템 카탈로그 기능을 제공한다.

시스템 카탈로그는 데이터 사전(data dictionary) 또는 시스템 테이블이라고도 부른다.

 

질의 처리에서의 시스템 카탈로그

SELECT 문이 문법적으로 정확한가를 검사한다.

SELECT 문에서 참조하는 EMPLOYEE 릴레이션이 데이터베이스에 존재하는가를 검사한다.

EMPLOYEE 릴레이션에 SELECT절에 열거된 애트리뷰트와 WHERE절에서 조건에 사용된 애트리뷰트가 존재하는지 확인한다.

SALARY 애트리뷰트가 수식에 사용되었으므로 이 애트리뷰트의 데이터 타입이 숫자형(정수형이나 실수형)인가를 검사하고, TITLE이 문자열과 비교되었으므로 이 애트리뷰트의 데이터 타입이 문자형인가 등을 검사한다.

질의를 입력한 사용자가 EMPLOYEE 릴레이션의 EMPNAME, SALARY 애트리뷰트를 검색할 수 있는 권한이 있는가를 확인한다.

TITLE 애트리뷰트와 DNO 애트리뷰트에 인덱스가 정의되어 있는지 확인한다.

 

두 애트리뷰트에 각각 인덱스가 존재한다고 가정하자. DBMS가 두 인덱스 중에서 조건을 만족하는 튜플 수가 적은 것을 선택하기 위해서는 관계 데이터베이스 시스템에 데이터베이스 외에 추가로 정보를 유지해야 한다.

한 릴레이션의 전체 튜플 수와 그 릴레이션에 정의된 각 인덱스에 존재하는 상이한 값들의 개수를 유지한다면 어느 인덱스를 사용하는 것이 유리한가를 예상할 수 있다.

EMPLOYEE의 전체 튜플 수는 7, TITLE 애트리뷰트에는 사원, 대리, 과장, 부장, 사장의 다섯 가지 값, DNO에는 1, 2, 3의 세 가지 값들이 존재한다고 가정하자.

TITLE 애트리뷰트에 정의된 인덱스가 DNO에 정의된 인덱스보다 대상 튜플들을 더 좁혀주므로 TITLE 애트리뷰트에 정의된 인덱스를 사용하는 것이 유리하다.

 

질의 최적화

DBMS가 질의를 수행하는 여러 가지 방법들 중에서 가장 비용이 적게 드는 방법을 찾는 과정이다.

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

사용자가 질의 최적화 모듈을 깊이 있게 이해할 필요는 없지만 질의 최적화 모듈이 정확한 수행 방법을 결정하기 위해서는 릴레이션에 대한 다양한 통계 정보가 정확히 유지돼야 한다는 것을 알고 있는 것이 바람직하다.

 

관계 DBMS의 시스템 카탈로그

사용자 릴레이션과 마찬가지 형태로 저장되기 때문에 사용자 릴레이션에 적용되는 회복 기법과 동시성 제어 기법을 동일하게 사용할 수 있다.

시스템 카탈로그는 사용자 릴레이션처럼 SELECT문을 사용하여 내용을 검색할 수 있다.

시스템 카탈로그에는 릴레이션, 애트리뷰트, 인덱스, 사용자, 권한 등 각 유형마다 별도의 릴레이션이 유지된다.

EMPLOYEE 릴레이션과 DEPARTMENT 릴레이션에 대해서 시스템 카탈로그에 어떤 정보들이 유지되는가를 이해하기 쉽도록 시스템 카탈로그를 매우 단순화하여 설명한다.

릴레이션에 대한 정보를 유지하는 릴레이션의 이름이 SYS_RELATION, 애트리뷰트에 대한 정보를 유지하는 릴레이션의 이름이 SYS_ATTRIBUTE라고 가정하자. 릴레이션은 다음과 같다.

 

SYS_RELATION과 SYS_ATTRIBUTE

 

시스템 카탈로그의 갱신

어떤 사용자도 시스템 카탈로그를 직접 갱신할 수 없다.

즉, DELETE, UPDATE 또는 INSERT문을 사용하여 시스템 카탈로그를 변경할 수 없다.

EMPLOYEE 릴레이션의 소유자인 KIM이 EMPLOYEE 릴레이션에서 MANAGER 애트리뷰트를 삭제하기 위해서는 다음과 같은 질의어를 사용해야 한다.

시스템 카탈로그에 대해 DELETE문을 사용하면 DBMS가 거절한다.

 

시스템 카탈로그에 유지되는 통계 정보

릴레이션 : 튜플의 크기, 튜플 수, 각 블록의 채우기 비율, 블록킹 인수, 릴레이션의 크기(블록 수)

뷰 : 이름과 정의

애트리뷰트 : 애트리뷰트의 데이터 타입과 크기, 애트리뷰트 내의 상이한 값들의 수, 애트리뷰트 값의 범위, 선택률(조건을 만족하는 튜플 수 / 전체 튜플 수)

사용자 : 접근할 수 있는 릴레이션과 권한

인덱스 : 인덱스된 애트리뷰트(키 애트리뷰트 또는 비 키 애트리뷰트), 클러스터링된 인덱스 / 비 클러스터링된 인덱스 여부, 밀집 / 희소 인덱스 여부, 인덱스의 높이, 1단계 인덱스의 블록 수

반응형

'CS > DB' 카테고리의 다른 글

[DB] 회복  (0) 2022.06.15
[DB] 동시성 제어  (0) 2022.06.14
[DB] 뷰  (0) 2022.06.07
[DB] 정규화와 역정규화  (0) 2022.05.28
[DB] 릴레이션 분해  (0) 2022.05.26